summaryrefslogtreecommitdiff
path: root/libs/cairo-1.16.0/doc/public/xml
diff options
context:
space:
mode:
Diffstat (limited to 'libs/cairo-1.16.0/doc/public/xml')
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.0.xml272
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.10.xml77
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.12.xml86
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.14.xml19
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.16.xml37
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.2.xml78
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.4.xml50
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.6.xml43
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-1.8.xml52
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-TBD.xml7
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-deprecated.xml7
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/api-index-full.xml578
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-device.xml585
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-font-face.xml358
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-font-options.xml677
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-ft.xml408
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-image.xml425
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-matrix.xml574
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-paths.xml1125
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-pattern.xml1966
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-pdf.xml595
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-png.xml309
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-ps.xml548
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-quartz-fonts.xml129
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-quartz.xml183
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-raster-source.xml550
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-recording.xml204
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-region.xml793
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-scaled-font.xml925
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-script.xml349
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-skia.xml32
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-status.xml366
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-surface-observer.xml233
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-surface.xml1525
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-svg.xml425
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-tag.xml353
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-text.xml1090
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-transforms.xml389
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-types.xml161
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-user-fonts.xml626
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-version.xml278
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-win32-fonts.xml323
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-win32.xml306
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-xcb.xml474
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-xlib-xrender.xml162
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo-xlib.xml507
-rw-r--r--libs/cairo-1.16.0/doc/public/xml/cairo.xml2538
47 files changed, 21797 insertions, 0 deletions
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.0.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.0.xml
new file mode 100644
index 0000000..a94e58d
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.0.xml
@@ -0,0 +1,272 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.0">
+<indexdiv><title>A</title>
+<indexentry><primaryie linkends="cairo-antialias-t"><link linkend="cairo-antialias-t">cairo_antialias_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-append-path"><link linkend="cairo-append-path">cairo_append_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-arc"><link linkend="cairo-arc">cairo_arc</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-arc-negative"><link linkend="cairo-arc-negative">cairo_arc_negative</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>B</title>
+<indexentry><primaryie linkends="cairo-bool-t"><link linkend="cairo-bool-t">cairo_bool_t</link>, typedef in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>C</title>
+<indexentry><primaryie linkends="cairo-clip"><link linkend="cairo-clip">cairo_clip</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-clip-preserve"><link linkend="cairo-clip-preserve">cairo_clip_preserve</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-close-path"><link linkend="cairo-close-path">cairo_close_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-content-t"><link linkend="cairo-content-t">cairo_content_t</link>, enum in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-page"><link linkend="cairo-copy-page">cairo_copy_page</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-path"><link linkend="cairo-copy-path">cairo_copy_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-path-flat"><link linkend="cairo-copy-path-flat">cairo_copy_path_flat</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-create"><link linkend="cairo-create">cairo_create</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-curve-to"><link linkend="cairo-curve-to">cairo_curve_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>D</title>
+<indexentry><primaryie linkends="cairo-debug-reset-static-data"><link linkend="cairo-debug-reset-static-data">cairo_debug_reset_static_data</link>, function in <link linkend="cairo-Error-handling">Error handling</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-destroy"><link linkend="cairo-destroy">cairo_destroy</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-destroy-func-t"><link linkend="cairo-destroy-func-t">cairo_destroy_func_t</link>, user_function in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-to-user"><link linkend="cairo-device-to-user">cairo_device_to_user</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-to-user-distance"><link linkend="cairo-device-to-user-distance">cairo_device_to_user_distance</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>E</title>
+<indexentry><primaryie linkends="cairo-extend-t"><link linkend="cairo-extend-t">cairo_extend_t</link>, enum in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-fill"><link linkend="cairo-fill">cairo_fill</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-fill-extents"><link linkend="cairo-fill-extents">cairo_fill_extents</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-fill-preserve"><link linkend="cairo-fill-preserve">cairo_fill_preserve</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-fill-rule-t"><link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-filter-t"><link linkend="cairo-filter-t">cairo_filter_t</link>, enum in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-extents"><link linkend="cairo-font-extents">cairo_font_extents</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-extents-t"><link linkend="cairo-font-extents-t">cairo_font_extents_t</link>, struct in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-destroy"><link linkend="cairo-font-face-destroy">cairo_font_face_destroy</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-get-user-data"><link linkend="cairo-font-face-get-user-data">cairo_font_face_get_user_data</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-reference"><link linkend="cairo-font-face-reference">cairo_font_face_reference</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-set-user-data"><link linkend="cairo-font-face-set-user-data">cairo_font_face_set_user_data</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-status"><link linkend="cairo-font-face-status">cairo_font_face_status</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-t"><link linkend="cairo-font-face-t">cairo_font_face_t</link>, typedef in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-copy"><link linkend="cairo-font-options-copy">cairo_font_options_copy</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-create"><link linkend="cairo-font-options-create">cairo_font_options_create</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-destroy"><link linkend="cairo-font-options-destroy">cairo_font_options_destroy</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-equal"><link linkend="cairo-font-options-equal">cairo_font_options_equal</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-antialias"><link linkend="cairo-font-options-get-antialias">cairo_font_options_get_antialias</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-hint-metrics"><link linkend="cairo-font-options-get-hint-metrics">cairo_font_options_get_hint_metrics</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-hint-style"><link linkend="cairo-font-options-get-hint-style">cairo_font_options_get_hint_style</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-subpixel-order"><link linkend="cairo-font-options-get-subpixel-order">cairo_font_options_get_subpixel_order</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-hash"><link linkend="cairo-font-options-hash">cairo_font_options_hash</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-merge"><link linkend="cairo-font-options-merge">cairo_font_options_merge</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-antialias"><link linkend="cairo-font-options-set-antialias">cairo_font_options_set_antialias</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-hint-metrics"><link linkend="cairo-font-options-set-hint-metrics">cairo_font_options_set_hint_metrics</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-hint-style"><link linkend="cairo-font-options-set-hint-style">cairo_font_options_set_hint_style</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-subpixel-order"><link linkend="cairo-font-options-set-subpixel-order">cairo_font_options_set_subpixel_order</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-status"><link linkend="cairo-font-options-status">cairo_font_options_status</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-t"><link linkend="cairo-font-options-t">cairo_font_options_t</link>, typedef in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-slant-t"><link linkend="cairo-font-slant-t">cairo_font_slant_t</link>, enum in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-weight-t"><link linkend="cairo-font-weight-t">cairo_font_weight_t</link>, enum in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-format-t"><link linkend="cairo-format-t">cairo_format_t</link>, enum in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-create-for-ft-face"><link linkend="cairo-ft-font-face-create-for-ft-face">cairo_ft_font_face_create_for_ft_face</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-create-for-pattern"><link linkend="cairo-ft-font-face-create-for-pattern">cairo_ft_font_face_create_for_pattern</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-options-substitute"><link linkend="cairo-ft-font-options-substitute">cairo_ft_font_options_substitute</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-scaled-font-lock-face"><link linkend="cairo-ft-scaled-font-lock-face">cairo_ft_scaled_font_lock_face</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-scaled-font-unlock-face"><link linkend="cairo-ft-scaled-font-unlock-face">cairo_ft_scaled_font_unlock_face</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>G</title>
+<indexentry><primaryie linkends="cairo-get-antialias"><link linkend="cairo-get-antialias">cairo_get_antialias</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-current-point"><link linkend="cairo-get-current-point">cairo_get_current_point</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-fill-rule"><link linkend="cairo-get-fill-rule">cairo_get_fill_rule</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-font-face"><link linkend="cairo-get-font-face">cairo_get_font_face</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-font-matrix"><link linkend="cairo-get-font-matrix">cairo_get_font_matrix</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-font-options"><link linkend="cairo-get-font-options">cairo_get_font_options</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-line-cap"><link linkend="cairo-get-line-cap">cairo_get_line_cap</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-line-join"><link linkend="cairo-get-line-join">cairo_get_line_join</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-line-width"><link linkend="cairo-get-line-width">cairo_get_line_width</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-matrix"><link linkend="cairo-get-matrix">cairo_get_matrix</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-miter-limit"><link linkend="cairo-get-miter-limit">cairo_get_miter_limit</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-operator"><link linkend="cairo-get-operator">cairo_get_operator</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-source"><link linkend="cairo-get-source">cairo_get_source</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-target"><link linkend="cairo-get-target">cairo_get_target</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-tolerance"><link linkend="cairo-get-tolerance">cairo_get_tolerance</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-extents"><link linkend="cairo-glyph-extents">cairo_glyph_extents</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-path"><link linkend="cairo-glyph-path">cairo_glyph_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-t"><link linkend="cairo-glyph-t">cairo_glyph_t</link>, struct in <link linkend="cairo-text">text</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="CAIRO-HAS-FT-FONT:CAPS"><link linkend="CAIRO-HAS-FT-FONT:CAPS">CAIRO_HAS_FT_FONT</link>, macro in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-PNG-FUNCTIONS:CAPS"><link linkend="CAIRO-HAS-PNG-FUNCTIONS:CAPS">CAIRO_HAS_PNG_FUNCTIONS</link>, macro in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-WIN32-SURFACE:CAPS"><link linkend="CAIRO-HAS-WIN32-SURFACE:CAPS">CAIRO_HAS_WIN32_SURFACE</link>, macro in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XLIB-SURFACE:CAPS"><link linkend="CAIRO-HAS-XLIB-SURFACE:CAPS">CAIRO_HAS_XLIB_SURFACE</link>, macro in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-hint-metrics-t"><link linkend="cairo-hint-metrics-t">cairo_hint_metrics_t</link>, enum in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-hint-style-t"><link linkend="cairo-hint-style-t">cairo_hint_style_t</link>, enum in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>I</title>
+<indexentry><primaryie linkends="cairo-identity-matrix"><link linkend="cairo-identity-matrix">cairo_identity_matrix</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create"><link linkend="cairo-image-surface-create">cairo_image_surface_create</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create-for-data"><link linkend="cairo-image-surface-create-for-data">cairo_image_surface_create_for_data</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create-from-png"><link linkend="cairo-image-surface-create-from-png">cairo_image_surface_create_from_png</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create-from-png-stream"><link linkend="cairo-image-surface-create-from-png-stream">cairo_image_surface_create_from_png_stream</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-height"><link linkend="cairo-image-surface-get-height">cairo_image_surface_get_height</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-width"><link linkend="cairo-image-surface-get-width">cairo_image_surface_get_width</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-in-fill"><link linkend="cairo-in-fill">cairo_in_fill</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-in-stroke"><link linkend="cairo-in-stroke">cairo_in_stroke</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>L</title>
+<indexentry><primaryie linkends="cairo-line-cap-t"><link linkend="cairo-line-cap-t">cairo_line_cap_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-line-join-t"><link linkend="cairo-line-join-t">cairo_line_join_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-line-to"><link linkend="cairo-line-to">cairo_line_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="cairo-mask"><link linkend="cairo-mask">cairo_mask</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mask-surface"><link linkend="cairo-mask-surface">cairo_mask_surface</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init"><link linkend="cairo-matrix-init">cairo_matrix_init</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-identity"><link linkend="cairo-matrix-init-identity">cairo_matrix_init_identity</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-rotate"><link linkend="cairo-matrix-init-rotate">cairo_matrix_init_rotate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-scale"><link linkend="cairo-matrix-init-scale">cairo_matrix_init_scale</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-translate"><link linkend="cairo-matrix-init-translate">cairo_matrix_init_translate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-invert"><link linkend="cairo-matrix-invert">cairo_matrix_invert</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-multiply"><link linkend="cairo-matrix-multiply">cairo_matrix_multiply</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-rotate"><link linkend="cairo-matrix-rotate">cairo_matrix_rotate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-scale"><link linkend="cairo-matrix-scale">cairo_matrix_scale</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-t"><link linkend="cairo-matrix-t">cairo_matrix_t</link>, struct in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-transform-distance"><link linkend="cairo-matrix-transform-distance">cairo_matrix_transform_distance</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-transform-point"><link linkend="cairo-matrix-transform-point">cairo_matrix_transform_point</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-translate"><link linkend="cairo-matrix-translate">cairo_matrix_translate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-move-to"><link linkend="cairo-move-to">cairo_move_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>N</title>
+<indexentry><primaryie linkends="cairo-new-path"><link linkend="cairo-new-path">cairo_new_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>O</title>
+<indexentry><primaryie linkends="cairo-operator-t"><link linkend="cairo-operator-t">cairo_operator_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-paint"><link linkend="cairo-paint">cairo_paint</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-paint-with-alpha"><link linkend="cairo-paint-with-alpha">cairo_paint_with_alpha</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-data-t"><link linkend="cairo-path-data-t">cairo_path_data_t</link>, union in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-data-type-t"><link linkend="cairo-path-data-type-t">cairo_path_data_type_t</link>, enum in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-destroy"><link linkend="cairo-path-destroy">cairo_path_destroy</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-t"><link linkend="cairo-path-t">cairo_path_t</link>, struct in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-add-color-stop-rgb"><link linkend="cairo-pattern-add-color-stop-rgb">cairo_pattern_add_color_stop_rgb</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-add-color-stop-rgba"><link linkend="cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-for-surface"><link linkend="cairo-pattern-create-for-surface">cairo_pattern_create_for_surface</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-linear"><link linkend="cairo-pattern-create-linear">cairo_pattern_create_linear</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-radial"><link linkend="cairo-pattern-create-radial">cairo_pattern_create_radial</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-rgb"><link linkend="cairo-pattern-create-rgb">cairo_pattern_create_rgb</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-rgba"><link linkend="cairo-pattern-create-rgba">cairo_pattern_create_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-destroy"><link linkend="cairo-pattern-destroy">cairo_pattern_destroy</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-extend"><link linkend="cairo-pattern-get-extend">cairo_pattern_get_extend</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-filter"><link linkend="cairo-pattern-get-filter">cairo_pattern_get_filter</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-matrix"><link linkend="cairo-pattern-get-matrix">cairo_pattern_get_matrix</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-reference"><link linkend="cairo-pattern-reference">cairo_pattern_reference</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-extend"><link linkend="cairo-pattern-set-extend">cairo_pattern_set_extend</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-filter"><link linkend="cairo-pattern-set-filter">cairo_pattern_set_filter</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-matrix"><link linkend="cairo-pattern-set-matrix">cairo_pattern_set_matrix</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-status"><link linkend="cairo-pattern-status">cairo_pattern_status</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-t"><link linkend="cairo-pattern-t">cairo_pattern_t</link>, typedef in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>R</title>
+<indexentry><primaryie linkends="cairo-read-func-t"><link linkend="cairo-read-func-t">cairo_read_func_t</link>, user_function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle"><link linkend="cairo-rectangle">cairo_rectangle</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-reference"><link linkend="cairo-reference">cairo_reference</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rel-curve-to"><link linkend="cairo-rel-curve-to">cairo_rel_curve_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rel-line-to"><link linkend="cairo-rel-line-to">cairo_rel_line_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rel-move-to"><link linkend="cairo-rel-move-to">cairo_rel_move_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-reset-clip"><link linkend="cairo-reset-clip">cairo_reset_clip</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-restore"><link linkend="cairo-restore">cairo_restore</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rotate"><link linkend="cairo-rotate">cairo_rotate</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-save"><link linkend="cairo-save">cairo_save</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scale"><link linkend="cairo-scale">cairo_scale</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-create"><link linkend="cairo-scaled-font-create">cairo_scaled_font_create</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-destroy"><link linkend="cairo-scaled-font-destroy">cairo_scaled_font_destroy</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-extents"><link linkend="cairo-scaled-font-extents">cairo_scaled_font_extents</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-glyph-extents"><link linkend="cairo-scaled-font-glyph-extents">cairo_scaled_font_glyph_extents</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-reference"><link linkend="cairo-scaled-font-reference">cairo_scaled_font_reference</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-status"><link linkend="cairo-scaled-font-status">cairo_scaled_font_status</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-t"><link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link>, typedef in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-select-font-face"><link linkend="cairo-select-font-face">cairo_select_font_face</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-antialias"><link linkend="cairo-set-antialias">cairo_set_antialias</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-dash"><link linkend="cairo-set-dash">cairo_set_dash</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-fill-rule"><link linkend="cairo-set-fill-rule">cairo_set_fill_rule</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-face"><link linkend="cairo-set-font-face">cairo_set_font_face</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-matrix"><link linkend="cairo-set-font-matrix">cairo_set_font_matrix</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-options"><link linkend="cairo-set-font-options">cairo_set_font_options</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-size"><link linkend="cairo-set-font-size">cairo_set_font_size</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-line-cap"><link linkend="cairo-set-line-cap">cairo_set_line_cap</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-line-join"><link linkend="cairo-set-line-join">cairo_set_line_join</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-line-width"><link linkend="cairo-set-line-width">cairo_set_line_width</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-matrix"><link linkend="cairo-set-matrix">cairo_set_matrix</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-miter-limit"><link linkend="cairo-set-miter-limit">cairo_set_miter_limit</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-operator"><link linkend="cairo-set-operator">cairo_set_operator</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source"><link linkend="cairo-set-source">cairo_set_source</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source-rgb"><link linkend="cairo-set-source-rgb">cairo_set_source_rgb</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source-rgba"><link linkend="cairo-set-source-rgba">cairo_set_source_rgba</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source-surface"><link linkend="cairo-set-source-surface">cairo_set_source_surface</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-tolerance"><link linkend="cairo-set-tolerance">cairo_set_tolerance</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-glyphs"><link linkend="cairo-show-glyphs">cairo_show_glyphs</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-page"><link linkend="cairo-show-page">cairo_show_page</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-text"><link linkend="cairo-show-text">cairo_show_text</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-status"><link linkend="cairo-status">cairo_status</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-status-t"><link linkend="cairo-status-t">cairo_status_t</link>, enum in <link linkend="cairo-Error-handling">Error handling</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-status-to-string"><link linkend="cairo-status-to-string">cairo_status_to_string</link>, function in <link linkend="cairo-Error-handling">Error handling</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-stroke"><link linkend="cairo-stroke">cairo_stroke</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-stroke-extents"><link linkend="cairo-stroke-extents">cairo_stroke_extents</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-stroke-preserve"><link linkend="cairo-stroke-preserve">cairo_stroke_preserve</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-subpixel-order-t"><link linkend="cairo-subpixel-order-t">cairo_subpixel_order_t</link>, enum in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-similar"><link linkend="cairo-surface-create-similar">cairo_surface_create_similar</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-destroy"><link linkend="cairo-surface-destroy">cairo_surface_destroy</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-finish"><link linkend="cairo-surface-finish">cairo_surface_finish</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-flush"><link linkend="cairo-surface-flush">cairo_surface_flush</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-font-options"><link linkend="cairo-surface-get-font-options">cairo_surface_get_font_options</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-user-data"><link linkend="cairo-surface-get-user-data">cairo_surface_get_user_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-mark-dirty"><link linkend="cairo-surface-mark-dirty">cairo_surface_mark_dirty</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-mark-dirty-rectangle"><link linkend="cairo-surface-mark-dirty-rectangle">cairo_surface_mark_dirty_rectangle</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-reference"><link linkend="cairo-surface-reference">cairo_surface_reference</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-device-offset"><link linkend="cairo-surface-set-device-offset">cairo_surface_set_device_offset</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-user-data"><link linkend="cairo-surface-set-user-data">cairo_surface_set_user_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-status"><link linkend="cairo-surface-status">cairo_surface_status</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-t"><link linkend="cairo-surface-t">cairo_surface_t</link>, typedef in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-write-to-png"><link linkend="cairo-surface-write-to-png">cairo_surface_write_to_png</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-write-to-png-stream"><link linkend="cairo-surface-write-to-png-stream">cairo_surface_write_to_png_stream</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>T</title>
+<indexentry><primaryie linkends="cairo-t"><link linkend="cairo-t">cairo_t</link>, typedef in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-extents"><link linkend="cairo-text-extents">cairo_text_extents</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-extents-t"><link linkend="cairo-text-extents-t">cairo_text_extents_t</link>, struct in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-path"><link linkend="cairo-text-path">cairo_text_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-transform"><link linkend="cairo-transform">cairo_transform</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-translate"><link linkend="cairo-translate">cairo_translate</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>U</title>
+<indexentry><primaryie linkends="cairo-user-data-key-t"><link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link>, struct in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-to-device"><link linkend="cairo-user-to-device">cairo_user_to_device</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-to-device-distance"><link linkend="cairo-user-to-device-distance">cairo_user_to_device_distance</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>V</title>
+<indexentry><primaryie linkends="CAIRO-VERSION:CAPS"><link linkend="CAIRO-VERSION:CAPS">CAIRO_VERSION</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-version"><link linkend="cairo-version">cairo_version</link>, function in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-ENCODE:CAPS"><link linkend="CAIRO-VERSION-ENCODE:CAPS">CAIRO_VERSION_ENCODE</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-MAJOR:CAPS"><link linkend="CAIRO-VERSION-MAJOR:CAPS">CAIRO_VERSION_MAJOR</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-MICRO:CAPS"><link linkend="CAIRO-VERSION-MICRO:CAPS">CAIRO_VERSION_MICRO</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-MINOR:CAPS"><link linkend="CAIRO-VERSION-MINOR:CAPS">CAIRO_VERSION_MINOR</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-version-string"><link linkend="cairo-version-string">cairo_version_string</link>, function in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>W</title>
+<indexentry><primaryie linkends="cairo-win32-font-face-create-for-logfontw"><link linkend="cairo-win32-font-face-create-for-logfontw">cairo_win32_font_face_create_for_logfontw</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-done-font"><link linkend="cairo-win32-scaled-font-done-font">cairo_win32_scaled_font_done_font</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-get-metrics-factor"><link linkend="cairo-win32-scaled-font-get-metrics-factor">cairo_win32_scaled_font_get_metrics_factor</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-select-font"><link linkend="cairo-win32-scaled-font-select-font">cairo_win32_scaled_font_select_font</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create"><link linkend="cairo-win32-surface-create">cairo_win32_surface_create</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-write-func-t"><link linkend="cairo-write-func-t">cairo_write_func_t</link>, user_function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>X</title>
+<indexentry><primaryie linkends="cairo-xlib-surface-create"><link linkend="cairo-xlib-surface-create">cairo_xlib_surface_create</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-create-for-bitmap"><link linkend="cairo-xlib-surface-create-for-bitmap">cairo_xlib_surface_create_for_bitmap</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-create-with-xrender-format"><link linkend="cairo-xlib-surface-create-with-xrender-format">cairo_xlib_surface_create_with_xrender_format</link>, function in <link linkend="cairo-XLib-XRender-Backend">XLib-XRender Backend</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-set-drawable"><link linkend="cairo-xlib-surface-set-drawable">cairo_xlib_surface_set_drawable</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-set-size"><link linkend="cairo-xlib-surface-set-size">cairo_xlib_surface_set_size</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.10.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.10.xml
new file mode 100644
index 0000000..039c9d9
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.10.xml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.10">
+<indexdiv><title>D</title>
+<indexentry><primaryie linkends="cairo-device-acquire"><link linkend="cairo-device-acquire">cairo_device_acquire</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-destroy"><link linkend="cairo-device-destroy">cairo_device_destroy</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-finish"><link linkend="cairo-device-finish">cairo_device_finish</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-flush"><link linkend="cairo-device-flush">cairo_device_flush</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-get-reference-count"><link linkend="cairo-device-get-reference-count">cairo_device_get_reference_count</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-get-type"><link linkend="cairo-device-get-type">cairo_device_get_type</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-get-user-data"><link linkend="cairo-device-get-user-data">cairo_device_get_user_data</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-reference"><link linkend="cairo-device-reference">cairo_device_reference</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-release"><link linkend="cairo-device-release">cairo_device_release</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-set-user-data"><link linkend="cairo-device-set-user-data">cairo_device_set_user_data</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-status"><link linkend="cairo-device-status">cairo_device_status</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-t"><link linkend="cairo-device-t">cairo_device_t</link>, typedef in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-type-t"><link linkend="cairo-device-type-t">cairo_device_type_t</link>, enum in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="CAIRO-HAS-FC-FONT:CAPS"><link linkend="CAIRO-HAS-FC-FONT:CAPS">CAIRO_HAS_FC_FONT</link>, macro in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-RECORDING-SURFACE:CAPS"><link linkend="CAIRO-HAS-RECORDING-SURFACE:CAPS">CAIRO_HAS_RECORDING_SURFACE</link>, macro in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>I</title>
+<indexentry><primaryie linkends="cairo-in-clip"><link linkend="cairo-in-clip">cairo_in_clip</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JP2:CAPS"><link linkend="CAIRO-MIME-TYPE-JP2:CAPS">CAIRO_MIME_TYPE_JP2</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JPEG:CAPS"><link linkend="CAIRO-MIME-TYPE-JPEG:CAPS">CAIRO_MIME_TYPE_JPEG</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-PNG:CAPS"><link linkend="CAIRO-MIME-TYPE-PNG:CAPS">CAIRO_MIME_TYPE_PNG</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-URI:CAPS"><link linkend="CAIRO-MIME-TYPE-URI:CAPS">CAIRO_MIME_TYPE_URI</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-pdf-get-versions"><link linkend="cairo-pdf-get-versions">cairo_pdf_get_versions</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-restrict-to-version"><link linkend="cairo-pdf-surface-restrict-to-version">cairo_pdf_surface_restrict_to_version</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-version-t"><link linkend="cairo-pdf-version-t">cairo_pdf_version_t</link>, enum in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-version-to-string"><link linkend="cairo-pdf-version-to-string">cairo_pdf_version_to_string</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>R</title>
+<indexentry><primaryie linkends="cairo-recording-surface-create"><link linkend="cairo-recording-surface-create">cairo_recording_surface_create</link>, function in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-recording-surface-ink-extents"><link linkend="cairo-recording-surface-ink-extents">cairo_recording_surface_ink_extents</link>, function in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-int-t"><link linkend="cairo-rectangle-int-t">cairo_rectangle_int_t</link>, struct in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-contains-point"><link linkend="cairo-region-contains-point">cairo_region_contains_point</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-contains-rectangle"><link linkend="cairo-region-contains-rectangle">cairo_region_contains_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-copy"><link linkend="cairo-region-copy">cairo_region_copy</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-create"><link linkend="cairo-region-create">cairo_region_create</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-create-rectangle"><link linkend="cairo-region-create-rectangle">cairo_region_create_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-create-rectangles"><link linkend="cairo-region-create-rectangles">cairo_region_create_rectangles</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-destroy"><link linkend="cairo-region-destroy">cairo_region_destroy</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-equal"><link linkend="cairo-region-equal">cairo_region_equal</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-get-extents"><link linkend="cairo-region-get-extents">cairo_region_get_extents</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-get-rectangle"><link linkend="cairo-region-get-rectangle">cairo_region_get_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-intersect"><link linkend="cairo-region-intersect">cairo_region_intersect</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-intersect-rectangle"><link linkend="cairo-region-intersect-rectangle">cairo_region_intersect_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-is-empty"><link linkend="cairo-region-is-empty">cairo_region_is_empty</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-num-rectangles"><link linkend="cairo-region-num-rectangles">cairo_region_num_rectangles</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-overlap-t"><link linkend="cairo-region-overlap-t">cairo_region_overlap_t</link>, enum in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-reference"><link linkend="cairo-region-reference">cairo_region_reference</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-status"><link linkend="cairo-region-status">cairo_region_status</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-subtract"><link linkend="cairo-region-subtract">cairo_region_subtract</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-subtract-rectangle"><link linkend="cairo-region-subtract-rectangle">cairo_region_subtract_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-t"><link linkend="cairo-region-t">cairo_region_t</link>, typedef in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-translate"><link linkend="cairo-region-translate">cairo_region_translate</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-union"><link linkend="cairo-region-union">cairo_region_union</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-union-rectangle"><link linkend="cairo-region-union-rectangle">cairo_region_union_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-xor"><link linkend="cairo-region-xor">cairo_region_xor</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-xor-rectangle"><link linkend="cairo-region-xor-rectangle">cairo_region_xor_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-surface-create-for-rectangle"><link linkend="cairo-surface-create-for-rectangle">cairo_surface_create_for_rectangle</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-device"><link linkend="cairo-surface-get-device">cairo_surface_get_device</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-mime-data"><link linkend="cairo-surface-get-mime-data">cairo_surface_get_mime_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-mime-data"><link linkend="cairo-surface-set-mime-data">cairo_surface_set_mime_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.12.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.12.xml
new file mode 100644
index 0000000..3ce4db6
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.12.xml
@@ -0,0 +1,86 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.12">
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-ft-font-face-get-synthesize"><link linkend="cairo-ft-font-face-get-synthesize">cairo_ft_font_face_get_synthesize</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-set-synthesize"><link linkend="cairo-ft-font-face-set-synthesize">cairo_ft_font_face_set_synthesize</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-unset-synthesize"><link linkend="cairo-ft-font-face-unset-synthesize">cairo_ft_font_face_unset_synthesize</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-synthesize-t"><link linkend="cairo-ft-synthesize-t">cairo_ft_synthesize_t</link>, enum in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="CAIRO-HAS-SCRIPT-SURFACE:CAPS"><link linkend="CAIRO-HAS-SCRIPT-SURFACE:CAPS">CAIRO_HAS_SCRIPT_SURFACE</link>, macro in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XCB-SURFACE:CAPS"><link linkend="CAIRO-HAS-XCB-SURFACE:CAPS">CAIRO_HAS_XCB_SURFACE</link>, macro in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="cairo-mesh-pattern-begin-patch"><link linkend="cairo-mesh-pattern-begin-patch">cairo_mesh_pattern_begin_patch</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-curve-to"><link linkend="cairo-mesh-pattern-curve-to">cairo_mesh_pattern_curve_to</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-end-patch"><link linkend="cairo-mesh-pattern-end-patch">cairo_mesh_pattern_end_patch</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-control-point"><link linkend="cairo-mesh-pattern-get-control-point">cairo_mesh_pattern_get_control_point</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-corner-color-rgba"><link linkend="cairo-mesh-pattern-get-corner-color-rgba">cairo_mesh_pattern_get_corner_color_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-patch-count"><link linkend="cairo-mesh-pattern-get-patch-count">cairo_mesh_pattern_get_patch_count</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-path"><link linkend="cairo-mesh-pattern-get-path">cairo_mesh_pattern_get_path</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-line-to"><link linkend="cairo-mesh-pattern-line-to">cairo_mesh_pattern_line_to</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-move-to"><link linkend="cairo-mesh-pattern-move-to">cairo_mesh_pattern_move_to</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-set-control-point"><link linkend="cairo-mesh-pattern-set-control-point">cairo_mesh_pattern_set_control_point</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-set-corner-color-rgb"><link linkend="cairo-mesh-pattern-set-corner-color-rgb">cairo_mesh_pattern_set_corner_color_rgb</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-set-corner-color-rgba"><link linkend="cairo-mesh-pattern-set-corner-color-rgba">cairo_mesh_pattern_set_corner_color_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS">CAIRO_MIME_TYPE_UNIQUE_ID</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-pattern-create-mesh"><link linkend="cairo-pattern-create-mesh">cairo_pattern_create_mesh</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-raster-source"><link linkend="cairo-pattern-create-raster-source">cairo_pattern_create_raster_source</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>R</title>
+<indexentry><primaryie linkends="cairo-raster-source-acquire-func-t"><link linkend="cairo-raster-source-acquire-func-t">cairo_raster_source_acquire_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-copy-func-t"><link linkend="cairo-raster-source-copy-func-t">cairo_raster_source_copy_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-finish-func-t"><link linkend="cairo-raster-source-finish-func-t">cairo_raster_source_finish_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-acquire"><link linkend="cairo-raster-source-pattern-get-acquire">cairo_raster_source_pattern_get_acquire</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-callback-data"><link linkend="cairo-raster-source-pattern-get-callback-data">cairo_raster_source_pattern_get_callback_data</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-copy"><link linkend="cairo-raster-source-pattern-get-copy">cairo_raster_source_pattern_get_copy</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-finish"><link linkend="cairo-raster-source-pattern-get-finish">cairo_raster_source_pattern_get_finish</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-snapshot"><link linkend="cairo-raster-source-pattern-get-snapshot">cairo_raster_source_pattern_get_snapshot</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-acquire"><link linkend="cairo-raster-source-pattern-set-acquire">cairo_raster_source_pattern_set_acquire</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-callback-data"><link linkend="cairo-raster-source-pattern-set-callback-data">cairo_raster_source_pattern_set_callback_data</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-copy"><link linkend="cairo-raster-source-pattern-set-copy">cairo_raster_source_pattern_set_copy</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-finish"><link linkend="cairo-raster-source-pattern-set-finish">cairo_raster_source_pattern_set_finish</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-snapshot"><link linkend="cairo-raster-source-pattern-set-snapshot">cairo_raster_source_pattern_set_snapshot</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-release-func-t"><link linkend="cairo-raster-source-release-func-t">cairo_raster_source_release_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-snapshot-func-t"><link linkend="cairo-raster-source-snapshot-func-t">cairo_raster_source_snapshot_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-recording-surface-get-extents"><link linkend="cairo-recording-surface-get-extents">cairo_recording_surface_get_extents</link>, function in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-script-create"><link linkend="cairo-script-create">cairo_script_create</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-create-for-stream"><link linkend="cairo-script-create-for-stream">cairo_script_create_for_stream</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-from-recording-surface"><link linkend="cairo-script-from-recording-surface">cairo_script_from_recording_surface</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-get-mode"><link linkend="cairo-script-get-mode">cairo_script_get_mode</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-mode-t"><link linkend="cairo-script-mode-t">cairo_script_mode_t</link>, enum in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-set-mode"><link linkend="cairo-script-set-mode">cairo_script_set_mode</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-surface-create"><link linkend="cairo-script-surface-create">cairo_script_surface_create</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-surface-create-for-target"><link linkend="cairo-script-surface-create-for-target">cairo_script_surface_create_for_target</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-write-comment"><link linkend="cairo-script-write-comment">cairo_script_write_comment</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-observer"><link linkend="cairo-surface-create-observer">cairo_surface_create_observer</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-similar-image"><link linkend="cairo-surface-create-similar-image">cairo_surface_create_similar_image</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-map-to-image"><link linkend="cairo-surface-map-to-image">cairo_surface_map_to_image</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-mode-t"><link linkend="cairo-surface-observer-mode-t">cairo_surface_observer_mode_t</link>, enum in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-supports-mime-type"><link linkend="cairo-surface-supports-mime-type">cairo_surface_supports_mime_type</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-unmap-image"><link linkend="cairo-surface-unmap-image">cairo_surface_unmap_image</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>X</title>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-cap-xrender-version"><link linkend="cairo-xcb-device-debug-cap-xrender-version">cairo_xcb_device_debug_cap_xrender_version</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-cap-xshm-version"><link linkend="cairo-xcb-device-debug-cap-xshm-version">cairo_xcb_device_debug_cap_xshm_version</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-get-precision"><link linkend="cairo-xcb-device-debug-get-precision">cairo_xcb_device_debug_get_precision</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-set-precision"><link linkend="cairo-xcb-device-debug-set-precision">cairo_xcb_device_debug_set_precision</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-get-connection"><link linkend="cairo-xcb-device-get-connection">cairo_xcb_device_get_connection</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-create"><link linkend="cairo-xcb-surface-create">cairo_xcb_surface_create</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-create-for-bitmap"><link linkend="cairo-xcb-surface-create-for-bitmap">cairo_xcb_surface_create_for_bitmap</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-create-with-xrender-format"><link linkend="cairo-xcb-surface-create-with-xrender-format">cairo_xcb_surface_create_with_xrender_format</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-set-drawable"><link linkend="cairo-xcb-surface-set-drawable">cairo_xcb_surface_set_drawable</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-set-size"><link linkend="cairo-xcb-surface-set-size">cairo_xcb_surface_set_size</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-device-debug-cap-xrender-version"><link linkend="cairo-xlib-device-debug-cap-xrender-version">cairo_xlib_device_debug_cap_xrender_version</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-device-debug-get-precision"><link linkend="cairo-xlib-device-debug-get-precision">cairo_xlib_device_debug_get_precision</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-device-debug-set-precision"><link linkend="cairo-xlib-device-debug-set-precision">cairo_xlib_device_debug_set_precision</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.14.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.14.xml
new file mode 100644
index 0000000..9b61670
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.14.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.14">
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JBIG2:CAPS"><link linkend="CAIRO-MIME-TYPE-JBIG2:CAPS">CAIRO_MIME_TYPE_JBIG2</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS">CAIRO_MIME_TYPE_JBIG2_GLOBAL</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS">CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-surface-get-device-scale"><link linkend="cairo-surface-get-device-scale">cairo_surface_get_device_scale</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-device-scale"><link linkend="cairo-surface-set-device-scale">cairo_surface_set_device_scale</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>W</title>
+<indexentry><primaryie linkends="cairo-win32-surface-create-with-format"><link linkend="cairo-win32-surface-create-with-format">cairo_win32_surface_create_with_format</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.16.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.16.xml
new file mode 100644
index 0000000..724a0da
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.16.xml
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.16">
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-font-options-get-variations"><link linkend="cairo-font-options-get-variations">cairo_font_options_get_variations</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-variations"><link linkend="cairo-font-options-set-variations">cairo_font_options_set_variations</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS">CAIRO_MIME_TYPE_CCITT_FAX</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS">CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-EPS:CAPS"><link linkend="CAIRO-MIME-TYPE-EPS:CAPS">CAIRO_MIME_TYPE_EPS</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS"><link linkend="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS">CAIRO_MIME_TYPE_EPS_PARAMS</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-pdf-metadata-t"><link linkend="cairo-pdf-metadata-t">cairo_pdf_metadata_t</link>, enum in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-outline-flags-t"><link linkend="cairo-pdf-outline-flags-t">cairo_pdf_outline_flags_t</link>, enum in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-PDF-OUTLINE-ROOT:CAPS"><link linkend="CAIRO-PDF-OUTLINE-ROOT:CAPS">CAIRO_PDF_OUTLINE_ROOT</link>, macro in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-add-outline"><link linkend="cairo-pdf-surface-add-outline">cairo_pdf_surface_add_outline</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-metadata"><link linkend="cairo-pdf-surface-set-metadata">cairo_pdf_surface_set_metadata</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-page-label"><link linkend="cairo-pdf-surface-set-page-label">cairo_pdf_surface_set_page_label</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-thumbnail-size"><link linkend="cairo-pdf-surface-set-thumbnail-size">cairo_pdf_surface_set_thumbnail_size</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-svg-surface-get-document-unit"><link linkend="cairo-svg-surface-get-document-unit">cairo_svg_surface_get_document_unit</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-set-document-unit"><link linkend="cairo-svg-surface-set-document-unit">cairo_svg_surface_set_document_unit</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-unit-t"><link linkend="cairo-svg-unit-t">cairo_svg_unit_t</link>, enum in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>T</title>
+<indexentry><primaryie linkends="cairo-tag-begin"><link linkend="cairo-tag-begin">cairo_tag_begin</link>, function in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-TAG-DEST:CAPS"><link linkend="CAIRO-TAG-DEST:CAPS">CAIRO_TAG_DEST</link>, macro in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-tag-end"><link linkend="cairo-tag-end">cairo_tag_end</link>, function in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-TAG-LINK:CAPS"><link linkend="CAIRO-TAG-LINK:CAPS">CAIRO_TAG_LINK</link>, macro in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.2.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.2.xml
new file mode 100644
index 0000000..144d870
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.2.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.2">
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-font-face-get-type"><link linkend="cairo-font-face-get-type">cairo_font_face_get_type</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-type-t"><link linkend="cairo-font-type-t">cairo_font_type_t</link>, enum in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>G</title>
+<indexentry><primaryie linkends="cairo-get-group-target"><link linkend="cairo-get-group-target">cairo_get_group_target</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="CAIRO-HAS-PDF-SURFACE:CAPS"><link linkend="CAIRO-HAS-PDF-SURFACE:CAPS">CAIRO_HAS_PDF_SURFACE</link>, macro in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-PS-SURFACE:CAPS"><link linkend="CAIRO-HAS-PS-SURFACE:CAPS">CAIRO_HAS_PS_SURFACE</link>, macro in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-SVG-SURFACE:CAPS"><link linkend="CAIRO-HAS-SVG-SURFACE:CAPS">CAIRO_HAS_SVG_SURFACE</link>, macro in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>I</title>
+<indexentry><primaryie linkends="cairo-image-surface-get-data"><link linkend="cairo-image-surface-get-data">cairo_image_surface_get_data</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-format"><link linkend="cairo-image-surface-get-format">cairo_image_surface_get_format</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-stride"><link linkend="cairo-image-surface-get-stride">cairo_image_surface_get_stride</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>N</title>
+<indexentry><primaryie linkends="cairo-new-sub-path"><link linkend="cairo-new-sub-path">cairo_new_sub_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-pattern-get-type"><link linkend="cairo-pattern-get-type">cairo_pattern_get_type</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-type-t"><link linkend="cairo-pattern-type-t">cairo_pattern_type_t</link>, enum in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-create"><link linkend="cairo-pdf-surface-create">cairo_pdf_surface_create</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-create-for-stream"><link linkend="cairo-pdf-surface-create-for-stream">cairo_pdf_surface_create_for_stream</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-size"><link linkend="cairo-pdf-surface-set-size">cairo_pdf_surface_set_size</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pop-group"><link linkend="cairo-pop-group">cairo_pop_group</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pop-group-to-source"><link linkend="cairo-pop-group-to-source">cairo_pop_group_to_source</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-create"><link linkend="cairo-ps-surface-create">cairo_ps_surface_create</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-create-for-stream"><link linkend="cairo-ps-surface-create-for-stream">cairo_ps_surface_create_for_stream</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-dsc-begin-page-setup"><link linkend="cairo-ps-surface-dsc-begin-page-setup">cairo_ps_surface_dsc_begin_page_setup</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-dsc-begin-setup"><link linkend="cairo-ps-surface-dsc-begin-setup">cairo_ps_surface_dsc_begin_setup</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-dsc-comment"><link linkend="cairo-ps-surface-dsc-comment">cairo_ps_surface_dsc_comment</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-set-size"><link linkend="cairo-ps-surface-set-size">cairo_ps_surface_set_size</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-push-group"><link linkend="cairo-push-group">cairo_push_group</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-push-group-with-content"><link linkend="cairo-push-group-with-content">cairo_push_group_with_content</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-scaled-font-get-ctm"><link linkend="cairo-scaled-font-get-ctm">cairo_scaled_font_get_ctm</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-font-face"><link linkend="cairo-scaled-font-get-font-face">cairo_scaled_font_get_font_face</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-font-matrix"><link linkend="cairo-scaled-font-get-font-matrix">cairo_scaled_font_get_font_matrix</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-font-options"><link linkend="cairo-scaled-font-get-font-options">cairo_scaled_font_get_font_options</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-type"><link linkend="cairo-scaled-font-get-type">cairo_scaled_font_get_type</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-text-extents"><link linkend="cairo-scaled-font-text-extents">cairo_scaled_font_text_extents</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-scaled-font"><link linkend="cairo-set-scaled-font">cairo_set_scaled_font</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-content"><link linkend="cairo-surface-get-content">cairo_surface_get_content</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-device-offset"><link linkend="cairo-surface-get-device-offset">cairo_surface_get_device_offset</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-type"><link linkend="cairo-surface-get-type">cairo_surface_get_type</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-fallback-resolution"><link linkend="cairo-surface-set-fallback-resolution">cairo_surface_set_fallback_resolution</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-type-t"><link linkend="cairo-surface-type-t">cairo_surface_type_t</link>, enum in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-get-versions"><link linkend="cairo-svg-get-versions">cairo_svg_get_versions</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-create"><link linkend="cairo-svg-surface-create">cairo_svg_surface_create</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-create-for-stream"><link linkend="cairo-svg-surface-create-for-stream">cairo_svg_surface_create_for_stream</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-restrict-to-version"><link linkend="cairo-svg-surface-restrict-to-version">cairo_svg_surface_restrict_to_version</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-version-t"><link linkend="cairo-svg-version-t">cairo_svg_version_t</link>, enum in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-version-to-string"><link linkend="cairo-svg-version-to-string">cairo_svg_version_to_string</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>W</title>
+<indexentry><primaryie linkends="cairo-win32-font-face-create-for-hfont"><link linkend="cairo-win32-font-face-create-for-hfont">cairo_win32_font_face_create_for_hfont</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create-with-dib"><link linkend="cairo-win32-surface-create-with-dib">cairo_win32_surface_create_with_dib</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-get-dc"><link linkend="cairo-win32-surface-get-dc">cairo_win32_surface_get_dc</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>X</title>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-depth"><link linkend="cairo-xlib-surface-get-depth">cairo_xlib_surface_get_depth</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-display"><link linkend="cairo-xlib-surface-get-display">cairo_xlib_surface_get_display</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-drawable"><link linkend="cairo-xlib-surface-get-drawable">cairo_xlib_surface_get_drawable</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-height"><link linkend="cairo-xlib-surface-get-height">cairo_xlib_surface_get_height</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-screen"><link linkend="cairo-xlib-surface-get-screen">cairo_xlib_surface_get_screen</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-visual"><link linkend="cairo-xlib-surface-get-visual">cairo_xlib_surface_get_visual</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-width"><link linkend="cairo-xlib-surface-get-width">cairo_xlib_surface_get_width</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.4.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.4.xml
new file mode 100644
index 0000000..32c51f2
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.4.xml
@@ -0,0 +1,50 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.4">
+<indexdiv><title>C</title>
+<indexentry><primaryie linkends="cairo-clip-extents"><link linkend="cairo-clip-extents">cairo_clip_extents</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-clip-rectangle-list"><link linkend="cairo-copy-clip-rectangle-list">cairo_copy_clip_rectangle_list</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-font-face-get-reference-count"><link linkend="cairo-font-face-get-reference-count">cairo_font_face_get_reference_count</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>G</title>
+<indexentry><primaryie linkends="cairo-get-dash"><link linkend="cairo-get-dash">cairo_get_dash</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-dash-count"><link linkend="cairo-get-dash-count">cairo_get_dash_count</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-reference-count"><link linkend="cairo-get-reference-count">cairo_get_reference_count</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-scaled-font"><link linkend="cairo-get-scaled-font">cairo_get_scaled_font</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-user-data"><link linkend="cairo-get-user-data">cairo_get_user_data</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-pattern-get-color-stop-count"><link linkend="cairo-pattern-get-color-stop-count">cairo_pattern_get_color_stop_count</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-color-stop-rgba"><link linkend="cairo-pattern-get-color-stop-rgba">cairo_pattern_get_color_stop_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-linear-points"><link linkend="cairo-pattern-get-linear-points">cairo_pattern_get_linear_points</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-radial-circles"><link linkend="cairo-pattern-get-radial-circles">cairo_pattern_get_radial_circles</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-reference-count"><link linkend="cairo-pattern-get-reference-count">cairo_pattern_get_reference_count</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-rgba"><link linkend="cairo-pattern-get-rgba">cairo_pattern_get_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-surface"><link linkend="cairo-pattern-get-surface">cairo_pattern_get_surface</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-user-data"><link linkend="cairo-pattern-get-user-data">cairo_pattern_get_user_data</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-user-data"><link linkend="cairo-pattern-set-user-data">cairo_pattern_set_user_data</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>R</title>
+<indexentry><primaryie linkends="cairo-rectangle-list-destroy"><link linkend="cairo-rectangle-list-destroy">cairo_rectangle_list_destroy</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-list-t"><link linkend="cairo-rectangle-list-t">cairo_rectangle_list_t</link>, struct in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-t"><link linkend="cairo-rectangle-t">cairo_rectangle_t</link>, struct in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-scaled-font-get-reference-count"><link linkend="cairo-scaled-font-get-reference-count">cairo_scaled_font_get_reference_count</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-user-data"><link linkend="cairo-scaled-font-get-user-data">cairo_scaled_font_get_user_data</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-set-user-data"><link linkend="cairo-scaled-font-set-user-data">cairo_scaled_font_set_user_data</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-user-data"><link linkend="cairo-set-user-data">cairo_set_user_data</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-reference-count"><link linkend="cairo-surface-get-reference-count">cairo_surface_get_reference_count</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>W</title>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-get-device-to-logical"><link linkend="cairo-win32-scaled-font-get-device-to-logical">cairo_win32_scaled_font_get_device_to_logical</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-get-logical-to-device"><link linkend="cairo-win32-scaled-font-get-logical-to-device">cairo_win32_scaled_font_get_logical_to_device</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create-with-ddb"><link linkend="cairo-win32-surface-create-with-ddb">cairo_win32_surface_create_with_ddb</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-get-image"><link linkend="cairo-win32-surface-get-image">cairo_win32_surface_get_image</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.6.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.6.xml
new file mode 100644
index 0000000..cd7aa99
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.6.xml
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.6">
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-format-stride-for-width"><link linkend="cairo-format-stride-for-width">cairo_format_stride_for_width</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="cairo-has-current-point"><link linkend="cairo-has-current-point">cairo_has_current_point</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-QUARTZ-FONT:CAPS"><link linkend="CAIRO-HAS-QUARTZ-FONT:CAPS">CAIRO_HAS_QUARTZ_FONT</link>, macro in <link linkend="cairo-Quartz-(CGFont)-Fonts">Quartz (CGFont) Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-QUARTZ-SURFACE:CAPS"><link linkend="CAIRO-HAS-QUARTZ-SURFACE:CAPS">CAIRO_HAS_QUARTZ_SURFACE</link>, macro in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS"><link linkend="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS">CAIRO_HAS_XLIB_XRENDER_SURFACE</link>, macro in <link linkend="cairo-XLib-XRender-Backend">XLib-XRender Backend</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-path-extents"><link linkend="cairo-path-extents">cairo_path_extents</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-get-levels"><link linkend="cairo-ps-get-levels">cairo_ps_get_levels</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-level-t"><link linkend="cairo-ps-level-t">cairo_ps_level_t</link>, enum in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-level-to-string"><link linkend="cairo-ps-level-to-string">cairo_ps_level_to_string</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-get-eps"><link linkend="cairo-ps-surface-get-eps">cairo_ps_surface_get_eps</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-restrict-to-level"><link linkend="cairo-ps-surface-restrict-to-level">cairo_ps_surface_restrict_to_level</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-set-eps"><link linkend="cairo-ps-surface-set-eps">cairo_ps_surface_set_eps</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>Q</title>
+<indexentry><primaryie linkends="cairo-quartz-font-face-create-for-atsu-font-id"><link linkend="cairo-quartz-font-face-create-for-atsu-font-id">cairo_quartz_font_face_create_for_atsu_font_id</link>, function in <link linkend="cairo-Quartz-(CGFont)-Fonts">Quartz (CGFont) Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-font-face-create-for-cgfont"><link linkend="cairo-quartz-font-face-create-for-cgfont">cairo_quartz_font_face_create_for_cgfont</link>, function in <link linkend="cairo-Quartz-(CGFont)-Fonts">Quartz (CGFont) Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-surface-create"><link linkend="cairo-quartz-surface-create">cairo_quartz_surface_create</link>, function in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-surface-create-for-cg-context"><link linkend="cairo-quartz-surface-create-for-cg-context">cairo_quartz_surface_create_for_cg_context</link>, function in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-surface-get-cg-context"><link linkend="cairo-quartz-surface-get-cg-context">cairo_quartz_surface_get_cg_context</link>, function in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-surface-copy-page"><link linkend="cairo-surface-copy-page">cairo_surface_copy_page</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-show-page"><link linkend="cairo-surface-show-page">cairo_surface_show_page</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>W</title>
+<indexentry><primaryie linkends="cairo-win32-font-face-create-for-logfontw-hfont"><link linkend="cairo-win32-font-face-create-for-logfontw-hfont">cairo_win32_font_face_create_for_logfontw_hfont</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-printing-surface-create"><link linkend="cairo-win32-printing-surface-create">cairo_win32_printing_surface_create</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>X</title>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-xrender-format"><link linkend="cairo-xlib-surface-get-xrender-format">cairo_xlib_surface_get_xrender_format</link>, function in <link linkend="cairo-XLib-XRender-Backend">XLib-XRender Backend</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-1.8.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-1.8.xml
new file mode 100644
index 0000000..fc9b05e
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-1.8.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-1.8">
+<indexdiv><title>G</title>
+<indexentry><primaryie linkends="cairo-glyph-allocate"><link linkend="cairo-glyph-allocate">cairo_glyph_allocate</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-free"><link linkend="cairo-glyph-free">cairo_glyph_free</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="CAIRO-HAS-IMAGE-SURFACE:CAPS"><link linkend="CAIRO-HAS-IMAGE-SURFACE:CAPS">CAIRO_HAS_IMAGE_SURFACE</link>, macro in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-USER-FONT:CAPS"><link linkend="CAIRO-HAS-USER-FONT:CAPS">CAIRO_HAS_USER_FONT</link>, macro in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-WIN32-FONT:CAPS"><link linkend="CAIRO-HAS-WIN32-FONT:CAPS">CAIRO_HAS_WIN32_FONT</link>, macro in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-scaled-font-get-scale-matrix"><link linkend="cairo-scaled-font-get-scale-matrix">cairo_scaled_font_get_scale_matrix</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-text-to-glyphs"><link linkend="cairo-scaled-font-text-to-glyphs">cairo_scaled_font_text_to_glyphs</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-text-glyphs"><link linkend="cairo-show-text-glyphs">cairo_show_text_glyphs</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-fallback-resolution"><link linkend="cairo-surface-get-fallback-resolution">cairo_surface_get_fallback_resolution</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-has-show-text-glyphs"><link linkend="cairo-surface-has-show-text-glyphs">cairo_surface_has_show_text_glyphs</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>T</title>
+<indexentry><primaryie linkends="cairo-text-cluster-allocate"><link linkend="cairo-text-cluster-allocate">cairo_text_cluster_allocate</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-flags-t"><link linkend="cairo-text-cluster-flags-t">cairo_text_cluster_flags_t</link>, enum in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-free"><link linkend="cairo-text-cluster-free">cairo_text_cluster_free</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-t"><link linkend="cairo-text-cluster-t">cairo_text_cluster_t</link>, struct in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-create"><link linkend="cairo-toy-font-face-create">cairo_toy_font_face_create</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-get-family"><link linkend="cairo-toy-font-face-get-family">cairo_toy_font_face_get_family</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-get-slant"><link linkend="cairo-toy-font-face-get-slant">cairo_toy_font_face_get_slant</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-get-weight"><link linkend="cairo-toy-font-face-get-weight">cairo_toy_font_face_get_weight</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>U</title>
+<indexentry><primaryie linkends="cairo-user-font-face-create"><link linkend="cairo-user-font-face-create">cairo_user_font_face_create</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-init-func"><link linkend="cairo-user-font-face-get-init-func">cairo_user_font_face_get_init_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-render-glyph-func"><link linkend="cairo-user-font-face-get-render-glyph-func">cairo_user_font_face_get_render_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-text-to-glyphs-func"><link linkend="cairo-user-font-face-get-text-to-glyphs-func">cairo_user_font_face_get_text_to_glyphs_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-unicode-to-glyph-func"><link linkend="cairo-user-font-face-get-unicode-to-glyph-func">cairo_user_font_face_get_unicode_to_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-init-func"><link linkend="cairo-user-font-face-set-init-func">cairo_user_font_face_set_init_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-render-glyph-func"><link linkend="cairo-user-font-face-set-render-glyph-func">cairo_user_font_face_set_render_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-text-to-glyphs-func"><link linkend="cairo-user-font-face-set-text-to-glyphs-func">cairo_user_font_face_set_text_to_glyphs_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-unicode-to-glyph-func"><link linkend="cairo-user-font-face-set-unicode-to-glyph-func">cairo_user_font_face_set_unicode_to_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-init-func-t"><link linkend="cairo-user-scaled-font-init-func-t">cairo_user_scaled_font_init_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-render-glyph-func-t"><link linkend="cairo-user-scaled-font-render-glyph-func-t">cairo_user_scaled_font_render_glyph_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-text-to-glyphs-func-t"><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t">cairo_user_scaled_font_text_to_glyphs_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-unicode-to-glyph-func-t"><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t">cairo_user_scaled_font_unicode_to_glyph_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>V</title>
+<indexentry><primaryie linkends="CAIRO-VERSION-STRING:CAPS"><link linkend="CAIRO-VERSION-STRING:CAPS">CAIRO_VERSION_STRING</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-STRINGIZE:CAPS"><link linkend="CAIRO-VERSION-STRINGIZE:CAPS">CAIRO_VERSION_STRINGIZE</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-TBD.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-TBD.xml
new file mode 100644
index 0000000..41821f8
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-TBD.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-TBD">
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-deprecated.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-deprecated.xml
new file mode 100644
index 0000000..4371747
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-deprecated.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-deprecated">
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/api-index-full.xml b/libs/cairo-1.16.0/doc/public/xml/api-index-full.xml
new file mode 100644
index 0000000..392867c
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/api-index-full.xml
@@ -0,0 +1,578 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<indexdiv id="api-index-full">
+<indexdiv><title>A</title>
+<indexentry><primaryie linkends="cairo-antialias-t"><link linkend="cairo-antialias-t">cairo_antialias_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-append-path"><link linkend="cairo-append-path">cairo_append_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-arc"><link linkend="cairo-arc">cairo_arc</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-arc-negative"><link linkend="cairo-arc-negative">cairo_arc_negative</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>B</title>
+<indexentry><primaryie linkends="cairo-bool-t"><link linkend="cairo-bool-t">cairo_bool_t</link>, typedef in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>C</title>
+<indexentry><primaryie linkends="cairo-clip"><link linkend="cairo-clip">cairo_clip</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-clip-extents"><link linkend="cairo-clip-extents">cairo_clip_extents</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-clip-preserve"><link linkend="cairo-clip-preserve">cairo_clip_preserve</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-close-path"><link linkend="cairo-close-path">cairo_close_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-content-t"><link linkend="cairo-content-t">cairo_content_t</link>, enum in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-clip-rectangle-list"><link linkend="cairo-copy-clip-rectangle-list">cairo_copy_clip_rectangle_list</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-page"><link linkend="cairo-copy-page">cairo_copy_page</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-path"><link linkend="cairo-copy-path">cairo_copy_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-copy-path-flat"><link linkend="cairo-copy-path-flat">cairo_copy_path_flat</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-create"><link linkend="cairo-create">cairo_create</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-curve-to"><link linkend="cairo-curve-to">cairo_curve_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>D</title>
+<indexentry><primaryie linkends="cairo-debug-reset-static-data"><link linkend="cairo-debug-reset-static-data">cairo_debug_reset_static_data</link>, function in <link linkend="cairo-Error-handling">Error handling</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-destroy"><link linkend="cairo-destroy">cairo_destroy</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-destroy-func-t"><link linkend="cairo-destroy-func-t">cairo_destroy_func_t</link>, user_function in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-acquire"><link linkend="cairo-device-acquire">cairo_device_acquire</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-destroy"><link linkend="cairo-device-destroy">cairo_device_destroy</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-finish"><link linkend="cairo-device-finish">cairo_device_finish</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-flush"><link linkend="cairo-device-flush">cairo_device_flush</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-get-reference-count"><link linkend="cairo-device-get-reference-count">cairo_device_get_reference_count</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-get-type"><link linkend="cairo-device-get-type">cairo_device_get_type</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-get-user-data"><link linkend="cairo-device-get-user-data">cairo_device_get_user_data</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-elapsed"><link linkend="cairo-device-observer-elapsed">cairo_device_observer_elapsed</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-fill-elapsed"><link linkend="cairo-device-observer-fill-elapsed">cairo_device_observer_fill_elapsed</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-glyphs-elapsed"><link linkend="cairo-device-observer-glyphs-elapsed">cairo_device_observer_glyphs_elapsed</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-mask-elapsed"><link linkend="cairo-device-observer-mask-elapsed">cairo_device_observer_mask_elapsed</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-paint-elapsed"><link linkend="cairo-device-observer-paint-elapsed">cairo_device_observer_paint_elapsed</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-print"><link linkend="cairo-device-observer-print">cairo_device_observer_print</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-observer-stroke-elapsed"><link linkend="cairo-device-observer-stroke-elapsed">cairo_device_observer_stroke_elapsed</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-reference"><link linkend="cairo-device-reference">cairo_device_reference</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-release"><link linkend="cairo-device-release">cairo_device_release</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-set-user-data"><link linkend="cairo-device-set-user-data">cairo_device_set_user_data</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-status"><link linkend="cairo-device-status">cairo_device_status</link>, function in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-t"><link linkend="cairo-device-t">cairo_device_t</link>, typedef in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-to-user"><link linkend="cairo-device-to-user">cairo_device_to_user</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-to-user-distance"><link linkend="cairo-device-to-user-distance">cairo_device_to_user_distance</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-device-type-t"><link linkend="cairo-device-type-t">cairo_device_type_t</link>, enum in <link linkend="cairo-cairo-device-t">cairo_device_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>E</title>
+<indexentry><primaryie linkends="cairo-extend-t"><link linkend="cairo-extend-t">cairo_extend_t</link>, enum in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>F</title>
+<indexentry><primaryie linkends="cairo-fill"><link linkend="cairo-fill">cairo_fill</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-fill-extents"><link linkend="cairo-fill-extents">cairo_fill_extents</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-fill-preserve"><link linkend="cairo-fill-preserve">cairo_fill_preserve</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-fill-rule-t"><link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-filter-t"><link linkend="cairo-filter-t">cairo_filter_t</link>, enum in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-extents"><link linkend="cairo-font-extents">cairo_font_extents</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-extents-t"><link linkend="cairo-font-extents-t">cairo_font_extents_t</link>, struct in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-destroy"><link linkend="cairo-font-face-destroy">cairo_font_face_destroy</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-get-reference-count"><link linkend="cairo-font-face-get-reference-count">cairo_font_face_get_reference_count</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-get-type"><link linkend="cairo-font-face-get-type">cairo_font_face_get_type</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-get-user-data"><link linkend="cairo-font-face-get-user-data">cairo_font_face_get_user_data</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-reference"><link linkend="cairo-font-face-reference">cairo_font_face_reference</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-set-user-data"><link linkend="cairo-font-face-set-user-data">cairo_font_face_set_user_data</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-status"><link linkend="cairo-font-face-status">cairo_font_face_status</link>, function in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-face-t"><link linkend="cairo-font-face-t">cairo_font_face_t</link>, typedef in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-copy"><link linkend="cairo-font-options-copy">cairo_font_options_copy</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-create"><link linkend="cairo-font-options-create">cairo_font_options_create</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-destroy"><link linkend="cairo-font-options-destroy">cairo_font_options_destroy</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-equal"><link linkend="cairo-font-options-equal">cairo_font_options_equal</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-antialias"><link linkend="cairo-font-options-get-antialias">cairo_font_options_get_antialias</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-hint-metrics"><link linkend="cairo-font-options-get-hint-metrics">cairo_font_options_get_hint_metrics</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-hint-style"><link linkend="cairo-font-options-get-hint-style">cairo_font_options_get_hint_style</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-subpixel-order"><link linkend="cairo-font-options-get-subpixel-order">cairo_font_options_get_subpixel_order</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-get-variations"><link linkend="cairo-font-options-get-variations">cairo_font_options_get_variations</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-hash"><link linkend="cairo-font-options-hash">cairo_font_options_hash</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-merge"><link linkend="cairo-font-options-merge">cairo_font_options_merge</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-antialias"><link linkend="cairo-font-options-set-antialias">cairo_font_options_set_antialias</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-hint-metrics"><link linkend="cairo-font-options-set-hint-metrics">cairo_font_options_set_hint_metrics</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-hint-style"><link linkend="cairo-font-options-set-hint-style">cairo_font_options_set_hint_style</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-subpixel-order"><link linkend="cairo-font-options-set-subpixel-order">cairo_font_options_set_subpixel_order</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-set-variations"><link linkend="cairo-font-options-set-variations">cairo_font_options_set_variations</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-status"><link linkend="cairo-font-options-status">cairo_font_options_status</link>, function in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-options-t"><link linkend="cairo-font-options-t">cairo_font_options_t</link>, typedef in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-slant-t"><link linkend="cairo-font-slant-t">cairo_font_slant_t</link>, enum in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-type-t"><link linkend="cairo-font-type-t">cairo_font_type_t</link>, enum in <link linkend="cairo-cairo-font-face-t">cairo_font_face_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-font-weight-t"><link linkend="cairo-font-weight-t">cairo_font_weight_t</link>, enum in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-format-stride-for-width"><link linkend="cairo-format-stride-for-width">cairo_format_stride_for_width</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-format-t"><link linkend="cairo-format-t">cairo_format_t</link>, enum in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-create-for-ft-face"><link linkend="cairo-ft-font-face-create-for-ft-face">cairo_ft_font_face_create_for_ft_face</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-create-for-pattern"><link linkend="cairo-ft-font-face-create-for-pattern">cairo_ft_font_face_create_for_pattern</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-get-synthesize"><link linkend="cairo-ft-font-face-get-synthesize">cairo_ft_font_face_get_synthesize</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-set-synthesize"><link linkend="cairo-ft-font-face-set-synthesize">cairo_ft_font_face_set_synthesize</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-face-unset-synthesize"><link linkend="cairo-ft-font-face-unset-synthesize">cairo_ft_font_face_unset_synthesize</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-font-options-substitute"><link linkend="cairo-ft-font-options-substitute">cairo_ft_font_options_substitute</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-scaled-font-lock-face"><link linkend="cairo-ft-scaled-font-lock-face">cairo_ft_scaled_font_lock_face</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-scaled-font-unlock-face"><link linkend="cairo-ft-scaled-font-unlock-face">cairo_ft_scaled_font_unlock_face</link>, function in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ft-synthesize-t"><link linkend="cairo-ft-synthesize-t">cairo_ft_synthesize_t</link>, enum in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>G</title>
+<indexentry><primaryie linkends="cairo-get-antialias"><link linkend="cairo-get-antialias">cairo_get_antialias</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-current-point"><link linkend="cairo-get-current-point">cairo_get_current_point</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-dash"><link linkend="cairo-get-dash">cairo_get_dash</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-dash-count"><link linkend="cairo-get-dash-count">cairo_get_dash_count</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-fill-rule"><link linkend="cairo-get-fill-rule">cairo_get_fill_rule</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-font-face"><link linkend="cairo-get-font-face">cairo_get_font_face</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-font-matrix"><link linkend="cairo-get-font-matrix">cairo_get_font_matrix</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-font-options"><link linkend="cairo-get-font-options">cairo_get_font_options</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-group-target"><link linkend="cairo-get-group-target">cairo_get_group_target</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-line-cap"><link linkend="cairo-get-line-cap">cairo_get_line_cap</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-line-join"><link linkend="cairo-get-line-join">cairo_get_line_join</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-line-width"><link linkend="cairo-get-line-width">cairo_get_line_width</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-matrix"><link linkend="cairo-get-matrix">cairo_get_matrix</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-miter-limit"><link linkend="cairo-get-miter-limit">cairo_get_miter_limit</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-operator"><link linkend="cairo-get-operator">cairo_get_operator</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-reference-count"><link linkend="cairo-get-reference-count">cairo_get_reference_count</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-scaled-font"><link linkend="cairo-get-scaled-font">cairo_get_scaled_font</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-source"><link linkend="cairo-get-source">cairo_get_source</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-target"><link linkend="cairo-get-target">cairo_get_target</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-tolerance"><link linkend="cairo-get-tolerance">cairo_get_tolerance</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-get-user-data"><link linkend="cairo-get-user-data">cairo_get_user_data</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-allocate"><link linkend="cairo-glyph-allocate">cairo_glyph_allocate</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-extents"><link linkend="cairo-glyph-extents">cairo_glyph_extents</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-free"><link linkend="cairo-glyph-free">cairo_glyph_free</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-path"><link linkend="cairo-glyph-path">cairo_glyph_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-glyph-t"><link linkend="cairo-glyph-t">cairo_glyph_t</link>, struct in <link linkend="cairo-text">text</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>H</title>
+<indexentry><primaryie linkends="cairo-has-current-point"><link linkend="cairo-has-current-point">cairo_has_current_point</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-FC-FONT:CAPS"><link linkend="CAIRO-HAS-FC-FONT:CAPS">CAIRO_HAS_FC_FONT</link>, macro in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-FT-FONT:CAPS"><link linkend="CAIRO-HAS-FT-FONT:CAPS">CAIRO_HAS_FT_FONT</link>, macro in <link linkend="cairo-FreeType-Fonts">FreeType Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-IMAGE-SURFACE:CAPS"><link linkend="CAIRO-HAS-IMAGE-SURFACE:CAPS">CAIRO_HAS_IMAGE_SURFACE</link>, macro in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-MIME-SURFACE:CAPS"><link linkend="CAIRO-HAS-MIME-SURFACE:CAPS">CAIRO_HAS_MIME_SURFACE</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-OBSERVER-SURFACE:CAPS"><link linkend="CAIRO-HAS-OBSERVER-SURFACE:CAPS">CAIRO_HAS_OBSERVER_SURFACE</link>, macro in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-PDF-SURFACE:CAPS"><link linkend="CAIRO-HAS-PDF-SURFACE:CAPS">CAIRO_HAS_PDF_SURFACE</link>, macro in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-PNG-FUNCTIONS:CAPS"><link linkend="CAIRO-HAS-PNG-FUNCTIONS:CAPS">CAIRO_HAS_PNG_FUNCTIONS</link>, macro in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-PS-SURFACE:CAPS"><link linkend="CAIRO-HAS-PS-SURFACE:CAPS">CAIRO_HAS_PS_SURFACE</link>, macro in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-QUARTZ-FONT:CAPS"><link linkend="CAIRO-HAS-QUARTZ-FONT:CAPS">CAIRO_HAS_QUARTZ_FONT</link>, macro in <link linkend="cairo-Quartz-(CGFont)-Fonts">Quartz (CGFont) Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-QUARTZ-SURFACE:CAPS"><link linkend="CAIRO-HAS-QUARTZ-SURFACE:CAPS">CAIRO_HAS_QUARTZ_SURFACE</link>, macro in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-RECORDING-SURFACE:CAPS"><link linkend="CAIRO-HAS-RECORDING-SURFACE:CAPS">CAIRO_HAS_RECORDING_SURFACE</link>, macro in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-SCRIPT-SURFACE:CAPS"><link linkend="CAIRO-HAS-SCRIPT-SURFACE:CAPS">CAIRO_HAS_SCRIPT_SURFACE</link>, macro in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-SVG-SURFACE:CAPS"><link linkend="CAIRO-HAS-SVG-SURFACE:CAPS">CAIRO_HAS_SVG_SURFACE</link>, macro in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-USER-FONT:CAPS"><link linkend="CAIRO-HAS-USER-FONT:CAPS">CAIRO_HAS_USER_FONT</link>, macro in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-WIN32-FONT:CAPS"><link linkend="CAIRO-HAS-WIN32-FONT:CAPS">CAIRO_HAS_WIN32_FONT</link>, macro in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-WIN32-SURFACE:CAPS"><link linkend="CAIRO-HAS-WIN32-SURFACE:CAPS">CAIRO_HAS_WIN32_SURFACE</link>, macro in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XCB-SHM-FUNCTIONS:CAPS"><link linkend="CAIRO-HAS-XCB-SHM-FUNCTIONS:CAPS">CAIRO_HAS_XCB_SHM_FUNCTIONS</link>, macro in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XCB-SURFACE:CAPS"><link linkend="CAIRO-HAS-XCB-SURFACE:CAPS">CAIRO_HAS_XCB_SURFACE</link>, macro in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XLIB-SURFACE:CAPS"><link linkend="CAIRO-HAS-XLIB-SURFACE:CAPS">CAIRO_HAS_XLIB_SURFACE</link>, macro in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS"><link linkend="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS">CAIRO_HAS_XLIB_XRENDER_SURFACE</link>, macro in <link linkend="cairo-XLib-XRender-Backend">XLib-XRender Backend</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-hint-metrics-t"><link linkend="cairo-hint-metrics-t">cairo_hint_metrics_t</link>, enum in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-hint-style-t"><link linkend="cairo-hint-style-t">cairo_hint_style_t</link>, enum in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>I</title>
+<indexentry><primaryie linkends="cairo-identity-matrix"><link linkend="cairo-identity-matrix">cairo_identity_matrix</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create"><link linkend="cairo-image-surface-create">cairo_image_surface_create</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create-for-data"><link linkend="cairo-image-surface-create-for-data">cairo_image_surface_create_for_data</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create-from-png"><link linkend="cairo-image-surface-create-from-png">cairo_image_surface_create_from_png</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-create-from-png-stream"><link linkend="cairo-image-surface-create-from-png-stream">cairo_image_surface_create_from_png_stream</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-data"><link linkend="cairo-image-surface-get-data">cairo_image_surface_get_data</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-format"><link linkend="cairo-image-surface-get-format">cairo_image_surface_get_format</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-height"><link linkend="cairo-image-surface-get-height">cairo_image_surface_get_height</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-stride"><link linkend="cairo-image-surface-get-stride">cairo_image_surface_get_stride</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-image-surface-get-width"><link linkend="cairo-image-surface-get-width">cairo_image_surface_get_width</link>, function in <link linkend="cairo-Image-Surfaces">Image Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-in-clip"><link linkend="cairo-in-clip">cairo_in_clip</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-in-fill"><link linkend="cairo-in-fill">cairo_in_fill</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-in-stroke"><link linkend="cairo-in-stroke">cairo_in_stroke</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>L</title>
+<indexentry><primaryie linkends="cairo-line-cap-t"><link linkend="cairo-line-cap-t">cairo_line_cap_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-line-join-t"><link linkend="cairo-line-join-t">cairo_line_join_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-line-to"><link linkend="cairo-line-to">cairo_line_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>M</title>
+<indexentry><primaryie linkends="cairo-mask"><link linkend="cairo-mask">cairo_mask</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mask-surface"><link linkend="cairo-mask-surface">cairo_mask_surface</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init"><link linkend="cairo-matrix-init">cairo_matrix_init</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-identity"><link linkend="cairo-matrix-init-identity">cairo_matrix_init_identity</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-rotate"><link linkend="cairo-matrix-init-rotate">cairo_matrix_init_rotate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-scale"><link linkend="cairo-matrix-init-scale">cairo_matrix_init_scale</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-init-translate"><link linkend="cairo-matrix-init-translate">cairo_matrix_init_translate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-invert"><link linkend="cairo-matrix-invert">cairo_matrix_invert</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-multiply"><link linkend="cairo-matrix-multiply">cairo_matrix_multiply</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-rotate"><link linkend="cairo-matrix-rotate">cairo_matrix_rotate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-scale"><link linkend="cairo-matrix-scale">cairo_matrix_scale</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-t"><link linkend="cairo-matrix-t">cairo_matrix_t</link>, struct in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-transform-distance"><link linkend="cairo-matrix-transform-distance">cairo_matrix_transform_distance</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-transform-point"><link linkend="cairo-matrix-transform-point">cairo_matrix_transform_point</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-matrix-translate"><link linkend="cairo-matrix-translate">cairo_matrix_translate</link>, function in <link linkend="cairo-cairo-matrix-t">cairo_matrix_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-begin-patch"><link linkend="cairo-mesh-pattern-begin-patch">cairo_mesh_pattern_begin_patch</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-curve-to"><link linkend="cairo-mesh-pattern-curve-to">cairo_mesh_pattern_curve_to</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-end-patch"><link linkend="cairo-mesh-pattern-end-patch">cairo_mesh_pattern_end_patch</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-control-point"><link linkend="cairo-mesh-pattern-get-control-point">cairo_mesh_pattern_get_control_point</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-corner-color-rgba"><link linkend="cairo-mesh-pattern-get-corner-color-rgba">cairo_mesh_pattern_get_corner_color_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-patch-count"><link linkend="cairo-mesh-pattern-get-patch-count">cairo_mesh_pattern_get_patch_count</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-get-path"><link linkend="cairo-mesh-pattern-get-path">cairo_mesh_pattern_get_path</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-line-to"><link linkend="cairo-mesh-pattern-line-to">cairo_mesh_pattern_line_to</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-move-to"><link linkend="cairo-mesh-pattern-move-to">cairo_mesh_pattern_move_to</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-set-control-point"><link linkend="cairo-mesh-pattern-set-control-point">cairo_mesh_pattern_set_control_point</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-set-corner-color-rgb"><link linkend="cairo-mesh-pattern-set-corner-color-rgb">cairo_mesh_pattern_set_corner_color_rgb</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-mesh-pattern-set-corner-color-rgba"><link linkend="cairo-mesh-pattern-set-corner-color-rgba">cairo_mesh_pattern_set_corner_color_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS">CAIRO_MIME_TYPE_CCITT_FAX</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS">CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-EPS:CAPS"><link linkend="CAIRO-MIME-TYPE-EPS:CAPS">CAIRO_MIME_TYPE_EPS</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS"><link linkend="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS">CAIRO_MIME_TYPE_EPS_PARAMS</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JBIG2:CAPS"><link linkend="CAIRO-MIME-TYPE-JBIG2:CAPS">CAIRO_MIME_TYPE_JBIG2</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS">CAIRO_MIME_TYPE_JBIG2_GLOBAL</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS">CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JP2:CAPS"><link linkend="CAIRO-MIME-TYPE-JP2:CAPS">CAIRO_MIME_TYPE_JP2</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-JPEG:CAPS"><link linkend="CAIRO-MIME-TYPE-JPEG:CAPS">CAIRO_MIME_TYPE_JPEG</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-PNG:CAPS"><link linkend="CAIRO-MIME-TYPE-PNG:CAPS">CAIRO_MIME_TYPE_PNG</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS">CAIRO_MIME_TYPE_UNIQUE_ID</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-MIME-TYPE-URI:CAPS"><link linkend="CAIRO-MIME-TYPE-URI:CAPS">CAIRO_MIME_TYPE_URI</link>, macro in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-move-to"><link linkend="cairo-move-to">cairo_move_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>N</title>
+<indexentry><primaryie linkends="cairo-new-path"><link linkend="cairo-new-path">cairo_new_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-new-sub-path"><link linkend="cairo-new-sub-path">cairo_new_sub_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>O</title>
+<indexentry><primaryie linkends="cairo-operator-t"><link linkend="cairo-operator-t">cairo_operator_t</link>, enum in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="cairo-paint"><link linkend="cairo-paint">cairo_paint</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-paint-with-alpha"><link linkend="cairo-paint-with-alpha">cairo_paint_with_alpha</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-data-t"><link linkend="cairo-path-data-t">cairo_path_data_t</link>, union in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-data-type-t"><link linkend="cairo-path-data-type-t">cairo_path_data_type_t</link>, enum in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-destroy"><link linkend="cairo-path-destroy">cairo_path_destroy</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-extents"><link linkend="cairo-path-extents">cairo_path_extents</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-path-t"><link linkend="cairo-path-t">cairo_path_t</link>, struct in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-add-color-stop-rgb"><link linkend="cairo-pattern-add-color-stop-rgb">cairo_pattern_add_color_stop_rgb</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-add-color-stop-rgba"><link linkend="cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-for-surface"><link linkend="cairo-pattern-create-for-surface">cairo_pattern_create_for_surface</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-linear"><link linkend="cairo-pattern-create-linear">cairo_pattern_create_linear</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-mesh"><link linkend="cairo-pattern-create-mesh">cairo_pattern_create_mesh</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-radial"><link linkend="cairo-pattern-create-radial">cairo_pattern_create_radial</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-raster-source"><link linkend="cairo-pattern-create-raster-source">cairo_pattern_create_raster_source</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-rgb"><link linkend="cairo-pattern-create-rgb">cairo_pattern_create_rgb</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-create-rgba"><link linkend="cairo-pattern-create-rgba">cairo_pattern_create_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-destroy"><link linkend="cairo-pattern-destroy">cairo_pattern_destroy</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-color-stop-count"><link linkend="cairo-pattern-get-color-stop-count">cairo_pattern_get_color_stop_count</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-color-stop-rgba"><link linkend="cairo-pattern-get-color-stop-rgba">cairo_pattern_get_color_stop_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-extend"><link linkend="cairo-pattern-get-extend">cairo_pattern_get_extend</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-filter"><link linkend="cairo-pattern-get-filter">cairo_pattern_get_filter</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-linear-points"><link linkend="cairo-pattern-get-linear-points">cairo_pattern_get_linear_points</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-matrix"><link linkend="cairo-pattern-get-matrix">cairo_pattern_get_matrix</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-radial-circles"><link linkend="cairo-pattern-get-radial-circles">cairo_pattern_get_radial_circles</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-reference-count"><link linkend="cairo-pattern-get-reference-count">cairo_pattern_get_reference_count</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-rgba"><link linkend="cairo-pattern-get-rgba">cairo_pattern_get_rgba</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-surface"><link linkend="cairo-pattern-get-surface">cairo_pattern_get_surface</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-type"><link linkend="cairo-pattern-get-type">cairo_pattern_get_type</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-get-user-data"><link linkend="cairo-pattern-get-user-data">cairo_pattern_get_user_data</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-reference"><link linkend="cairo-pattern-reference">cairo_pattern_reference</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-extend"><link linkend="cairo-pattern-set-extend">cairo_pattern_set_extend</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-filter"><link linkend="cairo-pattern-set-filter">cairo_pattern_set_filter</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-matrix"><link linkend="cairo-pattern-set-matrix">cairo_pattern_set_matrix</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-set-user-data"><link linkend="cairo-pattern-set-user-data">cairo_pattern_set_user_data</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-status"><link linkend="cairo-pattern-status">cairo_pattern_status</link>, function in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-t"><link linkend="cairo-pattern-t">cairo_pattern_t</link>, typedef in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pattern-type-t"><link linkend="cairo-pattern-type-t">cairo_pattern_type_t</link>, enum in <link linkend="cairo-cairo-pattern-t">cairo_pattern_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-get-versions"><link linkend="cairo-pdf-get-versions">cairo_pdf_get_versions</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-metadata-t"><link linkend="cairo-pdf-metadata-t">cairo_pdf_metadata_t</link>, enum in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-outline-flags-t"><link linkend="cairo-pdf-outline-flags-t">cairo_pdf_outline_flags_t</link>, enum in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-PDF-OUTLINE-ROOT:CAPS"><link linkend="CAIRO-PDF-OUTLINE-ROOT:CAPS">CAIRO_PDF_OUTLINE_ROOT</link>, macro in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-add-outline"><link linkend="cairo-pdf-surface-add-outline">cairo_pdf_surface_add_outline</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-create"><link linkend="cairo-pdf-surface-create">cairo_pdf_surface_create</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-create-for-stream"><link linkend="cairo-pdf-surface-create-for-stream">cairo_pdf_surface_create_for_stream</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-restrict-to-version"><link linkend="cairo-pdf-surface-restrict-to-version">cairo_pdf_surface_restrict_to_version</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-metadata"><link linkend="cairo-pdf-surface-set-metadata">cairo_pdf_surface_set_metadata</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-page-label"><link linkend="cairo-pdf-surface-set-page-label">cairo_pdf_surface_set_page_label</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-size"><link linkend="cairo-pdf-surface-set-size">cairo_pdf_surface_set_size</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-surface-set-thumbnail-size"><link linkend="cairo-pdf-surface-set-thumbnail-size">cairo_pdf_surface_set_thumbnail_size</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-version-t"><link linkend="cairo-pdf-version-t">cairo_pdf_version_t</link>, enum in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pdf-version-to-string"><link linkend="cairo-pdf-version-to-string">cairo_pdf_version_to_string</link>, function in <link linkend="cairo-PDF-Surfaces">PDF Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pop-group"><link linkend="cairo-pop-group">cairo_pop_group</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-pop-group-to-source"><link linkend="cairo-pop-group-to-source">cairo_pop_group_to_source</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-get-levels"><link linkend="cairo-ps-get-levels">cairo_ps_get_levels</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-level-t"><link linkend="cairo-ps-level-t">cairo_ps_level_t</link>, enum in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-level-to-string"><link linkend="cairo-ps-level-to-string">cairo_ps_level_to_string</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-create"><link linkend="cairo-ps-surface-create">cairo_ps_surface_create</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-create-for-stream"><link linkend="cairo-ps-surface-create-for-stream">cairo_ps_surface_create_for_stream</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-dsc-begin-page-setup"><link linkend="cairo-ps-surface-dsc-begin-page-setup">cairo_ps_surface_dsc_begin_page_setup</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-dsc-begin-setup"><link linkend="cairo-ps-surface-dsc-begin-setup">cairo_ps_surface_dsc_begin_setup</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-dsc-comment"><link linkend="cairo-ps-surface-dsc-comment">cairo_ps_surface_dsc_comment</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-get-eps"><link linkend="cairo-ps-surface-get-eps">cairo_ps_surface_get_eps</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-restrict-to-level"><link linkend="cairo-ps-surface-restrict-to-level">cairo_ps_surface_restrict_to_level</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-set-eps"><link linkend="cairo-ps-surface-set-eps">cairo_ps_surface_set_eps</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-ps-surface-set-size"><link linkend="cairo-ps-surface-set-size">cairo_ps_surface_set_size</link>, function in <link linkend="cairo-PostScript-Surfaces">PostScript Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-push-group"><link linkend="cairo-push-group">cairo_push_group</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-push-group-with-content"><link linkend="cairo-push-group-with-content">cairo_push_group_with_content</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>Q</title>
+<indexentry><primaryie linkends="cairo-quartz-font-face-create-for-atsu-font-id"><link linkend="cairo-quartz-font-face-create-for-atsu-font-id">cairo_quartz_font_face_create_for_atsu_font_id</link>, function in <link linkend="cairo-Quartz-(CGFont)-Fonts">Quartz (CGFont) Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-font-face-create-for-cgfont"><link linkend="cairo-quartz-font-face-create-for-cgfont">cairo_quartz_font_face_create_for_cgfont</link>, function in <link linkend="cairo-Quartz-(CGFont)-Fonts">Quartz (CGFont) Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-surface-create"><link linkend="cairo-quartz-surface-create">cairo_quartz_surface_create</link>, function in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-surface-create-for-cg-context"><link linkend="cairo-quartz-surface-create-for-cg-context">cairo_quartz_surface_create_for_cg_context</link>, function in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-quartz-surface-get-cg-context"><link linkend="cairo-quartz-surface-get-cg-context">cairo_quartz_surface_get_cg_context</link>, function in <link linkend="cairo-Quartz-Surfaces">Quartz Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>R</title>
+<indexentry><primaryie linkends="cairo-raster-source-acquire-func-t"><link linkend="cairo-raster-source-acquire-func-t">cairo_raster_source_acquire_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-copy-func-t"><link linkend="cairo-raster-source-copy-func-t">cairo_raster_source_copy_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-finish-func-t"><link linkend="cairo-raster-source-finish-func-t">cairo_raster_source_finish_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-acquire"><link linkend="cairo-raster-source-pattern-get-acquire">cairo_raster_source_pattern_get_acquire</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-callback-data"><link linkend="cairo-raster-source-pattern-get-callback-data">cairo_raster_source_pattern_get_callback_data</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-copy"><link linkend="cairo-raster-source-pattern-get-copy">cairo_raster_source_pattern_get_copy</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-finish"><link linkend="cairo-raster-source-pattern-get-finish">cairo_raster_source_pattern_get_finish</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-get-snapshot"><link linkend="cairo-raster-source-pattern-get-snapshot">cairo_raster_source_pattern_get_snapshot</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-acquire"><link linkend="cairo-raster-source-pattern-set-acquire">cairo_raster_source_pattern_set_acquire</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-callback-data"><link linkend="cairo-raster-source-pattern-set-callback-data">cairo_raster_source_pattern_set_callback_data</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-copy"><link linkend="cairo-raster-source-pattern-set-copy">cairo_raster_source_pattern_set_copy</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-finish"><link linkend="cairo-raster-source-pattern-set-finish">cairo_raster_source_pattern_set_finish</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-pattern-set-snapshot"><link linkend="cairo-raster-source-pattern-set-snapshot">cairo_raster_source_pattern_set_snapshot</link>, function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-release-func-t"><link linkend="cairo-raster-source-release-func-t">cairo_raster_source_release_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-raster-source-snapshot-func-t"><link linkend="cairo-raster-source-snapshot-func-t">cairo_raster_source_snapshot_func_t</link>, user_function in <link linkend="cairo-Raster-Sources">Raster Sources</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-read-func-t"><link linkend="cairo-read-func-t">cairo_read_func_t</link>, user_function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-recording-surface-create"><link linkend="cairo-recording-surface-create">cairo_recording_surface_create</link>, function in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-recording-surface-get-extents"><link linkend="cairo-recording-surface-get-extents">cairo_recording_surface_get_extents</link>, function in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-recording-surface-ink-extents"><link linkend="cairo-recording-surface-ink-extents">cairo_recording_surface_ink_extents</link>, function in <link linkend="cairo-Recording-Surfaces">Recording Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle"><link linkend="cairo-rectangle">cairo_rectangle</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-int-t"><link linkend="cairo-rectangle-int-t">cairo_rectangle_int_t</link>, struct in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-list-destroy"><link linkend="cairo-rectangle-list-destroy">cairo_rectangle_list_destroy</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-list-t"><link linkend="cairo-rectangle-list-t">cairo_rectangle_list_t</link>, struct in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rectangle-t"><link linkend="cairo-rectangle-t">cairo_rectangle_t</link>, struct in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-reference"><link linkend="cairo-reference">cairo_reference</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-contains-point"><link linkend="cairo-region-contains-point">cairo_region_contains_point</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-contains-rectangle"><link linkend="cairo-region-contains-rectangle">cairo_region_contains_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-copy"><link linkend="cairo-region-copy">cairo_region_copy</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-create"><link linkend="cairo-region-create">cairo_region_create</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-create-rectangle"><link linkend="cairo-region-create-rectangle">cairo_region_create_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-create-rectangles"><link linkend="cairo-region-create-rectangles">cairo_region_create_rectangles</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-destroy"><link linkend="cairo-region-destroy">cairo_region_destroy</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-equal"><link linkend="cairo-region-equal">cairo_region_equal</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-get-extents"><link linkend="cairo-region-get-extents">cairo_region_get_extents</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-get-rectangle"><link linkend="cairo-region-get-rectangle">cairo_region_get_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-intersect"><link linkend="cairo-region-intersect">cairo_region_intersect</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-intersect-rectangle"><link linkend="cairo-region-intersect-rectangle">cairo_region_intersect_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-is-empty"><link linkend="cairo-region-is-empty">cairo_region_is_empty</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-num-rectangles"><link linkend="cairo-region-num-rectangles">cairo_region_num_rectangles</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-overlap-t"><link linkend="cairo-region-overlap-t">cairo_region_overlap_t</link>, enum in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-reference"><link linkend="cairo-region-reference">cairo_region_reference</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-status"><link linkend="cairo-region-status">cairo_region_status</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-subtract"><link linkend="cairo-region-subtract">cairo_region_subtract</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-subtract-rectangle"><link linkend="cairo-region-subtract-rectangle">cairo_region_subtract_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-t"><link linkend="cairo-region-t">cairo_region_t</link>, typedef in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-translate"><link linkend="cairo-region-translate">cairo_region_translate</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-union"><link linkend="cairo-region-union">cairo_region_union</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-union-rectangle"><link linkend="cairo-region-union-rectangle">cairo_region_union_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-xor"><link linkend="cairo-region-xor">cairo_region_xor</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-region-xor-rectangle"><link linkend="cairo-region-xor-rectangle">cairo_region_xor_rectangle</link>, function in <link linkend="cairo-Regions">Regions</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rel-curve-to"><link linkend="cairo-rel-curve-to">cairo_rel_curve_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rel-line-to"><link linkend="cairo-rel-line-to">cairo_rel_line_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rel-move-to"><link linkend="cairo-rel-move-to">cairo_rel_move_to</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-reset-clip"><link linkend="cairo-reset-clip">cairo_reset_clip</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-restore"><link linkend="cairo-restore">cairo_restore</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-rotate"><link linkend="cairo-rotate">cairo_rotate</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="cairo-save"><link linkend="cairo-save">cairo_save</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scale"><link linkend="cairo-scale">cairo_scale</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-create"><link linkend="cairo-scaled-font-create">cairo_scaled_font_create</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-destroy"><link linkend="cairo-scaled-font-destroy">cairo_scaled_font_destroy</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-extents"><link linkend="cairo-scaled-font-extents">cairo_scaled_font_extents</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-ctm"><link linkend="cairo-scaled-font-get-ctm">cairo_scaled_font_get_ctm</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-font-face"><link linkend="cairo-scaled-font-get-font-face">cairo_scaled_font_get_font_face</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-font-matrix"><link linkend="cairo-scaled-font-get-font-matrix">cairo_scaled_font_get_font_matrix</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-font-options"><link linkend="cairo-scaled-font-get-font-options">cairo_scaled_font_get_font_options</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-reference-count"><link linkend="cairo-scaled-font-get-reference-count">cairo_scaled_font_get_reference_count</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-scale-matrix"><link linkend="cairo-scaled-font-get-scale-matrix">cairo_scaled_font_get_scale_matrix</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-type"><link linkend="cairo-scaled-font-get-type">cairo_scaled_font_get_type</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-get-user-data"><link linkend="cairo-scaled-font-get-user-data">cairo_scaled_font_get_user_data</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-glyph-extents"><link linkend="cairo-scaled-font-glyph-extents">cairo_scaled_font_glyph_extents</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-reference"><link linkend="cairo-scaled-font-reference">cairo_scaled_font_reference</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-set-user-data"><link linkend="cairo-scaled-font-set-user-data">cairo_scaled_font_set_user_data</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-status"><link linkend="cairo-scaled-font-status">cairo_scaled_font_status</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-t"><link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link>, typedef in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-text-extents"><link linkend="cairo-scaled-font-text-extents">cairo_scaled_font_text_extents</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-scaled-font-text-to-glyphs"><link linkend="cairo-scaled-font-text-to-glyphs">cairo_scaled_font_text_to_glyphs</link>, function in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-create"><link linkend="cairo-script-create">cairo_script_create</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-create-for-stream"><link linkend="cairo-script-create-for-stream">cairo_script_create_for_stream</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-from-recording-surface"><link linkend="cairo-script-from-recording-surface">cairo_script_from_recording_surface</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-get-mode"><link linkend="cairo-script-get-mode">cairo_script_get_mode</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-mode-t"><link linkend="cairo-script-mode-t">cairo_script_mode_t</link>, enum in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-set-mode"><link linkend="cairo-script-set-mode">cairo_script_set_mode</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-surface-create"><link linkend="cairo-script-surface-create">cairo_script_surface_create</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-surface-create-for-target"><link linkend="cairo-script-surface-create-for-target">cairo_script_surface_create_for_target</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-script-write-comment"><link linkend="cairo-script-write-comment">cairo_script_write_comment</link>, function in <link linkend="cairo-Script-Surfaces">Script Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-select-font-face"><link linkend="cairo-select-font-face">cairo_select_font_face</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-antialias"><link linkend="cairo-set-antialias">cairo_set_antialias</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-dash"><link linkend="cairo-set-dash">cairo_set_dash</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-fill-rule"><link linkend="cairo-set-fill-rule">cairo_set_fill_rule</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-face"><link linkend="cairo-set-font-face">cairo_set_font_face</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-matrix"><link linkend="cairo-set-font-matrix">cairo_set_font_matrix</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-options"><link linkend="cairo-set-font-options">cairo_set_font_options</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-font-size"><link linkend="cairo-set-font-size">cairo_set_font_size</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-line-cap"><link linkend="cairo-set-line-cap">cairo_set_line_cap</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-line-join"><link linkend="cairo-set-line-join">cairo_set_line_join</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-line-width"><link linkend="cairo-set-line-width">cairo_set_line_width</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-matrix"><link linkend="cairo-set-matrix">cairo_set_matrix</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-miter-limit"><link linkend="cairo-set-miter-limit">cairo_set_miter_limit</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-operator"><link linkend="cairo-set-operator">cairo_set_operator</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-scaled-font"><link linkend="cairo-set-scaled-font">cairo_set_scaled_font</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source"><link linkend="cairo-set-source">cairo_set_source</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source-rgb"><link linkend="cairo-set-source-rgb">cairo_set_source_rgb</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source-rgba"><link linkend="cairo-set-source-rgba">cairo_set_source_rgba</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-source-surface"><link linkend="cairo-set-source-surface">cairo_set_source_surface</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-tolerance"><link linkend="cairo-set-tolerance">cairo_set_tolerance</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-set-user-data"><link linkend="cairo-set-user-data">cairo_set_user_data</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-glyphs"><link linkend="cairo-show-glyphs">cairo_show_glyphs</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-page"><link linkend="cairo-show-page">cairo_show_page</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-text"><link linkend="cairo-show-text">cairo_show_text</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-show-text-glyphs"><link linkend="cairo-show-text-glyphs">cairo_show_text_glyphs</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-status"><link linkend="cairo-status">cairo_status</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-status-t"><link linkend="cairo-status-t">cairo_status_t</link>, enum in <link linkend="cairo-Error-handling">Error handling</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-status-to-string"><link linkend="cairo-status-to-string">cairo_status_to_string</link>, function in <link linkend="cairo-Error-handling">Error handling</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-stroke"><link linkend="cairo-stroke">cairo_stroke</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-stroke-extents"><link linkend="cairo-stroke-extents">cairo_stroke_extents</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-stroke-preserve"><link linkend="cairo-stroke-preserve">cairo_stroke_preserve</link>, function in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-subpixel-order-t"><link linkend="cairo-subpixel-order-t">cairo_subpixel_order_t</link>, enum in <link linkend="cairo-cairo-font-options-t">cairo_font_options_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-copy-page"><link linkend="cairo-surface-copy-page">cairo_surface_copy_page</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-for-rectangle"><link linkend="cairo-surface-create-for-rectangle">cairo_surface_create_for_rectangle</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-observer"><link linkend="cairo-surface-create-observer">cairo_surface_create_observer</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-similar"><link linkend="cairo-surface-create-similar">cairo_surface_create_similar</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-create-similar-image"><link linkend="cairo-surface-create-similar-image">cairo_surface_create_similar_image</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-destroy"><link linkend="cairo-surface-destroy">cairo_surface_destroy</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-finish"><link linkend="cairo-surface-finish">cairo_surface_finish</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-flush"><link linkend="cairo-surface-flush">cairo_surface_flush</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-content"><link linkend="cairo-surface-get-content">cairo_surface_get_content</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-device"><link linkend="cairo-surface-get-device">cairo_surface_get_device</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-device-offset"><link linkend="cairo-surface-get-device-offset">cairo_surface_get_device_offset</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-device-scale"><link linkend="cairo-surface-get-device-scale">cairo_surface_get_device_scale</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-fallback-resolution"><link linkend="cairo-surface-get-fallback-resolution">cairo_surface_get_fallback_resolution</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-font-options"><link linkend="cairo-surface-get-font-options">cairo_surface_get_font_options</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-mime-data"><link linkend="cairo-surface-get-mime-data">cairo_surface_get_mime_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-reference-count"><link linkend="cairo-surface-get-reference-count">cairo_surface_get_reference_count</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-type"><link linkend="cairo-surface-get-type">cairo_surface_get_type</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-get-user-data"><link linkend="cairo-surface-get-user-data">cairo_surface_get_user_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-has-show-text-glyphs"><link linkend="cairo-surface-has-show-text-glyphs">cairo_surface_has_show_text_glyphs</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-map-to-image"><link linkend="cairo-surface-map-to-image">cairo_surface_map_to_image</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-mark-dirty"><link linkend="cairo-surface-mark-dirty">cairo_surface_mark_dirty</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-mark-dirty-rectangle"><link linkend="cairo-surface-mark-dirty-rectangle">cairo_surface_mark_dirty_rectangle</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-fill-callback"><link linkend="cairo-surface-observer-add-fill-callback">cairo_surface_observer_add_fill_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-finish-callback"><link linkend="cairo-surface-observer-add-finish-callback">cairo_surface_observer_add_finish_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-flush-callback"><link linkend="cairo-surface-observer-add-flush-callback">cairo_surface_observer_add_flush_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-glyphs-callback"><link linkend="cairo-surface-observer-add-glyphs-callback">cairo_surface_observer_add_glyphs_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-mask-callback"><link linkend="cairo-surface-observer-add-mask-callback">cairo_surface_observer_add_mask_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-paint-callback"><link linkend="cairo-surface-observer-add-paint-callback">cairo_surface_observer_add_paint_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-add-stroke-callback"><link linkend="cairo-surface-observer-add-stroke-callback">cairo_surface_observer_add_stroke_callback</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-callback-t"><link linkend="cairo-surface-observer-callback-t">cairo_surface_observer_callback_t</link>, user_function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-elapsed"><link linkend="cairo-surface-observer-elapsed">cairo_surface_observer_elapsed</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-mode-t"><link linkend="cairo-surface-observer-mode-t">cairo_surface_observer_mode_t</link>, enum in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-observer-print"><link linkend="cairo-surface-observer-print">cairo_surface_observer_print</link>, function in <link linkend="cairo-cairo-surface-observer">cairo-surface-observer</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-reference"><link linkend="cairo-surface-reference">cairo_surface_reference</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-device-offset"><link linkend="cairo-surface-set-device-offset">cairo_surface_set_device_offset</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-device-scale"><link linkend="cairo-surface-set-device-scale">cairo_surface_set_device_scale</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-fallback-resolution"><link linkend="cairo-surface-set-fallback-resolution">cairo_surface_set_fallback_resolution</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-mime-data"><link linkend="cairo-surface-set-mime-data">cairo_surface_set_mime_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-set-user-data"><link linkend="cairo-surface-set-user-data">cairo_surface_set_user_data</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-show-page"><link linkend="cairo-surface-show-page">cairo_surface_show_page</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-status"><link linkend="cairo-surface-status">cairo_surface_status</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-supports-mime-type"><link linkend="cairo-surface-supports-mime-type">cairo_surface_supports_mime_type</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-t"><link linkend="cairo-surface-t">cairo_surface_t</link>, typedef in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-type-t"><link linkend="cairo-surface-type-t">cairo_surface_type_t</link>, enum in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-unmap-image"><link linkend="cairo-surface-unmap-image">cairo_surface_unmap_image</link>, function in <link linkend="cairo-cairo-surface-t">cairo_surface_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-write-to-png"><link linkend="cairo-surface-write-to-png">cairo_surface_write_to_png</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-surface-write-to-png-stream"><link linkend="cairo-surface-write-to-png-stream">cairo_surface_write_to_png_stream</link>, function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-get-versions"><link linkend="cairo-svg-get-versions">cairo_svg_get_versions</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-create"><link linkend="cairo-svg-surface-create">cairo_svg_surface_create</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-create-for-stream"><link linkend="cairo-svg-surface-create-for-stream">cairo_svg_surface_create_for_stream</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-get-document-unit"><link linkend="cairo-svg-surface-get-document-unit">cairo_svg_surface_get_document_unit</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-restrict-to-version"><link linkend="cairo-svg-surface-restrict-to-version">cairo_svg_surface_restrict_to_version</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-surface-set-document-unit"><link linkend="cairo-svg-surface-set-document-unit">cairo_svg_surface_set_document_unit</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-unit-t"><link linkend="cairo-svg-unit-t">cairo_svg_unit_t</link>, enum in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-version-t"><link linkend="cairo-svg-version-t">cairo_svg_version_t</link>, enum in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-svg-version-to-string"><link linkend="cairo-svg-version-to-string">cairo_svg_version_to_string</link>, function in <link linkend="cairo-SVG-Surfaces">SVG Surfaces</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>T</title>
+<indexentry><primaryie linkends="cairo-t"><link linkend="cairo-t">cairo_t</link>, typedef in <link linkend="cairo-cairo-t">cairo_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-tag-begin"><link linkend="cairo-tag-begin">cairo_tag_begin</link>, function in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-TAG-DEST:CAPS"><link linkend="CAIRO-TAG-DEST:CAPS">CAIRO_TAG_DEST</link>, macro in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-tag-end"><link linkend="cairo-tag-end">cairo_tag_end</link>, function in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-TAG-LINK:CAPS"><link linkend="CAIRO-TAG-LINK:CAPS">CAIRO_TAG_LINK</link>, macro in <link linkend="cairo-Tags-and-Links">Tags and Links</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-allocate"><link linkend="cairo-text-cluster-allocate">cairo_text_cluster_allocate</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-flags-t"><link linkend="cairo-text-cluster-flags-t">cairo_text_cluster_flags_t</link>, enum in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-free"><link linkend="cairo-text-cluster-free">cairo_text_cluster_free</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-cluster-t"><link linkend="cairo-text-cluster-t">cairo_text_cluster_t</link>, struct in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-extents"><link linkend="cairo-text-extents">cairo_text_extents</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-extents-t"><link linkend="cairo-text-extents-t">cairo_text_extents_t</link>, struct in <link linkend="cairo-cairo-scaled-font-t">cairo_scaled_font_t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-text-path"><link linkend="cairo-text-path">cairo_text_path</link>, function in <link linkend="cairo-Paths">Paths</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-create"><link linkend="cairo-toy-font-face-create">cairo_toy_font_face_create</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-get-family"><link linkend="cairo-toy-font-face-get-family">cairo_toy_font_face_get_family</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-get-slant"><link linkend="cairo-toy-font-face-get-slant">cairo_toy_font_face_get_slant</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-toy-font-face-get-weight"><link linkend="cairo-toy-font-face-get-weight">cairo_toy_font_face_get_weight</link>, function in <link linkend="cairo-text">text</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-transform"><link linkend="cairo-transform">cairo_transform</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-translate"><link linkend="cairo-translate">cairo_translate</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>U</title>
+<indexentry><primaryie linkends="cairo-user-data-key-t"><link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link>, struct in <link linkend="cairo-Types">Types</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-create"><link linkend="cairo-user-font-face-create">cairo_user_font_face_create</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-init-func"><link linkend="cairo-user-font-face-get-init-func">cairo_user_font_face_get_init_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-render-glyph-func"><link linkend="cairo-user-font-face-get-render-glyph-func">cairo_user_font_face_get_render_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-text-to-glyphs-func"><link linkend="cairo-user-font-face-get-text-to-glyphs-func">cairo_user_font_face_get_text_to_glyphs_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-get-unicode-to-glyph-func"><link linkend="cairo-user-font-face-get-unicode-to-glyph-func">cairo_user_font_face_get_unicode_to_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-init-func"><link linkend="cairo-user-font-face-set-init-func">cairo_user_font_face_set_init_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-render-glyph-func"><link linkend="cairo-user-font-face-set-render-glyph-func">cairo_user_font_face_set_render_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-text-to-glyphs-func"><link linkend="cairo-user-font-face-set-text-to-glyphs-func">cairo_user_font_face_set_text_to_glyphs_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-font-face-set-unicode-to-glyph-func"><link linkend="cairo-user-font-face-set-unicode-to-glyph-func">cairo_user_font_face_set_unicode_to_glyph_func</link>, function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-init-func-t"><link linkend="cairo-user-scaled-font-init-func-t">cairo_user_scaled_font_init_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-render-glyph-func-t"><link linkend="cairo-user-scaled-font-render-glyph-func-t">cairo_user_scaled_font_render_glyph_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-text-to-glyphs-func-t"><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t">cairo_user_scaled_font_text_to_glyphs_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-scaled-font-unicode-to-glyph-func-t"><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t">cairo_user_scaled_font_unicode_to_glyph_func_t</link>, user_function in <link linkend="cairo-User-Fonts">User Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-to-device"><link linkend="cairo-user-to-device">cairo_user_to_device</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-user-to-device-distance"><link linkend="cairo-user-to-device-distance">cairo_user_to_device_distance</link>, function in <link linkend="cairo-Transformations">Transformations</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>V</title>
+<indexentry><primaryie linkends="CAIRO-VERSION:CAPS"><link linkend="CAIRO-VERSION:CAPS">CAIRO_VERSION</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-version"><link linkend="cairo-version">cairo_version</link>, function in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-ENCODE:CAPS"><link linkend="CAIRO-VERSION-ENCODE:CAPS">CAIRO_VERSION_ENCODE</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-MAJOR:CAPS"><link linkend="CAIRO-VERSION-MAJOR:CAPS">CAIRO_VERSION_MAJOR</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-MICRO:CAPS"><link linkend="CAIRO-VERSION-MICRO:CAPS">CAIRO_VERSION_MICRO</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-MINOR:CAPS"><link linkend="CAIRO-VERSION-MINOR:CAPS">CAIRO_VERSION_MINOR</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-STRING:CAPS"><link linkend="CAIRO-VERSION-STRING:CAPS">CAIRO_VERSION_STRING</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-version-string"><link linkend="cairo-version-string">cairo_version_string</link>, function in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+<indexentry><primaryie linkends="CAIRO-VERSION-STRINGIZE:CAPS"><link linkend="CAIRO-VERSION-STRINGIZE:CAPS">CAIRO_VERSION_STRINGIZE</link>, macro in <link linkend="cairo-Version-Information">Version Information</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>W</title>
+<indexentry><primaryie linkends="cairo-win32-font-face-create-for-hfont"><link linkend="cairo-win32-font-face-create-for-hfont">cairo_win32_font_face_create_for_hfont</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-font-face-create-for-logfontw"><link linkend="cairo-win32-font-face-create-for-logfontw">cairo_win32_font_face_create_for_logfontw</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-font-face-create-for-logfontw-hfont"><link linkend="cairo-win32-font-face-create-for-logfontw-hfont">cairo_win32_font_face_create_for_logfontw_hfont</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-printing-surface-create"><link linkend="cairo-win32-printing-surface-create">cairo_win32_printing_surface_create</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-done-font"><link linkend="cairo-win32-scaled-font-done-font">cairo_win32_scaled_font_done_font</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-get-device-to-logical"><link linkend="cairo-win32-scaled-font-get-device-to-logical">cairo_win32_scaled_font_get_device_to_logical</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-get-logical-to-device"><link linkend="cairo-win32-scaled-font-get-logical-to-device">cairo_win32_scaled_font_get_logical_to_device</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-get-metrics-factor"><link linkend="cairo-win32-scaled-font-get-metrics-factor">cairo_win32_scaled_font_get_metrics_factor</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-scaled-font-select-font"><link linkend="cairo-win32-scaled-font-select-font">cairo_win32_scaled_font_select_font</link>, function in <link linkend="cairo-Win32-Fonts">Win32 Fonts</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create"><link linkend="cairo-win32-surface-create">cairo_win32_surface_create</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create-with-ddb"><link linkend="cairo-win32-surface-create-with-ddb">cairo_win32_surface_create_with_ddb</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create-with-dib"><link linkend="cairo-win32-surface-create-with-dib">cairo_win32_surface_create_with_dib</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-create-with-format"><link linkend="cairo-win32-surface-create-with-format">cairo_win32_surface_create_with_format</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-get-dc"><link linkend="cairo-win32-surface-get-dc">cairo_win32_surface_get_dc</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-win32-surface-get-image"><link linkend="cairo-win32-surface-get-image">cairo_win32_surface_get_image</link>, function in <link linkend="cairo-Win32-Surfaces">Win32 Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-write-func-t"><link linkend="cairo-write-func-t">cairo_write_func_t</link>, user_function in <link linkend="cairo-PNG-Support">PNG Support</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>X</title>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-cap-xrender-version"><link linkend="cairo-xcb-device-debug-cap-xrender-version">cairo_xcb_device_debug_cap_xrender_version</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-cap-xshm-version"><link linkend="cairo-xcb-device-debug-cap-xshm-version">cairo_xcb_device_debug_cap_xshm_version</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-get-precision"><link linkend="cairo-xcb-device-debug-get-precision">cairo_xcb_device_debug_get_precision</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-debug-set-precision"><link linkend="cairo-xcb-device-debug-set-precision">cairo_xcb_device_debug_set_precision</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-device-get-connection"><link linkend="cairo-xcb-device-get-connection">cairo_xcb_device_get_connection</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-create"><link linkend="cairo-xcb-surface-create">cairo_xcb_surface_create</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-create-for-bitmap"><link linkend="cairo-xcb-surface-create-for-bitmap">cairo_xcb_surface_create_for_bitmap</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-create-with-xrender-format"><link linkend="cairo-xcb-surface-create-with-xrender-format">cairo_xcb_surface_create_with_xrender_format</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-set-drawable"><link linkend="cairo-xcb-surface-set-drawable">cairo_xcb_surface_set_drawable</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xcb-surface-set-size"><link linkend="cairo-xcb-surface-set-size">cairo_xcb_surface_set_size</link>, function in <link linkend="cairo-XCB-Surfaces">XCB Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-device-debug-cap-xrender-version"><link linkend="cairo-xlib-device-debug-cap-xrender-version">cairo_xlib_device_debug_cap_xrender_version</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-device-debug-get-precision"><link linkend="cairo-xlib-device-debug-get-precision">cairo_xlib_device_debug_get_precision</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-device-debug-set-precision"><link linkend="cairo-xlib-device-debug-set-precision">cairo_xlib_device_debug_set_precision</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-create"><link linkend="cairo-xlib-surface-create">cairo_xlib_surface_create</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-create-for-bitmap"><link linkend="cairo-xlib-surface-create-for-bitmap">cairo_xlib_surface_create_for_bitmap</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-create-with-xrender-format"><link linkend="cairo-xlib-surface-create-with-xrender-format">cairo_xlib_surface_create_with_xrender_format</link>, function in <link linkend="cairo-XLib-XRender-Backend">XLib-XRender Backend</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-depth"><link linkend="cairo-xlib-surface-get-depth">cairo_xlib_surface_get_depth</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-display"><link linkend="cairo-xlib-surface-get-display">cairo_xlib_surface_get_display</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-drawable"><link linkend="cairo-xlib-surface-get-drawable">cairo_xlib_surface_get_drawable</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-height"><link linkend="cairo-xlib-surface-get-height">cairo_xlib_surface_get_height</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-screen"><link linkend="cairo-xlib-surface-get-screen">cairo_xlib_surface_get_screen</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-visual"><link linkend="cairo-xlib-surface-get-visual">cairo_xlib_surface_get_visual</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-width"><link linkend="cairo-xlib-surface-get-width">cairo_xlib_surface_get_width</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-get-xrender-format"><link linkend="cairo-xlib-surface-get-xrender-format">cairo_xlib_surface_get_xrender_format</link>, function in <link linkend="cairo-XLib-XRender-Backend">XLib-XRender Backend</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-set-drawable"><link linkend="cairo-xlib-surface-set-drawable">cairo_xlib_surface_set_drawable</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+<indexentry><primaryie linkends="cairo-xlib-surface-set-size"><link linkend="cairo-xlib-surface-set-size">cairo_xlib_surface_set_size</link>, function in <link linkend="cairo-XLib-Surfaces">XLib Surfaces</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-device.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-device.xml
new file mode 100644
index 0000000..b3f77eb
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-device.xml
@@ -0,0 +1,585 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-device-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-device-t.top_of_page">cairo_device_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_device_t</refname>
+<refpurpose>interface to underlying rendering system</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-device-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-device-reference">cairo_device_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-destroy">cairo_device_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-status">cairo_device_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-finish">cairo_device_finish</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-flush">cairo_device_flush</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-device-type-t"><returnvalue>cairo_device_type_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-get-type">cairo_device_get_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-get-reference-count">cairo_device_get_reference_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-set-user-data">cairo_device_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-device-get-user-data">cairo_device_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-acquire">cairo_device_acquire</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-release">cairo_device_release</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-elapsed">cairo_device_observer_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-fill-elapsed">cairo_device_observer_fill_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-glyphs-elapsed">cairo_device_observer_glyphs_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-mask-elapsed">cairo_device_observer_mask_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-paint-elapsed">cairo_device_observer_paint_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-print">cairo_device_observer_print</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-observer-stroke-elapsed">cairo_device_observer_stroke_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-device-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-device-t">cairo_device_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-device-type-t">cairo_device_type_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-device-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para>Devices are the abstraction Cairo employs for the rendering system
+used by a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>. You can get the device of a surface using
+<link linkend="cairo-surface-get-device"><function>cairo_surface_get_device()</function></link>.</para>
+<para>Devices are created using custom functions specific to the rendering
+system you want to use. See the documentation for the surface types
+for those functions.</para>
+<para>An important function that devices fulfill is sharing access to the
+rendering system between Cairo and your application. If you want to
+access a device directly that you used to draw to with Cairo, you must
+first call <link linkend="cairo-device-flush"><function>cairo_device_flush()</function></link> to ensure that Cairo finishes all
+operations on the device and resets it to a clean state.</para>
+<para>Cairo also provides the functions <link linkend="cairo-device-acquire"><function>cairo_device_acquire()</function></link> and
+<link linkend="cairo-device-release"><function>cairo_device_release()</function></link> to synchronize access to the rendering system
+in a multithreaded environment. This is done internally, but can also
+be used by applications.</para>
+<para>Putting this all together, a function that works with devices should
+look something like this:</para>
+<informalexample><programlisting>
+void
+my_device_modifying_function (cairo_device_t *device)
+{
+ cairo_status_t status;
+
+ // Ensure the device is properly reset
+ cairo_device_flush (device);
+ // Try to acquire the device
+ status = cairo_device_acquire (device);
+ if (status != CAIRO_STATUS_SUCCESS) {
+ printf ("Failed to acquire the device: %s\n", cairo_status_to_string (status));
+ return;
+ }
+
+ // Do the custom operations on the device here.
+ // But do not call any Cairo functions that might acquire devices.
+
+ // Release the device when done.
+ cairo_device_release (device);
+}
+</programlisting></informalexample>
+<note><para>Please refer to the documentation of each backend for
+additional usage requirements, guarantees provided, and
+interactions with existing surface API of the device functions for
+surfaces of that type.
+</para></note>
+
+</refsect1>
+<refsect1 id="cairo-cairo-device-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-device-reference" role="function" condition="since:1.10">
+<title>cairo_device_reference&#160;()</title>
+<indexterm zone="cairo-device-reference" role="1.10"><primary sortas="device_reference">cairo_device_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+cairo_device_reference (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Increases the reference count on <parameter>device</parameter>
+ by one. This prevents
+<parameter>device</parameter>
+ from being destroyed until a matching call to
+<link linkend="cairo-device-destroy"><function>cairo_device_destroy()</function></link> is made.</para>
+<para>Use <link linkend="cairo-device-get-reference-count"><function>cairo_device_get_reference_count()</function></link> to get the number of references
+to a <link linkend="cairo-device-t"><type>cairo_device_t</type></link>.</para>
+<refsect3 id="cairo-device-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-device-t"><type>cairo_device_t</type></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-destroy" role="function" condition="since:1.10">
+<title>cairo_device_destroy&#160;()</title>
+<indexterm zone="cairo-device-destroy" role="1.10"><primary sortas="device_destroy">cairo_device_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_device_destroy (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Decreases the reference count on <parameter>device</parameter>
+ by one. If the result is
+zero, then <parameter>device</parameter>
+ and all associated resources are freed. See
+<link linkend="cairo-device-reference"><function>cairo_device_reference()</function></link>.</para>
+<para>This function may acquire devices if the last reference was dropped.</para>
+<refsect3 id="cairo-device-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-status" role="function" condition="since:1.10">
+<title>cairo_device_status&#160;()</title>
+<indexterm zone="cairo-device-status" role="1.10"><primary sortas="device_status">cairo_device_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_device_status (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this
+device.</para>
+<refsect3 id="cairo-device-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> on success or an error code if
+the device is in an error state.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-finish" role="function" condition="since:1.10">
+<title>cairo_device_finish&#160;()</title>
+<indexterm zone="cairo-device-finish" role="1.10"><primary sortas="device_finish">cairo_device_finish</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_device_finish (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>This function finishes the device and drops all references to
+external resources. All surfaces, fonts and other objects created
+for this <parameter>device</parameter>
+ will be finished, too.
+Further operations on the <parameter>device</parameter>
+ will not affect the <parameter>device</parameter>
+ but
+will instead trigger a <link linkend="CAIRO-STATUS-DEVICE-FINISHED:CAPS"><literal>CAIRO_STATUS_DEVICE_FINISHED</literal></link> error.</para>
+<para>When the last call to <link linkend="cairo-device-destroy"><function>cairo_device_destroy()</function></link> decreases the
+reference count to zero, cairo will call <link linkend="cairo-device-finish"><function>cairo_device_finish()</function></link> if
+it hasn't been called already, before freeing the resources
+associated with the device.</para>
+<para>This function may acquire devices.</para>
+<refsect3 id="cairo-device-finish.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>the <link linkend="cairo-device-t"><type>cairo_device_t</type></link> to finish</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-flush" role="function" condition="since:1.10">
+<title>cairo_device_flush&#160;()</title>
+<indexterm zone="cairo-device-flush" role="1.10"><primary sortas="device_flush">cairo_device_flush</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_device_flush (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Finish any pending operations for the device and also restore any
+temporary modifications cairo has made to the device's state.
+This function must be called before switching from using the
+device with Cairo to operating on it directly with native APIs.
+If the device doesn't support direct access, then this function
+does nothing.</para>
+<para>This function may acquire devices.</para>
+<refsect3 id="cairo-device-flush.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-get-type" role="function" condition="since:1.10">
+<title>cairo_device_get_type&#160;()</title>
+<indexterm zone="cairo-device-get-type" role="1.10"><primary sortas="device_get_type">cairo_device_get_type</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-device-type-t"><returnvalue>cairo_device_type_t</returnvalue></link>
+cairo_device_get_type (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>This function returns the type of the device. See <link linkend="cairo-device-type-t"><type>cairo_device_type_t</type></link>
+for available types.</para>
+<refsect3 id="cairo-device-get-type.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-get-type.returns" role="returns">
+<title>Returns</title>
+<para> The type of <parameter>device</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-get-reference-count" role="function" condition="since:1.10">
+<title>cairo_device_get_reference_count&#160;()</title>
+<indexterm zone="cairo-device-get-reference-count" role="1.10"><primary sortas="device_get_reference_count">cairo_device_get_reference_count</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_device_get_reference_count (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Returns the current reference count of <parameter>device</parameter>
+.</para>
+<refsect3 id="cairo-device-get-reference-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-get-reference-count.returns" role="returns">
+<title>Returns</title>
+<para> the current reference count of <parameter>device</parameter>
+. If the
+object is a nil object, 0 will be returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-set-user-data" role="function" condition="since:1.10">
+<title>cairo_device_set_user_data&#160;()</title>
+<indexterm zone="cairo-device-set-user-data" role="1.10"><primary sortas="device_set_user_data">cairo_device_set_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_device_set_user_data (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>);</programlisting>
+<para>Attach user data to <parameter>device</parameter>
+. To remove user data from a surface,
+call this function with the key that was used to set it and <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+for <parameter>data</parameter>
+.</para>
+<refsect3 id="cairo-device-set-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to attach to the <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> which will be called when the
+<link linkend="cairo-t"><type>cairo_t</type></link> is destroyed or when new user data is attached using the
+same key.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-set-user-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-get-user-data" role="function" condition="since:1.10">
+<title>cairo_device_get_user_data&#160;()</title>
+<indexterm zone="cairo-device-get-user-data" role="1.10"><primary sortas="device_get_user_data">cairo_device_get_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_device_get_user_data (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>);</programlisting>
+<para>Return user data previously attached to <parameter>device</parameter>
+ using the
+specified key. If no user data has been attached with the given
+key this function returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-device-get-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-get-user-data.returns" role="returns">
+<title>Returns</title>
+<para> the user data previously attached or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-acquire" role="function" condition="since:1.10">
+<title>cairo_device_acquire&#160;()</title>
+<indexterm zone="cairo-device-acquire" role="1.10"><primary sortas="device_acquire">cairo_device_acquire</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_device_acquire (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Acquires the <parameter>device</parameter>
+ for the current thread. This function will block
+until no other thread has acquired the device.</para>
+<para>If the return value is <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, you successfully acquired the
+device. From now on your thread owns the device and no other thread will be
+able to acquire it until a matching call to <link linkend="cairo-device-release"><function>cairo_device_release()</function></link>. It is
+allowed to recursively acquire the device multiple times from the same
+thread.</para>
+<note><para>You must never acquire two different devices at the same time
+unless this is explicitly allowed. Otherwise the possibility of deadlocks
+exist.
+
+As various Cairo functions can acquire devices when called, these functions
+may also cause deadlocks when you call them with an acquired device. So you
+must not have a device acquired when calling them. These functions are
+marked in the documentation.
+</para></note>
+<refsect3 id="cairo-device-acquire.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-device-acquire.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> on success or an error code if
+the device is in an error state and could not be
+acquired. After a successful call to <link linkend="cairo-device-acquire"><function>cairo_device_acquire()</function></link>,
+a matching call to <link linkend="cairo-device-release"><function>cairo_device_release()</function></link> is required.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-release" role="function" condition="since:1.10">
+<title>cairo_device_release&#160;()</title>
+<indexterm zone="cairo-device-release" role="1.10"><primary sortas="device_release">cairo_device_release</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_device_release (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Releases a <parameter>device</parameter>
+ previously acquired using <link linkend="cairo-device-acquire"><function>cairo_device_acquire()</function></link>. See
+that function for details.</para>
+<refsect3 id="cairo-device-release.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-observer-elapsed" role="function">
+<title>cairo_device_observer_elapsed&#160;()</title>
+<indexterm zone="cairo-device-observer-elapsed"><primary sortas="device_observer_elapsed">cairo_device_observer_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_device_observer_elapsed (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-device-observer-fill-elapsed" role="function">
+<title>cairo_device_observer_fill_elapsed&#160;()</title>
+<indexterm zone="cairo-device-observer-fill-elapsed"><primary sortas="device_observer_fill_elapsed">cairo_device_observer_fill_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_device_observer_fill_elapsed (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-device-observer-glyphs-elapsed" role="function">
+<title>cairo_device_observer_glyphs_elapsed&#160;()</title>
+<indexterm zone="cairo-device-observer-glyphs-elapsed"><primary sortas="device_observer_glyphs_elapsed">cairo_device_observer_glyphs_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_device_observer_glyphs_elapsed (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-device-observer-mask-elapsed" role="function">
+<title>cairo_device_observer_mask_elapsed&#160;()</title>
+<indexterm zone="cairo-device-observer-mask-elapsed"><primary sortas="device_observer_mask_elapsed">cairo_device_observer_mask_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_device_observer_mask_elapsed (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-device-observer-paint-elapsed" role="function">
+<title>cairo_device_observer_paint_elapsed&#160;()</title>
+<indexterm zone="cairo-device-observer-paint-elapsed"><primary sortas="device_observer_paint_elapsed">cairo_device_observer_paint_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_device_observer_paint_elapsed (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-device-observer-print" role="function">
+<title>cairo_device_observer_print&#160;()</title>
+<indexterm zone="cairo-device-observer-print"><primary sortas="device_observer_print">cairo_device_observer_print</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_device_observer_print (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-device-observer-stroke-elapsed" role="function">
+<title>cairo_device_observer_stroke_elapsed&#160;()</title>
+<indexterm zone="cairo-device-observer-stroke-elapsed"><primary sortas="device_observer_stroke_elapsed">cairo_device_observer_stroke_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_device_observer_stroke_elapsed (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-device-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-device-t" role="typedef" condition="since:1.10">
+<title>cairo_device_t</title>
+<indexterm zone="cairo-device-t" role="1.10"><primary sortas="device_t">cairo_device_t</primary></indexterm>
+<programlisting language="C">typedef struct _cairo_device cairo_device_t;
+</programlisting>
+<para>A <link linkend="cairo-device-t"><type>cairo_device_t</type></link> represents the driver interface for drawing
+operations to a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>. There are different subtypes of
+<link linkend="cairo-device-t"><type>cairo_device_t</type></link> for different drawing backends; for example,
+<link linkend="cairo-egl-device-create"><function>cairo_egl_device_create()</function></link> creates a device that wraps an EGL display and
+context.</para>
+<para>The type of a device can be queried with <link linkend="cairo-device-get-type"><function>cairo_device_get_type()</function></link>.</para>
+<para>Memory management of <link linkend="cairo-device-t"><type>cairo_device_t</type></link> is done with
+<link linkend="cairo-device-reference"><function>cairo_device_reference()</function></link> and <link linkend="cairo-device-destroy"><function>cairo_device_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-device-type-t" role="enum" condition="since:1.10">
+<title>enum cairo_device_type_t</title>
+<indexterm zone="cairo-device-type-t" role="1.10"><primary sortas="device_type_t">cairo_device_type_t</primary></indexterm>
+<para><link linkend="cairo-device-type-t"><type>cairo_device_type_t</type></link> is used to describe the type of a given
+device. The devices types are also known as "backends" within cairo.</para>
+<para>The device type can be queried with <link linkend="cairo-device-get-type"><function>cairo_device_get_type()</function></link></para>
+<para>The various <link linkend="cairo-device-t"><type>cairo_device_t</type></link> functions can be used with devices of
+any type, but some backends also provide type-specific functions
+that must only be called with a device of the appropriate
+type. These functions have names that begin with
+<literal>cairo_<emphasis>type</emphasis>_device</literal> such as
+<link linkend="cairo-xcb-device-debug-cap-xrender-version"><function>cairo_xcb_device_debug_cap_xrender_version()</function></link>.</para>
+<para>The behavior of calling a type-specific function with a device of
+the wrong type is undefined.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-device-type-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-DRM:CAPS">CAIRO_DEVICE_TYPE_DRM</para></entry>
+<entry role="enum_member_description"><para>The device is of type Direct Render Manager, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-GL:CAPS">CAIRO_DEVICE_TYPE_GL</para></entry>
+<entry role="enum_member_description"><para>The device is of type OpenGL, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-SCRIPT:CAPS">CAIRO_DEVICE_TYPE_SCRIPT</para></entry>
+<entry role="enum_member_description"><para>The device is of type script, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-XCB:CAPS">CAIRO_DEVICE_TYPE_XCB</para></entry>
+<entry role="enum_member_description"><para>The device is of type xcb, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-XLIB:CAPS">CAIRO_DEVICE_TYPE_XLIB</para></entry>
+<entry role="enum_member_description"><para>The device is of type xlib, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-XML:CAPS">CAIRO_DEVICE_TYPE_XML</para></entry>
+<entry role="enum_member_description"><para>The device is of type XML, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-COGL:CAPS">CAIRO_DEVICE_TYPE_COGL</para></entry>
+<entry role="enum_member_description"><para>The device is of type cogl, since 1.12</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-WIN32:CAPS">CAIRO_DEVICE_TYPE_WIN32</para></entry>
+<entry role="enum_member_description"><para>The device is of type win32, since 1.12</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-DEVICE-TYPE-INVALID:CAPS">CAIRO_DEVICE_TYPE_INVALID</para></entry>
+<entry role="enum_member_description"><para>The device is invalid, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-device-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-font-face.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-font-face.xml
new file mode 100644
index 0000000..c62bfb5
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-font-face.xml
@@ -0,0 +1,358 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-font-face-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-font-face-t.top_of_page">cairo_font_face_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_font_face_t</refname>
+<refpurpose>Base class for font faces</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-font-face-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-font-face-reference">cairo_font_face_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-face-destroy">cairo_font_face_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-face-status">cairo_font_face_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-type-t"><returnvalue>cairo_font_type_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-face-get-type">cairo_font_face_get_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-face-get-reference-count">cairo_font_face_get_reference_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-face-set-user-data">cairo_font_face_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-font-face-get-user-data">cairo_font_face_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-font-face-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-font-face-t">cairo_font_face_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-font-type-t">cairo_font_type_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-font-face-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> represents a particular font at a particular weight,
+slant, and other characteristic but no size, transformation, or size.</para>
+<para>Font faces are created using <firstterm>font-backend</firstterm>-specific
+constructors, typically of the form
+<function>cairo_<emphasis>backend</emphasis>_font_face_create(<!-- -->)</function>,
+or implicitly using the <firstterm>toy</firstterm> text API by way of
+<link linkend="cairo-select-font-face"><function>cairo_select_font_face()</function></link>. The resulting face can be accessed using
+<link linkend="cairo-get-font-face"><function>cairo_get_font_face()</function></link>.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-font-face-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-font-face-reference" role="function" condition="since:1.0">
+<title>cairo_font_face_reference&#160;()</title>
+<indexterm zone="cairo-font-face-reference" role="1.0"><primary sortas="font_face_reference">cairo_font_face_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_font_face_reference (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</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>Use <link linkend="cairo-font-face-get-reference-count"><function>cairo_font_face_get_reference_count()</function></link> to get the number of
+references to a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>.</para>
+<refsect3 id="cairo-font-face-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>, (may be <link linkend="NULL:CAPS"><literal>NULL</literal></link> in which case this
+function does nothing).</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-face-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-face-destroy" role="function" condition="since:1.0">
+<title>cairo_font_face_destroy&#160;()</title>
+<indexterm zone="cairo-font-face-destroy" role="1.0"><primary sortas="font_face_destroy">cairo_font_face_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_face_destroy (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</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>
+<refsect3 id="cairo-font-face-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-face-status" role="function" condition="since:1.0">
+<title>cairo_font_face_status&#160;()</title>
+<indexterm zone="cairo-font-face-status" role="1.0"><primary sortas="font_face_status">cairo_font_face_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_font_face_status (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this
+font face</para>
+<refsect3 id="cairo-font-face-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-face-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or another error such as
+<link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-face-get-type" role="function" condition="since:1.2">
+<title>cairo_font_face_get_type&#160;()</title>
+<indexterm zone="cairo-font-face-get-type" role="1.2"><primary sortas="font_face_get_type">cairo_font_face_get_type</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-type-t"><returnvalue>cairo_font_type_t</returnvalue></link>
+cairo_font_face_get_type (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>This function returns the type of the backend used to create
+a font face. See <link linkend="cairo-font-type-t"><type>cairo_font_type_t</type></link> for available types.</para>
+<refsect3 id="cairo-font-face-get-type.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-face-get-type.returns" role="returns">
+<title>Returns</title>
+<para> The type of <parameter>font_face</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-font-face-get-reference-count" role="function" condition="since:1.4">
+<title>cairo_font_face_get_reference_count&#160;()</title>
+<indexterm zone="cairo-font-face-get-reference-count" role="1.4"><primary sortas="font_face_get_reference_count">cairo_font_face_get_reference_count</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_font_face_get_reference_count (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Returns the current reference count of <parameter>font_face</parameter>
+.</para>
+<refsect3 id="cairo-font-face-get-reference-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-face-get-reference-count.returns" role="returns">
+<title>Returns</title>
+<para> the current reference count of <parameter>font_face</parameter>
+. If the
+object is a nil object, 0 will be returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-font-face-set-user-data" role="function" condition="since:1.0">
+<title>cairo_font_face_set_user_data&#160;()</title>
+<indexterm zone="cairo-font-face-set-user-data" role="1.0"><primary sortas="font_face_set_user_data">cairo_font_face_set_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_font_face_set_user_data (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>);</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 <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+for <parameter>data</parameter>
+.</para>
+<refsect3 id="cairo-font-face-set-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to attach to the font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-face-set-user-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-face-get-user-data" role="function" condition="since:1.0">
+<title>cairo_font_face_get_user_data&#160;()</title>
+<indexterm zone="cairo-font-face-get-user-data" role="1.0"><primary sortas="font_face_get_user_data">cairo_font_face_get_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_font_face_get_user_data (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>);</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 <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-font-face-get-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-face-get-user-data.returns" role="returns">
+<title>Returns</title>
+<para> the user data previously attached or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-font-face-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-font-face-t" role="typedef" condition="since:1.0">
+<title>cairo_font_face_t</title>
+<indexterm zone="cairo-font-face-t" role="1.0"><primary sortas="font_face_t">cairo_font_face_t</primary></indexterm>
+<programlisting language="C">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 shearing 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>There are various types of font faces, depending on the
+<firstterm>font backend</firstterm> they use. The type of a
+font face can be queried using <link linkend="cairo-font-face-get-type"><function>cairo_font_face_get_type()</function></link>.</para>
+<para>Memory management of <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> is done with
+<link linkend="cairo-font-face-reference"><function>cairo_font_face_reference()</function></link> and <link linkend="cairo-font-face-destroy"><function>cairo_font_face_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-type-t" role="enum" condition="since:1.2">
+<title>enum cairo_font_type_t</title>
+<indexterm zone="cairo-font-type-t" role="1.2"><primary sortas="font_type_t">cairo_font_type_t</primary></indexterm>
+<para><link linkend="cairo-font-type-t"><type>cairo_font_type_t</type></link> is used to describe the type of a given font
+face or scaled font. The font types are also known as "font
+backends" within cairo.</para>
+<para>The type of a font face is determined by the function used to
+create it, which will generally be of the form
+<function>cairo_<emphasis>type</emphasis>_font_face_create(<!-- -->)</function>.
+The font face type can be queried with <link linkend="cairo-font-face-get-type"><function>cairo_font_face_get_type()</function></link></para>
+<para>The various <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> functions can be used with a font face
+of any type.</para>
+<para>The type of a scaled font is determined by the type of the font
+face passed to <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>. The scaled font type can
+be queried with <link linkend="cairo-scaled-font-get-type"><function>cairo_scaled_font_get_type()</function></link></para>
+<para>The various <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> functions can be used with scaled
+fonts of any type, but some font backends also provide
+type-specific functions that must only be called with a scaled font
+of the appropriate type. These functions have names that begin with
+<function>cairo_<emphasis>type</emphasis>_scaled_font(<!-- -->)</function>
+such as <link linkend="cairo-ft-scaled-font-lock-face"><function>cairo_ft_scaled_font_lock_face()</function></link>.</para>
+<para>The behavior of calling a type-specific function with a scaled font
+of the wrong type is undefined.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-font-type-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-TYPE-TOY:CAPS">CAIRO_FONT_TYPE_TOY</para></entry>
+<entry role="enum_member_description"><para>The font was created using cairo's toy font api (Since: 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-TYPE-FT:CAPS">CAIRO_FONT_TYPE_FT</para></entry>
+<entry role="enum_member_description"><para>The font is of type FreeType (Since: 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-TYPE-WIN32:CAPS">CAIRO_FONT_TYPE_WIN32</para></entry>
+<entry role="enum_member_description"><para>The font is of type Win32 (Since: 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-TYPE-QUARTZ:CAPS">CAIRO_FONT_TYPE_QUARTZ</para></entry>
+<entry role="enum_member_description"><para>The font is of type Quartz (Since: 1.6, in 1.2 and
+1.4 it was named CAIRO_FONT_TYPE_ATSUI)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-TYPE-USER:CAPS">CAIRO_FONT_TYPE_USER</para></entry>
+<entry role="enum_member_description"><para>The font was create using cairo's user font api (Since: 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-font-face-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-font-options.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-font-options.xml
new file mode 100644
index 0000000..d058175
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-font-options.xml
@@ -0,0 +1,677 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-font-options-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-font-options-t.top_of_page">cairo_font_options_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_font_options_t</refname>
+<refpurpose>How a font should be rendered</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-font-options-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-font-options-t"><returnvalue>cairo_font_options_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-font-options-create">cairo_font_options_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-options-t"><returnvalue>cairo_font_options_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-font-options-copy">cairo_font_options_copy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-destroy">cairo_font_options_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-status">cairo_font_options_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-merge">cairo_font_options_merge</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="long"><returnvalue>long</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-hash">cairo_font_options_hash</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-equal">cairo_font_options_equal</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-set-antialias">cairo_font_options_set_antialias</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-antialias-t"><returnvalue>cairo_antialias_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-get-antialias">cairo_font_options_get_antialias</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-set-subpixel-order">cairo_font_options_set_subpixel_order</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-subpixel-order-t"><returnvalue>cairo_subpixel_order_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-get-subpixel-order">cairo_font_options_get_subpixel_order</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-set-hint-style">cairo_font_options_set_hint_style</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-hint-style-t"><returnvalue>cairo_hint_style_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-get-hint-style">cairo_font_options_get_hint_style</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-set-hint-metrics">cairo_font_options_set_hint_metrics</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-hint-metrics-t"><returnvalue>cairo_hint_metrics_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-get-hint-metrics">cairo_font_options_get_hint_metrics</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-font-options-get-variations">cairo_font_options_get_variations</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-options-set-variations">cairo_font_options_set_variations</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-font-options-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-font-options-t">cairo_font_options_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-subpixel-order-t">cairo_subpixel_order_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-hint-style-t">cairo_hint_style_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-hint-metrics-t">cairo_hint_metrics_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-font-options-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The font options specify how fonts should be rendered. Most of the
+time the font options implied by a surface are just right and do not
+need any changes, but for pixel-based targets tweaking font options
+may result in superior output on a particular display.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-font-options-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-font-options-create" role="function" condition="since:1.0">
+<title>cairo_font_options_create&#160;()</title>
+<indexterm zone="cairo-font-options-create" role="1.0"><primary sortas="font_options_create">cairo_font_options_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-options-t"><returnvalue>cairo_font_options_t</returnvalue></link>&#160;*
+cairo_font_options_create (<parameter><type>void</type></parameter>);</programlisting>
+<para>Allocates a new font options object with all options initialized
+ to default values.</para>
+<refsect3 id="cairo-font-options-create.returns" role="returns">
+<title>Returns</title>
+<para> a newly allocated <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link>. Free with
+<link linkend="cairo-font-options-destroy"><function>cairo_font_options_destroy()</function></link>. This function always returns a
+valid pointer; if memory cannot be allocated, then a special
+error object is returned where all operations on the object do nothing.
+You can check for this with <link linkend="cairo-font-options-status"><function>cairo_font_options_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-copy" role="function" condition="since:1.0">
+<title>cairo_font_options_copy&#160;()</title>
+<indexterm zone="cairo-font-options-copy" role="1.0"><primary sortas="font_options_copy">cairo_font_options_copy</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-options-t"><returnvalue>cairo_font_options_t</returnvalue></link>&#160;*
+cairo_font_options_copy (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *original</parameter>);</programlisting>
+<para>Allocates a new font options object copying the option values from
+ <parameter>original</parameter>
+.</para>
+<refsect3 id="cairo-font-options-copy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>original</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-copy.returns" role="returns">
+<title>Returns</title>
+<para> a newly allocated <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link>. Free with
+<link linkend="cairo-font-options-destroy"><function>cairo_font_options_destroy()</function></link>. This function always returns a
+valid pointer; if memory cannot be allocated, then a special
+error object is returned where all operations on the object do nothing.
+You can check for this with <link linkend="cairo-font-options-status"><function>cairo_font_options_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-destroy" role="function" condition="since:1.0">
+<title>cairo_font_options_destroy&#160;()</title>
+<indexterm zone="cairo-font-options-destroy" role="1.0"><primary sortas="font_options_destroy">cairo_font_options_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_destroy (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Destroys a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> object created with
+<link linkend="cairo-font-options-create"><function>cairo_font_options_create()</function></link> or <link linkend="cairo-font-options-copy"><function>cairo_font_options_copy()</function></link>.</para>
+<refsect3 id="cairo-font-options-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-status" role="function" condition="since:1.0">
+<title>cairo_font_options_status&#160;()</title>
+<indexterm zone="cairo-font-options-status" role="1.0"><primary sortas="font_options_status">cairo_font_options_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_font_options_status (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this
+font options object</para>
+<refsect3 id="cairo-font-options-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-merge" role="function" condition="since:1.0">
+<title>cairo_font_options_merge&#160;()</title>
+<indexterm zone="cairo-font-options-merge" role="1.0"><primary sortas="font_options_merge">cairo_font_options_merge</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_merge (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *other</parameter>);</programlisting>
+<para>Merges non-default options from <parameter>other</parameter>
+ into <parameter>options</parameter>
+, replacing
+existing values. This operation can be thought of as somewhat
+similar to compositing <parameter>other</parameter>
+ onto <parameter>options</parameter>
+ with the operation
+of <link linkend="CAIRO-OPERATOR-OVER:CAPS"><literal>CAIRO_OPERATOR_OVER</literal></link>.</para>
+<refsect3 id="cairo-font-options-merge.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>another <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-hash" role="function" condition="since:1.0">
+<title>cairo_font_options_hash&#160;()</title>
+<indexterm zone="cairo-font-options-hash" role="1.0"><primary sortas="font_options_hash">cairo_font_options_hash</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="long"><returnvalue>long</returnvalue></link>
+cairo_font_options_hash (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Compute a hash for the font options object; this value will
+be useful when storing an object containing a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link>
+in a hash table.</para>
+<refsect3 id="cairo-font-options-hash.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-hash.returns" role="returns">
+<title>Returns</title>
+<para> the hash value for the font options object.
+The return value can be cast to a 32-bit type if a
+32-bit hash value is needed.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-equal" role="function" condition="since:1.0">
+<title>cairo_font_options_equal&#160;()</title>
+<indexterm zone="cairo-font-options-equal" role="1.0"><primary sortas="font_options_equal">cairo_font_options_equal</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_font_options_equal (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *other</parameter>);</programlisting>
+<para>Compares two font options objects for equality.</para>
+<refsect3 id="cairo-font-options-equal.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>another <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-equal.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if all fields of the two font options objects match.
+Note that this function will return <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if either object is in
+error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-set-antialias" role="function" condition="since:1.0">
+<title>cairo_font_options_set_antialias&#160;()</title>
+<indexterm zone="cairo-font-options-set-antialias" role="1.0"><primary sortas="font_options_set_antialias">cairo_font_options_set_antialias</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_set_antialias (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter><link linkend="cairo-antialias-t"><type>cairo_antialias_t</type></link> antialias</parameter>);</programlisting>
+<para>Sets the antialiasing mode for the font options object. This
+specifies the type of antialiasing to do when rendering text.</para>
+<refsect3 id="cairo-font-options-set-antialias.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>antialias</para></entry>
+<entry role="parameter_description"><para>the new antialiasing mode</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-get-antialias" role="function" condition="since:1.0">
+<title>cairo_font_options_get_antialias&#160;()</title>
+<indexterm zone="cairo-font-options-get-antialias" role="1.0"><primary sortas="font_options_get_antialias">cairo_font_options_get_antialias</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-antialias-t"><returnvalue>cairo_antialias_t</returnvalue></link>
+cairo_font_options_get_antialias (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Gets the antialiasing mode for the font options object.</para>
+<refsect3 id="cairo-font-options-get-antialias.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-get-antialias.returns" role="returns">
+<title>Returns</title>
+<para> the antialiasing mode</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-set-subpixel-order" role="function" condition="since:1.0">
+<title>cairo_font_options_set_subpixel_order&#160;()</title>
+<indexterm zone="cairo-font-options-set-subpixel-order" role="1.0"><primary sortas="font_options_set_subpixel_order">cairo_font_options_set_subpixel_order</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_set_subpixel_order (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter><link linkend="cairo-subpixel-order-t"><type>cairo_subpixel_order_t</type></link> subpixel_order</parameter>);</programlisting>
+<para>Sets the subpixel order for the font options object. The subpixel
+order specifies the order of color elements within each pixel on
+the display device when rendering with an antialiasing mode of
+<link linkend="CAIRO-ANTIALIAS-SUBPIXEL:CAPS"><literal>CAIRO_ANTIALIAS_SUBPIXEL</literal></link>. See the documentation for
+<link linkend="cairo-subpixel-order-t"><type>cairo_subpixel_order_t</type></link> for full details.</para>
+<refsect3 id="cairo-font-options-set-subpixel-order.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>subpixel_order</para></entry>
+<entry role="parameter_description"><para>the new subpixel order</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-get-subpixel-order" role="function" condition="since:1.0">
+<title>cairo_font_options_get_subpixel_order&#160;()</title>
+<indexterm zone="cairo-font-options-get-subpixel-order" role="1.0"><primary sortas="font_options_get_subpixel_order">cairo_font_options_get_subpixel_order</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-subpixel-order-t"><returnvalue>cairo_subpixel_order_t</returnvalue></link>
+cairo_font_options_get_subpixel_order (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Gets the subpixel order for the font options object.
+See the documentation for <link linkend="cairo-subpixel-order-t"><type>cairo_subpixel_order_t</type></link> for full details.</para>
+<refsect3 id="cairo-font-options-get-subpixel-order.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-get-subpixel-order.returns" role="returns">
+<title>Returns</title>
+<para> the subpixel order for the font options object</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-set-hint-style" role="function" condition="since:1.0">
+<title>cairo_font_options_set_hint_style&#160;()</title>
+<indexterm zone="cairo-font-options-set-hint-style" role="1.0"><primary sortas="font_options_set_hint_style">cairo_font_options_set_hint_style</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_set_hint_style (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter><link linkend="cairo-hint-style-t"><type>cairo_hint_style_t</type></link> hint_style</parameter>);</programlisting>
+<para>Sets the hint style for font outlines for the font options object.
+This controls whether to fit font outlines to the pixel grid,
+and if so, whether to optimize for fidelity or contrast.
+See the documentation for <link linkend="cairo-hint-style-t"><type>cairo_hint_style_t</type></link> for full details.</para>
+<refsect3 id="cairo-font-options-set-hint-style.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>hint_style</para></entry>
+<entry role="parameter_description"><para>the new hint style</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-get-hint-style" role="function" condition="since:1.0">
+<title>cairo_font_options_get_hint_style&#160;()</title>
+<indexterm zone="cairo-font-options-get-hint-style" role="1.0"><primary sortas="font_options_get_hint_style">cairo_font_options_get_hint_style</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-hint-style-t"><returnvalue>cairo_hint_style_t</returnvalue></link>
+cairo_font_options_get_hint_style (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Gets the hint style for font outlines for the font options object.
+See the documentation for <link linkend="cairo-hint-style-t"><type>cairo_hint_style_t</type></link> for full details.</para>
+<refsect3 id="cairo-font-options-get-hint-style.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-get-hint-style.returns" role="returns">
+<title>Returns</title>
+<para> the hint style for the font options object</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-set-hint-metrics" role="function" condition="since:1.0">
+<title>cairo_font_options_set_hint_metrics&#160;()</title>
+<indexterm zone="cairo-font-options-set-hint-metrics" role="1.0"><primary sortas="font_options_set_hint_metrics">cairo_font_options_set_hint_metrics</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_set_hint_metrics (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter><link linkend="cairo-hint-metrics-t"><type>cairo_hint_metrics_t</type></link> hint_metrics</parameter>);</programlisting>
+<para>Sets the metrics hinting mode for the font options object. This
+controls whether metrics are quantized to integer values in
+device units.
+See the documentation for <link linkend="cairo-hint-metrics-t"><type>cairo_hint_metrics_t</type></link> for full details.</para>
+<refsect3 id="cairo-font-options-set-hint-metrics.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>hint_metrics</para></entry>
+<entry role="parameter_description"><para>the new metrics hinting mode</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-get-hint-metrics" role="function" condition="since:1.0">
+<title>cairo_font_options_get_hint_metrics&#160;()</title>
+<indexterm zone="cairo-font-options-get-hint-metrics" role="1.0"><primary sortas="font_options_get_hint_metrics">cairo_font_options_get_hint_metrics</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-hint-metrics-t"><returnvalue>cairo_hint_metrics_t</returnvalue></link>
+cairo_font_options_get_hint_metrics (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Gets the metrics hinting mode for the font options object.
+See the documentation for <link linkend="cairo-hint-metrics-t"><type>cairo_hint_metrics_t</type></link> for full details.</para>
+<refsect3 id="cairo-font-options-get-hint-metrics.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-get-hint-metrics.returns" role="returns">
+<title>Returns</title>
+<para> the metrics hinting mode for the font options object</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-options-get-variations" role="function" condition="since:1.16">
+<title>cairo_font_options_get_variations&#160;()</title>
+<indexterm zone="cairo-font-options-get-variations" role="1.16"><primary sortas="font_options_get_variations">cairo_font_options_get_variations</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_font_options_get_variations (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Gets the OpenType font variations for the font options object.
+See <link linkend="cairo-font-options-set-variations"><function>cairo_font_options_set_variations()</function></link> for details about the
+string format.</para>
+<refsect3 id="cairo-font-options-get-variations.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-font-options-get-variations.returns" role="returns">
+<title>Returns</title>
+<para> the font variations for the font options object. The
+returned string belongs to the <parameter>options</parameter>
+and must not be modified.
+It is valid until either the font options object is destroyed or
+the font variations in this object is modified with
+<link linkend="cairo-font-options-set-variations"><function>cairo_font_options_set_variations()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-font-options-set-variations" role="function" condition="since:1.16">
+<title>cairo_font_options_set_variations&#160;()</title>
+<indexterm zone="cairo-font-options-set-variations" role="1.16"><primary sortas="font_options_set_variations">cairo_font_options_set_variations</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_options_set_variations (<parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *variations</parameter>);</programlisting>
+<para>Sets the OpenType font variations for the font options object.
+Font variations are specified as a string with a format that
+is similar to the CSS font-variation-settings. The string contains
+a comma-separated list of axis assignments, which each assignment
+consists of a 4-character axis name and a value, separated by
+whitespace and optional equals sign.</para>
+<para>Examples:</para>
+<para>wght=200,wdth=140.5</para>
+<para>wght 200 , wdth 140.5</para>
+<refsect3 id="cairo-font-options-set-variations.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>variations</para></entry>
+<entry role="parameter_description"><para>the new font variations, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-font-options-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-font-options-t" role="typedef" condition="since:1.0">
+<title>cairo_font_options_t</title>
+<indexterm zone="cairo-font-options-t" role="1.0"><primary sortas="font_options_t">cairo_font_options_t</primary></indexterm>
+<programlisting language="C">typedef struct _cairo_font_options cairo_font_options_t;
+</programlisting>
+<para>An opaque structure holding all options that are used when
+rendering fonts.</para>
+<para>Individual features of a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> can be set or
+accessed using functions named
+<function>cairo_font_options_set_<emphasis>feature_name</emphasis>()</function> and
+<function>cairo_font_options_get_<emphasis>feature_name</emphasis>()</function>, like
+<link linkend="cairo-font-options-set-antialias"><function>cairo_font_options_set_antialias()</function></link> and
+<link linkend="cairo-font-options-get-antialias"><function>cairo_font_options_get_antialias()</function></link>.</para>
+<para>New features may be added to a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> in the
+future. For this reason, <link linkend="cairo-font-options-copy"><function>cairo_font_options_copy()</function></link>,
+<link linkend="cairo-font-options-equal"><function>cairo_font_options_equal()</function></link>, <link linkend="cairo-font-options-merge"><function>cairo_font_options_merge()</function></link>, and
+<link linkend="cairo-font-options-hash"><function>cairo_font_options_hash()</function></link> should be used to copy, check
+for equality, merge, or compute a hash value of
+<link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> objects.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-subpixel-order-t" role="enum" condition="since:1.0">
+<title>enum cairo_subpixel_order_t</title>
+<indexterm zone="cairo-subpixel-order-t" role="1.0"><primary sortas="subpixel_order_t">cairo_subpixel_order_t</primary></indexterm>
+<para>The subpixel order specifies the order of color elements within
+each pixel on the display device when rendering with an
+antialiasing mode of <link linkend="CAIRO-ANTIALIAS-SUBPIXEL:CAPS"><literal>CAIRO_ANTIALIAS_SUBPIXEL</literal></link>.</para>
+<refsect3 id="cairo-subpixel-order-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SUBPIXEL-ORDER-DEFAULT:CAPS">CAIRO_SUBPIXEL_ORDER_DEFAULT</para></entry>
+<entry role="enum_member_description"><para>Use the default subpixel order for
+ for the target device, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SUBPIXEL-ORDER-RGB:CAPS">CAIRO_SUBPIXEL_ORDER_RGB</para></entry>
+<entry role="enum_member_description"><para>Subpixel elements are arranged horizontally
+ with red at the left, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SUBPIXEL-ORDER-BGR:CAPS">CAIRO_SUBPIXEL_ORDER_BGR</para></entry>
+<entry role="enum_member_description"><para>Subpixel elements are arranged horizontally
+ with blue at the left, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SUBPIXEL-ORDER-VRGB:CAPS">CAIRO_SUBPIXEL_ORDER_VRGB</para></entry>
+<entry role="enum_member_description"><para>Subpixel elements are arranged vertically
+ with red at the top, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SUBPIXEL-ORDER-VBGR:CAPS">CAIRO_SUBPIXEL_ORDER_VBGR</para></entry>
+<entry role="enum_member_description"><para>Subpixel elements are arranged vertically
+ with blue at the top, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-hint-style-t" role="enum" condition="since:1.0">
+<title>enum cairo_hint_style_t</title>
+<indexterm zone="cairo-hint-style-t" role="1.0"><primary sortas="hint_style_t">cairo_hint_style_t</primary></indexterm>
+<para>Specifies the type of hinting to do on font outlines. Hinting
+is the process of fitting outlines to the pixel grid in order
+to improve the appearance of the result. Since hinting outlines
+involves distorting them, it also reduces the faithfulness
+to the original outline shapes. Not all of the outline hinting
+styles are supported by all font backends.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-hint-style-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-STYLE-DEFAULT:CAPS">CAIRO_HINT_STYLE_DEFAULT</para></entry>
+<entry role="enum_member_description"><para>Use the default hint style for
+ font backend and target device, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-STYLE-NONE:CAPS">CAIRO_HINT_STYLE_NONE</para></entry>
+<entry role="enum_member_description"><para>Do not hint outlines, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-STYLE-SLIGHT:CAPS">CAIRO_HINT_STYLE_SLIGHT</para></entry>
+<entry role="enum_member_description"><para>Hint outlines slightly to improve
+ contrast while retaining good fidelity to the original
+ shapes, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-STYLE-MEDIUM:CAPS">CAIRO_HINT_STYLE_MEDIUM</para></entry>
+<entry role="enum_member_description"><para>Hint outlines with medium strength
+ giving a compromise between fidelity to the original shapes
+ and contrast, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-STYLE-FULL:CAPS">CAIRO_HINT_STYLE_FULL</para></entry>
+<entry role="enum_member_description"><para>Hint outlines to maximize contrast, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-hint-metrics-t" role="enum" condition="since:1.0">
+<title>enum cairo_hint_metrics_t</title>
+<indexterm zone="cairo-hint-metrics-t" role="1.0"><primary sortas="hint_metrics_t">cairo_hint_metrics_t</primary></indexterm>
+<para>Specifies whether to hint font metrics; hinting font metrics
+means quantizing them so that they are integer values in
+device space. Doing this improves the consistency of
+letter and line spacing, however it also means that text
+will be laid out differently at different zoom factors.</para>
+<refsect3 id="cairo-hint-metrics-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-METRICS-DEFAULT:CAPS">CAIRO_HINT_METRICS_DEFAULT</para></entry>
+<entry role="enum_member_description"><para>Hint metrics in the default
+ manner for the font backend and target device, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-METRICS-OFF:CAPS">CAIRO_HINT_METRICS_OFF</para></entry>
+<entry role="enum_member_description"><para>Do not hint font metrics, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-HINT-METRICS-ON:CAPS">CAIRO_HINT_METRICS_ON</para></entry>
+<entry role="enum_member_description"><para>Hint font metrics, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-font-options-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-ft.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-ft.xml
new file mode 100644
index 0000000..e68e2ad
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-ft.xml
@@ -0,0 +1,408 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-FreeType-Fonts">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-FreeType-Fonts.top_of_page">FreeType Fonts</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>FreeType Fonts</refname>
+<refpurpose>Font support for FreeType</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-FreeType-Fonts.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-ft-font-face-create-for-ft-face">cairo_ft_font_face_create_for_ft_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-ft-font-face-create-for-pattern">cairo_ft_font_face_create_for_pattern</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ft-font-options-substitute">cairo_ft_font_options_substitute</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="FT-Face"><returnvalue>FT_Face</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ft-scaled-font-lock-face">cairo_ft_scaled_font_lock_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ft-scaled-font-unlock-face">cairo_ft_scaled_font_unlock_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ft-font-face-get-synthesize">cairo_ft_font_face_get_synthesize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ft-font-face-set-synthesize">cairo_ft_font_face_set_synthesize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ft-font-face-unset-synthesize">cairo_ft_font_face_unset_synthesize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-FreeType-Fonts.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-FT-FONT:CAPS">CAIRO_HAS_FT_FONT</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-FC-FONT:CAPS">CAIRO_HAS_FC_FONT</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-ft-synthesize-t">cairo_ft_synthesize_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-FreeType-Fonts.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The FreeType font backend is primarily used to render text on GNU/Linux
+systems, but can be used on other platforms too.</para>
+
+</refsect1>
+<refsect1 id="cairo-FreeType-Fonts.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-ft-font-face-create-for-ft-face" role="function" condition="since:1.0">
+<title>cairo_ft_font_face_create_for_ft_face&#160;()</title>
+<indexterm zone="cairo-ft-font-face-create-for-ft-face" role="1.0"><primary sortas="ft_font_face_create_for_ft_face">cairo_ft_font_face_create_for_ft_face</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_ft_font_face_create_for_ft_face (<parameter><link linkend="FT-Face"><type>FT_Face</type></link> face</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> load_flags</parameter>);</programlisting>
+<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-scaled-font-create"><function>cairo_scaled_font_create()</function></link>. The
+<link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> returned from <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link> is
+also for the FreeType backend and can be used with functions such
+as <link linkend="cairo-ft-scaled-font-lock-face"><function>cairo_ft_scaled_font_lock_face()</function></link>. Note that Cairo may keep a reference
+to the FT_Face alive in a font-cache and the exact lifetime of the reference
+depends highly upon the exact usage pattern and is subject to external
+factors. You must not call <link linkend="FT-Done-Face"><function>FT_Done_Face()</function></link> before the last reference to the
+<link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> has been dropped.</para>
+<para>As an example, below is how one might correctly couple the lifetime of
+the FreeType face object to the <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>.</para>
+<informalexample><programlisting>
+static const cairo_user_data_key_t key;
+
+font_face = cairo_ft_font_face_create_for_ft_face (ft_face, 0);
+status = cairo_font_face_set_user_data (font_face, &amp;key,
+ ft_face, (cairo_destroy_func_t) FT_Done_Face);
+if (status) {
+ cairo_font_face_destroy (font_face);
+ FT_Done_Face (ft_face);
+ return ERROR;
+}
+</programlisting></informalexample>
+<refsect3 id="cairo-ft-font-face-create-for-ft-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>face</para></entry>
+<entry role="parameter_description"><para>A FreeType face object, already opened. This must
+be kept around until the face's ref_count 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></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>load_flags</para></entry>
+<entry role="parameter_description"><para>flags to pass to FT_Load_Glyph when loading
+glyphs from the font. These flags are OR'ed together with
+the flags derived from the <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> passed
+to <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>, so only a few values such
+as <link linkend="FT-LOAD-VERTICAL-LAYOUT:CAPS"><literal>FT_LOAD_VERTICAL_LAYOUT</literal></link>, and <link linkend="FT-LOAD-FORCE-AUTOHINT:CAPS"><literal>FT_LOAD_FORCE_AUTOHINT</literal></link>
+are useful. You should not pass any of the flags affecting
+the load target, such as <link linkend="FT-LOAD-TARGET-LIGHT:CAPS"><literal>FT_LOAD_TARGET_LIGHT</literal></link>.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ft-font-face-create-for-ft-face.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-ft-font-face-create-for-pattern" role="function" condition="since:1.0">
+<title>cairo_ft_font_face_create_for_pattern&#160;()</title>
+<indexterm zone="cairo-ft-font-face-create-for-pattern" role="1.0"><primary sortas="ft_font_face_create_for_pattern">cairo_ft_font_face_create_for_pattern</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_ft_font_face_create_for_pattern (<parameter><link linkend="FcPattern"><type>FcPattern</type></link> *pattern</parameter>);</programlisting>
+<para>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-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>. The
+<link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> returned from <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link> is
+also for the FreeType backend and can be used with functions such
+as <link linkend="cairo-ft-scaled-font-lock-face"><function>cairo_ft_scaled_font_lock_face()</function></link>.</para>
+<para>Font rendering options are represented both here and when you
+call <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>. Font options that have a representation
+in a <link linkend="FcPattern"><type>FcPattern</type></link> must be passed in here; to modify <link linkend="FcPattern"><type>FcPattern</type></link>
+appropriately to reflect the options in a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link>, call
+<link linkend="cairo-ft-font-options-substitute"><function>cairo_ft_font_options_substitute()</function></link>.</para>
+<para>The pattern's FC_FT_FACE element is inspected first and if that is set,
+that will be the FreeType font face associated with the returned cairo
+font face. Otherwise the FC_FILE element is checked. If it's set,
+that and the value of the FC_INDEX element (defaults to zero) of <parameter>pattern</parameter>
+
+are used to load a font face from file.</para>
+<para>If both steps from the previous paragraph fails, <parameter>pattern</parameter>
+ will be passed
+to FcConfigSubstitute, FcDefaultSubstitute, and finally FcFontMatch,
+and the resulting font pattern is used.</para>
+<para>If the FC_FT_FACE element of <parameter>pattern</parameter>
+ is set, the user is responsible
+for making sure that the referenced FT_Face remains valid for the life
+time of the returned <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>. See
+<link linkend="cairo-ft-font-face-create-for-ft-face"><function>cairo_ft_font_face_create_for_ft_face()</function></link> for an example of how to couple
+the life time of the FT_Face to that of the cairo font-face.</para>
+<refsect3 id="cairo-ft-font-face-create-for-pattern.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>A fontconfig pattern. Cairo makes a copy of the pattern
+if it needs to. You are free to modify or free <parameter>pattern</parameter>
+after this call.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ft-font-face-create-for-pattern.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-ft-font-options-substitute" role="function" condition="since:1.0">
+<title>cairo_ft_font_options_substitute&#160;()</title>
+<indexterm zone="cairo-ft-font-options-substitute" role="1.0"><primary sortas="ft_font_options_substitute">cairo_ft_font_options_substitute</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ft_font_options_substitute (<parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>,
+ <parameter><link linkend="FcPattern"><type>FcPattern</type></link> *pattern</parameter>);</programlisting>
+<para>Add options to a <link linkend="FcPattern"><type>FcPattern</type></link> based on a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> font
+options object. Options that are already in the pattern, are not overridden,
+so you should call this function after calling <link linkend="FcConfigSubstitute"><function>FcConfigSubstitute()</function></link> (the
+user's settings should override options based on the surface type), but
+before calling <link linkend="FcDefaultSubstitute"><function>FcDefaultSubstitute()</function></link>.</para>
+<refsect3 id="cairo-ft-font-options-substitute.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> object</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>an existing <link linkend="FcPattern"><type>FcPattern</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-ft-scaled-font-lock-face" role="function" condition="since:1.0">
+<title>cairo_ft_scaled_font_lock_face&#160;()</title>
+<indexterm zone="cairo-ft-scaled-font-lock-face" role="1.0"><primary sortas="ft_scaled_font_lock_face">cairo_ft_scaled_font_lock_face</primary></indexterm>
+<programlisting language="C"><link linkend="FT-Face"><returnvalue>FT_Face</returnvalue></link>
+cairo_ft_scaled_font_lock_face (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>cairo_ft_scaled_font_lock_face() gets the <link linkend="FT-Face"><type>FT_Face</type></link> object from a FreeType
+backend font and scales it appropriately for the font and applies OpenType
+font variations if applicable. You must
+release the face with <link linkend="cairo-ft-scaled-font-unlock-face"><function>cairo_ft_scaled_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-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-scaled-font-lock-face"><function>cairo_ft_scaled_font_lock_face()</function></link> is
+called. <link linkend="cairo-ft-scaled-font-unlock-face"><function>cairo_ft_scaled_font_unlock_face()</function></link> must be called the same number
+of times.</para>
+<para>You must be careful when using this function in a library or in a
+threaded application, because freetype's design makes it unsafe to
+call freetype functions simultaneously from multiple threads, (even
+if using distinct FT_Face objects). Because of this, application
+code that acquires an FT_Face object with this call must add its
+own locking to protect any use of that object, (and which also must
+protect any other calls into cairo as almost any cairo function
+might result in a call into the freetype library).</para>
+<refsect3 id="cairo-ft-scaled-font-lock-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>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-ft-face"><function>cairo_ft_font_face_create_for_ft_face()</function></link>).</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ft-scaled-font-lock-face.returns" role="returns">
+<title>Returns</title>
+<para> The <link linkend="FT-Face"><type>FT_Face</type></link> object for <parameter>font</parameter>
+, scaled appropriately,
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>scaled_font</parameter>
+is in an error state (see
+<link linkend="cairo-scaled-font-status"><function>cairo_scaled_font_status()</function></link>) or there is insufficient memory.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-ft-scaled-font-unlock-face" role="function" condition="since:1.0">
+<title>cairo_ft_scaled_font_unlock_face&#160;()</title>
+<indexterm zone="cairo-ft-scaled-font-unlock-face" role="1.0"><primary sortas="ft_scaled_font_unlock_face">cairo_ft_scaled_font_unlock_face</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ft_scaled_font_unlock_face (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Releases a face obtained with <link linkend="cairo-ft-scaled-font-lock-face"><function>cairo_ft_scaled_font_lock_face()</function></link>.</para>
+<refsect3 id="cairo-ft-scaled-font-unlock-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>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-ft-face"><function>cairo_ft_font_face_create_for_ft_face()</function></link>).</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-ft-font-face-get-synthesize" role="function" condition="since:1.12">
+<title>cairo_ft_font_face_get_synthesize&#160;()</title>
+<indexterm zone="cairo-ft-font-face-get-synthesize" role="1.12"><primary sortas="ft_font_face_get_synthesize">cairo_ft_font_face_get_synthesize</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_ft_font_face_get_synthesize (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>See <link linkend="cairo-ft-synthesize-t"><type>cairo_ft_synthesize_t</type></link>.</para>
+<refsect3 id="cairo-ft-font-face-get-synthesize.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>The <link linkend="cairo-ft-font-face-t"><type>cairo_ft_font_face_t</type></link> object to query</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ft-font-face-get-synthesize.returns" role="returns">
+<title>Returns</title>
+<para> the current set of synthesis options.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-ft-font-face-set-synthesize" role="function" condition="since:1.12">
+<title>cairo_ft_font_face_set_synthesize&#160;()</title>
+<indexterm zone="cairo-ft-font-face-set-synthesize" role="1.12"><primary sortas="ft_font_face_set_synthesize">cairo_ft_font_face_set_synthesize</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ft_font_face_set_synthesize (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> synth_flags</parameter>);</programlisting>
+<para>FreeType provides the ability to synthesize different glyphs from a base
+font, which is useful if you lack those glyphs from a true bold or oblique
+font. See also <link linkend="cairo-ft-synthesize-t"><type>cairo_ft_synthesize_t</type></link>.</para>
+<refsect3 id="cairo-ft-font-face-set-synthesize.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>The <link linkend="cairo-ft-font-face-t"><type>cairo_ft_font_face_t</type></link> object to modify</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>synth_flags</para></entry>
+<entry role="parameter_description"><para>the set of synthesis options to enable</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-ft-font-face-unset-synthesize" role="function" condition="since:1.12">
+<title>cairo_ft_font_face_unset_synthesize&#160;()</title>
+<indexterm zone="cairo-ft-font-face-unset-synthesize" role="1.12"><primary sortas="ft_font_face_unset_synthesize">cairo_ft_font_face_unset_synthesize</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ft_font_face_unset_synthesize (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> synth_flags</parameter>);</programlisting>
+<para>See <link linkend="cairo-ft-font-face-set-synthesize"><function>cairo_ft_font_face_set_synthesize()</function></link>.</para>
+<refsect3 id="cairo-ft-font-face-unset-synthesize.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>The <link linkend="cairo-ft-font-face-t"><type>cairo_ft_font_face_t</type></link> object to modify</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>synth_flags</para></entry>
+<entry role="parameter_description"><para>the set of synthesis options to disable</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-FreeType-Fonts.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-FT-FONT:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_HAS_FT_FONT</title>
+<indexterm zone="CAIRO-HAS-FT-FONT:CAPS" role="1.0"><primary sortas="HAS_FT_FONT">CAIRO_HAS_FT_FONT</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_FT_FONT 1
+</programlisting>
+<para>Defined if the FreeType font backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="CAIRO-HAS-FC-FONT:CAPS" role="macro" condition="since:1.10">
+<title>CAIRO_HAS_FC_FONT</title>
+<indexterm zone="CAIRO-HAS-FC-FONT:CAPS" role="1.10"><primary sortas="HAS_FC_FONT">CAIRO_HAS_FC_FONT</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_FC_FONT 1
+</programlisting>
+<para>Defined if the Fontconfig-specific functions of the FreeType font backend
+are available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-ft-synthesize-t" role="enum" condition="since:1.12">
+<title>enum cairo_ft_synthesize_t</title>
+<indexterm zone="cairo-ft-synthesize-t" role="1.12"><primary sortas="ft_synthesize_t">cairo_ft_synthesize_t</primary></indexterm>
+<para>A set of synthesis options to control how FreeType renders the glyphs
+for a particular font face.</para>
+<para>Individual synthesis features of a <link linkend="cairo-ft-font-face-t"><type>cairo_ft_font_face_t</type></link> can be set
+using <link linkend="cairo-ft-font-face-set-synthesize"><function>cairo_ft_font_face_set_synthesize()</function></link>, or disabled using
+<link linkend="cairo-ft-font-face-unset-synthesize"><function>cairo_ft_font_face_unset_synthesize()</function></link>. The currently enabled set of
+synthesis options can be queried with <link linkend="cairo-ft-font-face-get-synthesize"><function>cairo_ft_font_face_get_synthesize()</function></link>.</para>
+<para>Note: that when synthesizing glyphs, the font metrics returned will only
+be estimates.</para>
+<refsect3 id="cairo-ft-synthesize-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FT-SYNTHESIZE-BOLD:CAPS">CAIRO_FT_SYNTHESIZE_BOLD</para></entry>
+<entry role="enum_member_description"><para>Embolden the glyphs (redraw with a pixel offset)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FT-SYNTHESIZE-OBLIQUE:CAPS">CAIRO_FT_SYNTHESIZE_OBLIQUE</para></entry>
+<entry role="enum_member_description"><para>Slant the glyph outline by 12 degrees to the
+right.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-FreeType-Fonts.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-image.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-image.xml
new file mode 100644
index 0000000..f9c9443
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-image.xml
@@ -0,0 +1,425 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Image-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Image-Surfaces.top_of_page">Image Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Image Surfaces</refname>
+<refpurpose>Rendering to memory buffers</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Image-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-format-stride-for-width">cairo_format_stride_for_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-image-surface-create">cairo_image_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-image-surface-create-for-data">cairo_image_surface_create_for_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-image-surface-get-data">cairo_image_surface_get_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-format-t"><returnvalue>cairo_format_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-image-surface-get-format">cairo_image_surface_get_format</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-image-surface-get-width">cairo_image_surface_get_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-image-surface-get-height">cairo_image_surface_get_height</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-image-surface-get-stride">cairo_image_surface_get_stride</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Image-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-IMAGE-SURFACE:CAPS">CAIRO_HAS_IMAGE_SURFACE</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-format-t">cairo_format_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Image-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>Image surfaces provide the ability to render to memory buffers
+either allocated by cairo or by the calling code. The supported
+image formats are those defined in <link linkend="cairo-format-t"><type>cairo_format_t</type></link>.</para>
+
+</refsect1>
+<refsect1 id="cairo-Image-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-format-stride-for-width" role="function" condition="since:1.6">
+<title>cairo_format_stride_for_width&#160;()</title>
+<indexterm zone="cairo-format-stride-for-width" role="1.6"><primary sortas="format_stride_for_width">cairo_format_stride_for_width</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_format_stride_for_width (<parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>);</programlisting>
+<para>This function provides a stride value that will respect all
+alignment requirements of the accelerated image-rendering code
+within cairo. Typical usage will be of the form:</para>
+<informalexample><programlisting>
+int stride;
+unsigned char *data;
+cairo_surface_t *surface;
+
+stride = cairo_format_stride_for_width (format, width);
+data = malloc (stride * height);
+surface = cairo_image_surface_create_for_data (data, format,
+ width, height,
+ stride);
+</programlisting></informalexample>
+<refsect3 id="cairo-format-stride-for-width.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>A <link linkend="cairo-format-t"><type>cairo_format_t</type></link> value</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>The desired width of an image surface to be created.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-format-stride-for-width.returns" role="returns">
+<title>Returns</title>
+<para> the appropriate stride to use given the desired
+format and width, or -1 if either the format is invalid or the width
+too large.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-image-surface-create" role="function" condition="since:1.0">
+<title>cairo_image_surface_create&#160;()</title>
+<indexterm zone="cairo-image-surface-create" role="1.0"><primary sortas="image_surface_create">cairo_image_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_image_surface_create (<parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates an image surface of the specified format and
+dimensions. Initially the surface contents are set to 0.
+(Specifically, within each pixel, each color or alpha channel
+belonging to format will be 0. The contents of bits within a pixel,
+but not belonging to the given format are undefined).</para>
+<refsect3 id="cairo-image-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>format of pixels in the surface to create</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-image-surface-create-for-data" role="function" condition="since:1.0">
+<title>cairo_image_surface_create_for_data&#160;()</title>
+<indexterm zone="cairo-image-surface-create-for-data" role="1.0"><primary sortas="image_surface_create_for_data">cairo_image_surface_create_for_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_image_surface_create_for_data (<parameter>unsigned <link linkend="char"><type>char</type></link> *data</parameter>,
+ <parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> stride</parameter>);</programlisting>
+<para>Creates an image surface for the provided pixel data. The output
+buffer must be kept around until the <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> is destroyed
+or <link linkend="cairo-surface-finish"><function>cairo_surface_finish()</function></link> is called on the surface. The initial
+contents of <parameter>data</parameter>
+ will be used as the initial image contents; you
+must explicitly 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>Note that the stride may be larger than
+width*bytes_per_pixel to provide proper alignment for each pixel
+and row. This alignment is required to allow high-performance rendering
+within cairo. The correct way to obtain a legal stride value is to
+call <link linkend="cairo-format-stride-for-width"><function>cairo_format_stride_for_width()</function></link> with the desired format and
+maximum image width value, and then use the resulting stride value
+to allocate the data and to create the image surface. See
+<link linkend="cairo-format-stride-for-width"><function>cairo_format_stride_for_width()</function></link> for example code.</para>
+<refsect3 id="cairo-image-surface-create-for-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>a pointer to a buffer supplied by the application in which
+to write contents. This pointer must be suitably aligned for any
+kind of variable, (for example, a pointer returned by malloc).</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>the format of pixels in the buffer</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the width of the image to be stored in the buffer</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the height of the image to be stored in the buffer</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>stride</para></entry>
+<entry role="parameter_description"><para>the number of bytes between the start of rows in the
+buffer as allocated. This value should always be computed by
+<link linkend="cairo-format-stride-for-width"><function>cairo_format_stride_for_width()</function></link> before allocating the data
+buffer.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-create-for-data.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface in the case of an error such as out of
+memory or an invalid stride value. In case of invalid stride value
+the error status of the returned surface will be
+<link linkend="CAIRO-STATUS-INVALID-STRIDE:CAPS"><literal>CAIRO_STATUS_INVALID_STRIDE</literal></link>. You can use
+<link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+<para>See <link linkend="cairo-surface-set-user-data"><function>cairo_surface_set_user_data()</function></link> for a means of attaching a
+destroy-notification fallback to the surface if necessary.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-image-surface-get-data" role="function" condition="since:1.2">
+<title>cairo_image_surface_get_data&#160;()</title>
+<indexterm zone="cairo-image-surface-get-data" role="1.2"><primary sortas="image_surface_get_data">cairo_image_surface_get_data</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_image_surface_get_data (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get a pointer to the data of the image surface, for direct
+inspection or modification.</para>
+<para>A call to <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> is required before accessing the
+pixel data to ensure that all pending drawing operations are
+finished. A call to <link linkend="cairo-surface-mark-dirty"><function>cairo_surface_mark_dirty()</function></link> is required after
+the data is modified.</para>
+<refsect3 id="cairo-image-surface-get-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-get-data.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the image data of this surface or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+if <parameter>surface</parameter>
+is not an image surface, or if <link linkend="cairo-surface-finish"><function>cairo_surface_finish()</function></link>
+has been called.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-image-surface-get-format" role="function" condition="since:1.2">
+<title>cairo_image_surface_get_format&#160;()</title>
+<indexterm zone="cairo-image-surface-get-format" role="1.2"><primary sortas="image_surface_get_format">cairo_image_surface_get_format</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-format-t"><returnvalue>cairo_format_t</returnvalue></link>
+cairo_image_surface_get_format (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the format of the surface.</para>
+<refsect3 id="cairo-image-surface-get-format.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-get-format.returns" role="returns">
+<title>Returns</title>
+<para> the format of the surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-image-surface-get-width" role="function" condition="since:1.0">
+<title>cairo_image_surface_get_width&#160;()</title>
+<indexterm zone="cairo-image-surface-get-width" role="1.0"><primary sortas="image_surface_get_width">cairo_image_surface_get_width</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_image_surface_get_width (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the width of the image surface in pixels.</para>
+<refsect3 id="cairo-image-surface-get-width.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-get-width.returns" role="returns">
+<title>Returns</title>
+<para> the width of the surface in pixels.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-image-surface-get-height" role="function" condition="since:1.0">
+<title>cairo_image_surface_get_height&#160;()</title>
+<indexterm zone="cairo-image-surface-get-height" role="1.0"><primary sortas="image_surface_get_height">cairo_image_surface_get_height</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_image_surface_get_height (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the height of the image surface in pixels.</para>
+<refsect3 id="cairo-image-surface-get-height.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-get-height.returns" role="returns">
+<title>Returns</title>
+<para> the height of the surface in pixels.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-image-surface-get-stride" role="function" condition="since:1.2">
+<title>cairo_image_surface_get_stride&#160;()</title>
+<indexterm zone="cairo-image-surface-get-stride" role="1.2"><primary sortas="image_surface_get_stride">cairo_image_surface_get_stride</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_image_surface_get_stride (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the stride of the image surface in bytes</para>
+<refsect3 id="cairo-image-surface-get-stride.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-image-surface-t"><type>cairo_image_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-get-stride.returns" role="returns">
+<title>Returns</title>
+<para> the stride of the image surface in bytes (or 0 if
+<parameter>surface</parameter>
+is not an image surface). The stride is the distance in
+bytes from the beginning of one row of the image data to the
+beginning of the next row.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Image-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-IMAGE-SURFACE:CAPS" role="macro" condition="since:1.8">
+<title>CAIRO_HAS_IMAGE_SURFACE</title>
+<indexterm zone="CAIRO-HAS-IMAGE-SURFACE:CAPS" role="1.8"><primary sortas="HAS_IMAGE_SURFACE">CAIRO_HAS_IMAGE_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_IMAGE_SURFACE 1
+</programlisting>
+<para>Defined if the image surface backend is available.
+The image surface backend is always built in.
+This macro was added for completeness in cairo 1.8.</para>
+<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-format-t" role="enum" condition="since:1.0">
+<title>enum cairo_format_t</title>
+<indexterm zone="cairo-format-t" role="1.0"><primary sortas="format_t">cairo_format_t</primary></indexterm>
+<para><link linkend="cairo-format-t"><type>cairo_format_t</type></link> is used to identify the memory format of
+image data.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-format-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-INVALID:CAPS">CAIRO_FORMAT_INVALID</para></entry>
+<entry role="enum_member_description"><para>no such format exists or is supported.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-ARGB32:CAPS">CAIRO_FORMAT_ARGB32</para></entry>
+<entry role="enum_member_description"><para>each pixel is a 32-bit quantity, with
+ alpha in the upper 8 bits, then red, then green, then blue.
+ The 32-bit quantities are stored native-endian. Pre-multiplied
+ alpha is used. (That is, 50% transparent red is 0x80800000,
+ not 0x80ff0000.) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-RGB24:CAPS">CAIRO_FORMAT_RGB24</para></entry>
+<entry role="enum_member_description"><para>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. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-A8:CAPS">CAIRO_FORMAT_A8</para></entry>
+<entry role="enum_member_description"><para>each pixel is a 8-bit quantity holding
+ an alpha value. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-A1:CAPS">CAIRO_FORMAT_A1</para></entry>
+<entry role="enum_member_description"><para>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
+ endianness 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. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-RGB16-565:CAPS">CAIRO_FORMAT_RGB16_565</para></entry>
+<entry role="enum_member_description"><para>each pixel is a 16-bit quantity
+ with red in the upper 5 bits, then green in the middle
+ 6 bits, and blue in the lower 5 bits. (Since 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FORMAT-RGB30:CAPS">CAIRO_FORMAT_RGB30</para></entry>
+<entry role="enum_member_description"><para>like RGB24 but with 10bpc. (Since 1.12)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Image-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-matrix.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-matrix.xml
new file mode 100644
index 0000000..afb0700
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-matrix.xml
@@ -0,0 +1,574 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-matrix-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-matrix-t.top_of_page">cairo_matrix_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_matrix_t</refname>
+<refpurpose>Generic matrix operations</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-matrix-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-init">cairo_matrix_init</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-init-identity">cairo_matrix_init_identity</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-init-translate">cairo_matrix_init_translate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-init-scale">cairo_matrix_init_scale</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-init-rotate">cairo_matrix_init_rotate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-translate">cairo_matrix_translate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-scale">cairo_matrix_scale</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-rotate">cairo_matrix_rotate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-invert">cairo_matrix_invert</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-multiply">cairo_matrix_multiply</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-transform-distance">cairo_matrix_transform_distance</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-matrix-transform-point">cairo_matrix_transform_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-matrix-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-matrix-t">cairo_matrix_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-matrix-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> is used throughout cairo to convert between different
+coordinate spaces. A <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> holds an affine transformation,
+such as a scale, rotation, shear, or a combination of these.
+The transformation of a point (<literal>x</literal>,<literal>y</literal>)
+is given by:</para>
+<programlisting>
+x_new = xx * x + xy * y + x0;
+y_new = yx * x + yy * y + y0;
+</programlisting>
+<para>The current transformation matrix of a <link linkend="cairo-t"><type>cairo_t</type></link>, represented as a
+<link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link>, defines the transformation from user-space
+coordinates to device-space coordinates. See <link linkend="cairo-get-matrix"><function>cairo_get_matrix()</function></link> and
+<link linkend="cairo-set-matrix"><function>cairo_set_matrix()</function></link>.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-matrix-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-matrix-init" role="function" condition="since:1.0">
+<title>cairo_matrix_init&#160;()</title>
+<indexterm zone="cairo-matrix-init" role="1.0"><primary sortas="matrix_init">cairo_matrix_init</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_init (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> xx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> yx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> xy</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> yy</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y0</parameter>);</programlisting>
+<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:</para>
+<programlisting>
+ x_new = xx * x + xy * y + x0;
+ y_new = yx * x + yy * y + y0;
+</programlisting>
+<refsect3 id="cairo-matrix-init.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>xx</para></entry>
+<entry role="parameter_description"><para>xx component of the affine transformation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>yx</para></entry>
+<entry role="parameter_description"><para>yx component of the affine transformation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>xy</para></entry>
+<entry role="parameter_description"><para>xy component of the affine transformation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>yy</para></entry>
+<entry role="parameter_description"><para>yy component of the affine transformation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x0</para></entry>
+<entry role="parameter_description"><para>X translation component of the affine transformation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y0</para></entry>
+<entry role="parameter_description"><para>Y translation component of the affine transformation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-init-identity" role="function" condition="since:1.0">
+<title>cairo_matrix_init_identity&#160;()</title>
+<indexterm zone="cairo-matrix-init-identity" role="1.0"><primary sortas="matrix_init_identity">cairo_matrix_init_identity</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_init_identity (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</programlisting>
+<para>Modifies <parameter>matrix</parameter>
+ to be an identity transformation.</para>
+<refsect3 id="cairo-matrix-init-identity.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-init-translate" role="function" condition="since:1.0">
+<title>cairo_matrix_init_translate&#160;()</title>
+<indexterm zone="cairo-matrix-init-translate" role="1.0"><primary sortas="matrix_init_translate">cairo_matrix_init_translate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_init_translate (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> tx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> ty</parameter>);</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>
+<refsect3 id="cairo-matrix-init-translate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>tx</para></entry>
+<entry role="parameter_description"><para>amount to translate in the X direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>ty</para></entry>
+<entry role="parameter_description"><para>amount to translate in the Y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-init-scale" role="function" condition="since:1.0">
+<title>cairo_matrix_init_scale&#160;()</title>
+<indexterm zone="cairo-matrix-init-scale" role="1.0"><primary sortas="matrix_init_scale">cairo_matrix_init_scale</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_init_scale (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> sx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> sy</parameter>);</programlisting>
+<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>
+<refsect3 id="cairo-matrix-init-scale.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>sx</para></entry>
+<entry role="parameter_description"><para>scale factor in the X direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>sy</para></entry>
+<entry role="parameter_description"><para>scale factor in the Y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-init-rotate" role="function" condition="since:1.0">
+<title>cairo_matrix_init_rotate&#160;()</title>
+<indexterm zone="cairo-matrix-init-rotate" role="1.0"><primary sortas="matrix_init_rotate">cairo_matrix_init_rotate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_init_rotate (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> radians</parameter>);</programlisting>
+<para>Initialized <parameter>matrix</parameter>
+ to a transformation that rotates by <parameter>radians</parameter>
+.</para>
+<refsect3 id="cairo-matrix-init-rotate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>radians</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-translate" role="function" condition="since:1.0">
+<title>cairo_matrix_translate&#160;()</title>
+<indexterm zone="cairo-matrix-translate" role="1.0"><primary sortas="matrix_translate">cairo_matrix_translate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_translate (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> tx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> ty</parameter>);</programlisting>
+<para>Applies a translation by <parameter>tx</parameter>
+, <parameter>ty</parameter>
+ to the transformation in
+<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>
+<refsect3 id="cairo-matrix-translate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>tx</para></entry>
+<entry role="parameter_description"><para>amount to translate in the X direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>ty</para></entry>
+<entry role="parameter_description"><para>amount to translate in the Y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-scale" role="function" condition="since:1.0">
+<title>cairo_matrix_scale&#160;()</title>
+<indexterm zone="cairo-matrix-scale" role="1.0"><primary sortas="matrix_scale">cairo_matrix_scale</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_scale (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> sx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> sy</parameter>);</programlisting>
+<para>Applies scaling by <parameter>sx</parameter>
+, <parameter>sy</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>
+<refsect3 id="cairo-matrix-scale.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>sx</para></entry>
+<entry role="parameter_description"><para>scale factor in the X direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>sy</para></entry>
+<entry role="parameter_description"><para>scale factor in the Y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-rotate" role="function" condition="since:1.0">
+<title>cairo_matrix_rotate&#160;()</title>
+<indexterm zone="cairo-matrix-rotate" role="1.0"><primary sortas="matrix_rotate">cairo_matrix_rotate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_rotate (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> radians</parameter>);</programlisting>
+<para>Applies rotation by <parameter>radians</parameter>
+ to the transformation in
+<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>
+<refsect3 id="cairo-matrix-rotate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>radians</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-invert" role="function" condition="since:1.0">
+<title>cairo_matrix_invert&#160;()</title>
+<indexterm zone="cairo-matrix-invert" role="1.0"><primary sortas="matrix_invert">cairo_matrix_invert</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_matrix_invert (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</programlisting>
+<para>Changes <parameter>matrix</parameter>
+ to be the inverse of its original value. Not
+all transformation matrices have inverses; if the matrix
+collapses points together (it is <firstterm>degenerate</firstterm>),
+then it has no inverse and this function will fail.</para>
+<refsect3 id="cairo-matrix-invert.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-matrix-invert.returns" role="returns">
+<title>Returns</title>
+<para> If <parameter>matrix</parameter>
+has an inverse, modifies <parameter>matrix</parameter>
+to
+be the inverse matrix and returns <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>. Otherwise,
+returns <link linkend="CAIRO-STATUS-INVALID-MATRIX:CAPS"><literal>CAIRO_STATUS_INVALID_MATRIX</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-multiply" role="function" condition="since:1.0">
+<title>cairo_matrix_multiply&#160;()</title>
+<indexterm zone="cairo-matrix-multiply" role="1.0"><primary sortas="matrix_multiply">cairo_matrix_multiply</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_multiply (<parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *result</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *a</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *b</parameter>);</programlisting>
+<para>Multiplies the affine transformations in <parameter>a</parameter>
+ and <parameter>b</parameter>
+ together
+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>
+<refsect3 id="cairo-matrix-multiply.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>result</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> in which to store the result</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>a</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>b</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-transform-distance" role="function" condition="since:1.0">
+<title>cairo_matrix_transform_distance&#160;()</title>
+<indexterm zone="cairo-matrix-transform-distance" role="1.0"><primary sortas="matrix_transform_distance">cairo_matrix_transform_distance</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_transform_distance (<parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dy</parameter>);</programlisting>
+<para>Transforms the distance vector (<parameter>dx</parameter>
+,<parameter>dy</parameter>
+) by <parameter>matrix</parameter>
+. This is
+similar to <link linkend="cairo-matrix-transform-point"><function>cairo_matrix_transform_point()</function></link> except that the translation
+components of the transformation are ignored. The calculation of
+the returned vector is as follows:</para>
+<programlisting>
+dx2 = dx1 * a + dy1 * c;
+dy2 = dx1 * b + dy1 * d;
+</programlisting>
+<para>Affine transformations are position invariant, so the same vector
+always transforms to the same vector. If (<parameter>x1</parameter>
+,<parameter>y1</parameter>
+) transforms
+to (<parameter>x2</parameter>
+,<parameter>y2</parameter>
+) then (<parameter>x1</parameter>
++<parameter>dx1</parameter>
+,<parameter>y1</parameter>
++<parameter>dy1</parameter>
+) will transform to
+(<parameter>x1</parameter>
++<parameter>dx2</parameter>
+,<parameter>y1</parameter>
++<parameter>dy2</parameter>
+) for all values of <parameter>x1</parameter>
+ and <parameter>x2</parameter>
+.</para>
+<refsect3 id="cairo-matrix-transform-distance.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx</para></entry>
+<entry role="parameter_description"><para>X component of a distance vector. An in/out parameter</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy</para></entry>
+<entry role="parameter_description"><para>Y component of a distance vector. An in/out parameter</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-matrix-transform-point" role="function" condition="since:1.0">
+<title>cairo_matrix_transform_point&#160;()</title>
+<indexterm zone="cairo-matrix-transform-point" role="1.0"><primary sortas="matrix_transform_point">cairo_matrix_transform_point</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_matrix_transform_point (<parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y</parameter>);</programlisting>
+<para>Transforms the point (<parameter>x</parameter>
+, <parameter>y</parameter>
+) by <parameter>matrix</parameter>
+.</para>
+<refsect3 id="cairo-matrix-transform-point.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X position. An in/out parameter</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y position. An in/out parameter</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-matrix-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-matrix-t" role="struct" condition="since:1.0">
+<title>cairo_matrix_t</title>
+<indexterm zone="cairo-matrix-t" role="1.0"><primary sortas="matrix_t">cairo_matrix_t</primary></indexterm>
+<programlisting language="C">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,
+rotation, shear, or a combination of those. The transformation of
+a point (x, y) is given by:</para>
+<programlisting>
+ x_new = xx * x + xy * y + x0;
+ y_new = yx * x + yy * y + y0;
+</programlisting>
+<refsect3 id="cairo-matrix-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-matrix-t.xx">xx</structfield>;</para></entry>
+<entry role="struct_member_description"><para>xx component of the affine transformation</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-matrix-t.yx">yx</structfield>;</para></entry>
+<entry role="struct_member_description"><para>yx component of the affine transformation</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-matrix-t.xy">xy</structfield>;</para></entry>
+<entry role="struct_member_description"><para>xy component of the affine transformation</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-matrix-t.yy">yy</structfield>;</para></entry>
+<entry role="struct_member_description"><para>yy component of the affine transformation</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-matrix-t.x0">x0</structfield>;</para></entry>
+<entry role="struct_member_description"><para>X translation component of the affine transformation</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-matrix-t.y0">y0</structfield>;</para></entry>
+<entry role="struct_member_description"><para>Y translation component of the affine transformation</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-matrix-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-t"><type>cairo_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-paths.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-paths.xml
new file mode 100644
index 0000000..2373cb6
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-paths.xml
@@ -0,0 +1,1125 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Paths">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Paths.top_of_page">Paths</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Paths</refname>
+<refpurpose>Creating paths and manipulating path data</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Paths.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-path-t"><returnvalue>cairo_path_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-copy-path">cairo_copy_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-path-t"><returnvalue>cairo_path_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-copy-path-flat">cairo_copy_path_flat</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-path-destroy">cairo_path_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-append-path">cairo_append_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-has-current-point">cairo_has_current_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-current-point">cairo_get_current_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-new-path">cairo_new_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-new-sub-path">cairo_new_sub_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-close-path">cairo_close_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-arc">cairo_arc</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-arc-negative">cairo_arc_negative</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-curve-to">cairo_curve_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-line-to">cairo_line_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-move-to">cairo_move_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-rectangle">cairo_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-glyph-path">cairo_glyph_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-text-path">cairo_text_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-rel-curve-to">cairo_rel_curve_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-rel-line-to">cairo_rel_line_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-rel-move-to">cairo_rel_move_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-path-extents">cairo_path_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Paths.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-path-t">cairo_path_t</link></entry></row>
+<row><entry role="datatype_keyword">union</entry><entry role="function_name"><link linkend="cairo-path-data-t">cairo_path_data_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-path-data-type-t">cairo_path_data_type_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Paths.description" role="desc">
+<title role="desc.title">Description</title>
+<para>Paths are the most basic drawing tools and are primarily used to implicitly
+generate simple masks.</para>
+
+</refsect1>
+<refsect1 id="cairo-Paths.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-copy-path" role="function" condition="since:1.0">
+<title>cairo_copy_path&#160;()</title>
+<indexterm zone="cairo-copy-path" role="1.0"><primary sortas="copy_path">cairo_copy_path</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-path-t"><returnvalue>cairo_path_t</returnvalue></link>&#160;*
+cairo_copy_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>This function will always return a valid pointer, but the result
+will have no data (<literal>data==<link linkend="NULL:CAPS"><literal>NULL</literal></link></literal> and
+<literal>num_data==0</literal>), if either of the following
+conditions hold:</para>
+<orderedlist>
+<listitem>If there is insufficient memory to copy the path. In this
+ case <literal>path->status</literal> will be set to
+ <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>.</listitem>
+<listitem>If <parameter>cr</parameter> is already in an error state. In this case
+ <literal>path->status</literal> will contain the same status that
+ would be returned by <link linkend="cairo-status"><function>cairo_status()</function></link>.</listitem>
+</orderedlist>
+<refsect3 id="cairo-copy-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-copy-path.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-copy-path-flat" role="function" condition="since:1.0">
+<title>cairo_copy_path_flat&#160;()</title>
+<indexterm zone="cairo-copy-path-flat" role="1.0"><primary sortas="copy_path_flat">cairo_copy_path_flat</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-path-t"><returnvalue>cairo_path_t</returnvalue></link>&#160;*
+cairo_copy_path_flat (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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 <link linkend="CAIRO-PATH-CURVE-TO:CAPS"><literal>CAIRO_PATH_CURVE_TO</literal></link> which will instead be replaced by a
+series of <link linkend="CAIRO-PATH-LINE-TO:CAPS"><literal>CAIRO_PATH_LINE_TO</literal></link> elements.</para>
+<para>This function will always return a valid pointer, but the result
+will have no data (<literal>data==<link linkend="NULL:CAPS"><literal>NULL</literal></link></literal> and
+<literal>num_data==0</literal>), if either of the following
+conditions hold:</para>
+<orderedlist>
+<listitem>If there is insufficient memory to copy the path. In this
+ case <literal>path->status</literal> will be set to
+ <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>.</listitem>
+<listitem>If <parameter>cr</parameter> is already in an error state. In this case
+ <literal>path->status</literal> will contain the same status that
+ would be returned by <link linkend="cairo-status"><function>cairo_status()</function></link>.</listitem>
+</orderedlist>
+<refsect3 id="cairo-copy-path-flat.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-copy-path-flat.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-path-destroy" role="function" condition="since:1.0">
+<title>cairo_path_destroy&#160;()</title>
+<indexterm zone="cairo-path-destroy" role="1.0"><primary sortas="path_destroy">cairo_path_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_path_destroy (<parameter><link linkend="cairo-path-t"><type>cairo_path_t</type></link> *path</parameter>);</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: <link linkend="cairo-path-destroy"><function>cairo_path_destroy()</function></link> 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>
+<refsect3 id="cairo-path-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>path</para></entry>
+<entry role="parameter_description"><para>a path previously returned by either <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>.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-append-path" role="function" condition="since:1.0">
+<title>cairo_append_path&#160;()</title>
+<indexterm zone="cairo-append-path" role="1.0"><primary sortas="append_path">cairo_append_path</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_append_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-path-t"><type>cairo_path_t</type></link> *path</parameter>);</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 <literal>path->status</literal> must be
+initialized to <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>.</para>
+<refsect3 id="cairo-append-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>path</para></entry>
+<entry role="parameter_description"><para>path to be appended</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-has-current-point" role="function" condition="since:1.6">
+<title>cairo_has_current_point&#160;()</title>
+<indexterm zone="cairo-has-current-point" role="1.6"><primary sortas="has_current_point">cairo_has_current_point</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_has_current_point (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Returns whether a current point is defined on the current path.
+See <link linkend="cairo-get-current-point"><function>cairo_get_current_point()</function></link> for details on the current point.</para>
+<refsect3 id="cairo-has-current-point.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-has-current-point.returns" role="returns">
+<title>Returns</title>
+<para> whether a current point is defined.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-get-current-point" role="function" condition="since:1.0">
+<title>cairo_get_current_point&#160;()</title>
+<indexterm zone="cairo-get-current-point" role="1.0"><primary sortas="get_current_point">cairo_get_current_point</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_get_current_point (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y</parameter>);</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 or if <parameter>cr</parameter>
+ is in an
+error status, <parameter>x</parameter>
+ and <parameter>y</parameter>
+ will both be set to 0.0. It is possible to
+check this in advance with <link linkend="cairo-has-current-point"><function>cairo_has_current_point()</function></link>.</para>
+<para>Most path construction functions alter the current point. See the
+following for details on how they affect the current point:
+<link linkend="cairo-new-path"><function>cairo_new_path()</function></link>, <link linkend="cairo-new-sub-path"><function>cairo_new_sub_path()</function></link>,
+<link linkend="cairo-append-path"><function>cairo_append_path()</function></link>, <link linkend="cairo-close-path"><function>cairo_close_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-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-arc-negative"><function>cairo_arc_negative()</function></link>, <link linkend="cairo-rectangle"><function>cairo_rectangle()</function></link>,
+<link linkend="cairo-text-path"><function>cairo_text_path()</function></link>, <link linkend="cairo-glyph-path"><function>cairo_glyph_path()</function></link>, <link linkend="cairo-stroke-to-path"><function>cairo_stroke_to_path()</function></link>.</para>
+<para>Some functions use and alter the current point but do not
+otherwise change current path:
+<link linkend="cairo-show-text"><function>cairo_show_text()</function></link>.</para>
+<para>Some functions unset the current path and as a result, current point:
+<link linkend="cairo-fill"><function>cairo_fill()</function></link>, <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>.</para>
+<refsect3 id="cairo-get-current-point.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>return value for X coordinate of the current point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>return value for Y coordinate of the current point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-new-path" role="function" condition="since:1.0">
+<title>cairo_new_path&#160;()</title>
+<indexterm zone="cairo-new-path" role="1.0"><primary sortas="new_path">cairo_new_path</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_new_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Clears the current path. After this call there will be no path and
+no current point.</para>
+<refsect3 id="cairo-new-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-new-sub-path" role="function" condition="since:1.2">
+<title>cairo_new_sub_path&#160;()</title>
+<indexterm zone="cairo-new-sub-path" role="1.2"><primary sortas="new_sub_path">cairo_new_sub_path</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_new_sub_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Begin a new sub-path. Note that the existing path is not
+affected. After this call there will be no current point.</para>
+<para>In many cases, this call is not needed since new sub-paths are
+frequently started with <link linkend="cairo-move-to"><function>cairo_move_to()</function></link>.</para>
+<para>A call to <link linkend="cairo-new-sub-path"><function>cairo_new_sub_path()</function></link> is particularly useful when
+beginning a new sub-path with one of the <link linkend="cairo-arc"><function>cairo_arc()</function></link> calls. This
+makes things easier as it is no longer necessary to manually
+compute the arc's initial coordinates for a call to
+<link linkend="cairo-move-to"><function>cairo_move_to()</function></link>.</para>
+<refsect3 id="cairo-new-sub-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-close-path" role="function" condition="since:1.0">
+<title>cairo_close_path&#160;()</title>
+<indexterm zone="cairo-close-path" role="1.0"><primary sortas="close_path">cairo_close_path</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_close_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Adds a line segment to the path from the current point to the
+beginning of the current sub-path, (the most recent point passed to
+<link linkend="cairo-move-to"><function>cairo_move_to()</function></link>), and closes this sub-path. After this call the
+current point will be at the joined endpoint of the sub-path.</para>
+<para>The behavior of <link linkend="cairo-close-path"><function>cairo_close_path()</function></link> is distinct from simply calling
+<link linkend="cairo-line-to"><function>cairo_line_to()</function></link> with the equivalent coordinate in the case of
+stroking. When a closed sub-path is stroked, there are no caps on
+the ends of the sub-path. Instead, there is a line join connecting
+the final and initial segments of the sub-path.</para>
+<para>If there is no current point before the call to <link linkend="cairo-close-path"><function>cairo_close_path()</function></link>,
+this function will have no effect.</para>
+<para>Note: As of cairo version 1.2.4 any call to <link linkend="cairo-close-path"><function>cairo_close_path()</function></link> will
+place an explicit MOVE_TO element into the path immediately after
+the CLOSE_PATH element, (which can be seen in <link linkend="cairo-copy-path"><function>cairo_copy_path()</function></link> for
+example). This can simplify path processing in some cases as it may
+not be necessary to save the "last move_to point" during processing
+as the MOVE_TO immediately after the CLOSE_PATH will provide that
+point.</para>
+<refsect3 id="cairo-close-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-arc" role="function" condition="since:1.0">
+<title>cairo_arc&#160;()</title>
+<indexterm zone="cairo-arc" role="1.0"><primary sortas="arc">cairo_arc</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_arc (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> xc</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> yc</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> radius</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> angle1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> angle2</parameter>);</programlisting>
+<para>Adds a circular arc of the given <parameter>radius</parameter>
+ to the current path. The
+arc is centered at (<parameter>xc</parameter>
+, <parameter>yc</parameter>
+), begins at <parameter>angle1</parameter>
+ and proceeds in
+the direction of increasing angles to end at <parameter>angle2</parameter>
+. If <parameter>angle2</parameter>
+ is
+less than <parameter>angle1</parameter>
+ it will be progressively increased by
+<literal>2*M_PI</literal> until it is greater than <parameter>angle1</parameter>
+.</para>
+<para>If there is a current point, an initial line segment will be added
+to the path to connect the current point to the beginning of the
+arc. If this initial line is undesired, it can be avoided by
+calling <link linkend="cairo-new-sub-path"><function>cairo_new_sub_path()</function></link> before calling <link linkend="cairo-arc"><function>cairo_arc()</function></link>.</para>
+<para>Angles are measured in radians. An angle of 0.0 is in the direction
+of the positive X axis (in user space). An angle of
+<literal>M_PI/2.0</literal> radians (90 degrees) is in the
+direction of the positive Y axis (in user space). Angles increase
+in the direction from the positive X axis toward the positive Y
+axis. So with the default transformation matrix, angles increase in
+a clockwise direction.</para>
+<para>(To convert from degrees to radians, use <literal>degrees * (M_PI /
+180.)</literal>.)</para>
+<para>This function gives the arc in the direction of increasing angles;
+see <link linkend="cairo-arc-negative"><function>cairo_arc_negative()</function></link> to get the arc in the direction of
+decreasing angles.</para>
+<para>The arc is circular in user space. To achieve an elliptical arc,
+you can scale the current transformation matrix by different
+amounts in the X and Y directions. For example, to draw an ellipse
+in the box given by <parameter>x</parameter>
+, <parameter>y</parameter>
+, <parameter>width</parameter>
+, <parameter>height</parameter>
+:</para>
+<informalexample><programlisting>
+cairo_save (cr);
+cairo_translate (cr, x + width / 2., y + height / 2.);
+cairo_scale (cr, width / 2., height / 2.);
+cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI);
+cairo_restore (cr);
+</programlisting></informalexample>
+<refsect3 id="cairo-arc.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>xc</para></entry>
+<entry role="parameter_description"><para>X position of the center of the arc</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>yc</para></entry>
+<entry role="parameter_description"><para>Y position of the center of the arc</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>radius</para></entry>
+<entry role="parameter_description"><para>the radius of the arc</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>angle1</para></entry>
+<entry role="parameter_description"><para>the start angle, in radians</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>angle2</para></entry>
+<entry role="parameter_description"><para>the end angle, in radians</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-arc-negative" role="function" condition="since:1.0">
+<title>cairo_arc_negative&#160;()</title>
+<indexterm zone="cairo-arc-negative" role="1.0"><primary sortas="arc_negative">cairo_arc_negative</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_arc_negative (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> xc</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> yc</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> radius</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> angle1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> angle2</parameter>);</programlisting>
+<para>Adds a circular arc of the given <parameter>radius</parameter>
+ to the current path. The
+arc is centered at (<parameter>xc</parameter>
+, <parameter>yc</parameter>
+), begins at <parameter>angle1</parameter>
+ and proceeds in
+the direction of decreasing angles to end at <parameter>angle2</parameter>
+. If <parameter>angle2</parameter>
+ is
+greater than <parameter>angle1</parameter>
+ it will be progressively decreased by
+<literal>2*M_PI</literal> until it is less than <parameter>angle1</parameter>
+.</para>
+<para>See <link linkend="cairo-arc"><function>cairo_arc()</function></link> for more details. This function differs only in the
+direction of the arc between the two angles.</para>
+<refsect3 id="cairo-arc-negative.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>xc</para></entry>
+<entry role="parameter_description"><para>X position of the center of the arc</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>yc</para></entry>
+<entry role="parameter_description"><para>Y position of the center of the arc</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>radius</para></entry>
+<entry role="parameter_description"><para>the radius of the arc</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>angle1</para></entry>
+<entry role="parameter_description"><para>the start angle, in radians</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>angle2</para></entry>
+<entry role="parameter_description"><para>the end angle, in radians</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-curve-to" role="function" condition="since:1.0">
+<title>cairo_curve_to&#160;()</title>
+<indexterm zone="cairo-curve-to" role="1.0"><primary sortas="curve_to">cairo_curve_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_curve_to (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x3</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y3</parameter>);</programlisting>
+<para>Adds a cubic Bézier spline to the path from the current point to
+position (<parameter>x3</parameter>
+, <parameter>y3</parameter>
+) in user-space coordinates, using (<parameter>x1</parameter>
+, <parameter>y1</parameter>
+) and
+(<parameter>x2</parameter>
+, <parameter>y2</parameter>
+) as the control points. After this call the current point
+will be (<parameter>x3</parameter>
+, <parameter>y3</parameter>
+).</para>
+<para>If there is no current point before the call to <link linkend="cairo-curve-to"><function>cairo_curve_to()</function></link>
+this function will behave as if preceded by a call to
+cairo_move_to(<parameter>cr</parameter>
+, <parameter>x1</parameter>
+, <parameter>y1</parameter>
+).</para>
+<refsect3 id="cairo-curve-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the first control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the first control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x2</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the second control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y2</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the second control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x3</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the end of the curve</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y3</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the end of the curve</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-line-to" role="function" condition="since:1.0">
+<title>cairo_line_to&#160;()</title>
+<indexterm zone="cairo-line-to" role="1.0"><primary sortas="line_to">cairo_line_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_line_to (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Adds a line to the path from the current point to position (<parameter>x</parameter>
+, <parameter>y</parameter>
+)
+in user-space coordinates. After this call the current point
+will be (<parameter>x</parameter>
+, <parameter>y</parameter>
+).</para>
+<para>If there is no current point before the call to <link linkend="cairo-line-to"><function>cairo_line_to()</function></link>
+this function will behave as cairo_move_to(<parameter>cr</parameter>
+, <parameter>x</parameter>
+, <parameter>y</parameter>
+).</para>
+<refsect3 id="cairo-line-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the end of the new line</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the end of the new line</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-move-to" role="function" condition="since:1.0">
+<title>cairo_move_to&#160;()</title>
+<indexterm zone="cairo-move-to" role="1.0"><primary sortas="move_to">cairo_move_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_move_to (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Begin a new sub-path. After this call the current point will be (<parameter>x</parameter>
+,
+<parameter>y</parameter>
+).</para>
+<refsect3 id="cairo-move-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the new position</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the new position</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rectangle" role="function" condition="since:1.0">
+<title>cairo_rectangle&#160;()</title>
+<indexterm zone="cairo-rectangle" role="1.0"><primary sortas="rectangle">cairo_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_rectangle (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height</parameter>);</programlisting>
+<para>Adds a closed sub-path rectangle of the given size to the current
+path at position (<parameter>x</parameter>
+, <parameter>y</parameter>
+) in user-space coordinates.</para>
+<para>This function is logically equivalent to:</para>
+<informalexample><programlisting>
+cairo_move_to (cr, x, y);
+cairo_rel_line_to (cr, width, 0);
+cairo_rel_line_to (cr, 0, height);
+cairo_rel_line_to (cr, -width, 0);
+cairo_close_path (cr);
+</programlisting></informalexample>
+<refsect3 id="cairo-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the top left corner of the rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the Y coordinate to the top left corner of the rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the width of the rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the height of the rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-glyph-path" role="function" condition="since:1.0">
+<title>cairo_glyph_path&#160;()</title>
+<indexterm zone="cairo-glyph-path" role="1.0"><primary sortas="glyph_path">cairo_glyph_path</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_glyph_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> *glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_glyphs</parameter>);</programlisting>
+<para>Adds closed paths for the glyphs to the current path. The generated
+path if filled, achieves an effect similar to that of
+<link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link>.</para>
+<refsect3 id="cairo-glyph-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>array of glyphs to show</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>number of glyphs to show</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-text-path" role="function" condition="since:1.0">
+<title>cairo_text_path&#160;()</title>
+<indexterm zone="cairo-text-path" role="1.0"><primary sortas="text_path">cairo_text_path</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_text_path (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>);</programlisting>
+<para>Adds closed paths for text to the current path. The generated
+path if filled, achieves an effect similar to that of
+<link linkend="cairo-show-text"><function>cairo_show_text()</function></link>.</para>
+<para>Text conversion and positioning is done similar to <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>.</para>
+<para>Like <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>, After this call the current point is
+moved to the origin of where the next glyph would be placed in
+this same progression. That is, the current point will be at
+the origin of the final glyph offset by its advance values.
+This allows for chaining multiple calls to to <link linkend="cairo-text-path"><function>cairo_text_path()</function></link>
+without having to set current point in between.</para>
+<para>Note: The <link linkend="cairo-text-path"><function>cairo_text_path()</function></link> function call is part of what the cairo
+designers call the "toy" text API. It is convenient for short demos
+and simple programs, but it is not expected to be adequate for
+serious text-using applications. See <link linkend="cairo-glyph-path"><function>cairo_glyph_path()</function></link> for the
+"real" text path API in cairo.</para>
+<refsect3 id="cairo-text-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a NUL-terminated string of text encoded in UTF-8, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rel-curve-to" role="function" condition="since:1.0">
+<title>cairo_rel_curve_to&#160;()</title>
+<indexterm zone="cairo-rel-curve-to" role="1.0"><primary sortas="rel_curve_to">cairo_rel_curve_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_rel_curve_to (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dx1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dy1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dx2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dy2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dx3</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dy3</parameter>);</programlisting>
+<para>Relative-coordinate version of <link linkend="cairo-curve-to"><function>cairo_curve_to()</function></link>. All offsets are
+relative to the current point. Adds a cubic Bézier spline to the
+path from the current point to a point offset from the current
+point by (<parameter>dx3</parameter>
+, <parameter>dy3</parameter>
+), using points offset by (<parameter>dx1</parameter>
+, <parameter>dy1</parameter>
+) and
+(<parameter>dx2</parameter>
+, <parameter>dy2</parameter>
+) as the control points. After this call the current
+point will be offset by (<parameter>dx3</parameter>
+, <parameter>dy3</parameter>
+).</para>
+<para>Given a current point of (x, y), cairo_rel_curve_to(<parameter>cr</parameter>
+, <parameter>dx1</parameter>
+,
+<parameter>dy1</parameter>
+, <parameter>dx2</parameter>
+, <parameter>dy2</parameter>
+, <parameter>dx3</parameter>
+, <parameter>dy3</parameter>
+) is logically equivalent to
+cairo_curve_to(<parameter>cr</parameter>
+, x+<parameter>dx1</parameter>
+, y+<parameter>dy1</parameter>
+, x+<parameter>dx2</parameter>
+, y+<parameter>dy2</parameter>
+, x+<parameter>dx3</parameter>
+, y+<parameter>dy3</parameter>
+).</para>
+<para>It is an error to call this function with no current point. Doing
+so will cause <parameter>cr</parameter>
+ to shutdown with a status of
+<link linkend="CAIRO-STATUS-NO-CURRENT-POINT:CAPS"><literal>CAIRO_STATUS_NO_CURRENT_POINT</literal></link>.</para>
+<refsect3 id="cairo-rel-curve-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx1</para></entry>
+<entry role="parameter_description"><para>the X offset to the first control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy1</para></entry>
+<entry role="parameter_description"><para>the Y offset to the first control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx2</para></entry>
+<entry role="parameter_description"><para>the X offset to the second control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy2</para></entry>
+<entry role="parameter_description"><para>the Y offset to the second control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx3</para></entry>
+<entry role="parameter_description"><para>the X offset to the end of the curve</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy3</para></entry>
+<entry role="parameter_description"><para>the Y offset to the end of the curve</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rel-line-to" role="function" condition="since:1.0">
+<title>cairo_rel_line_to&#160;()</title>
+<indexterm zone="cairo-rel-line-to" role="1.0"><primary sortas="rel_line_to">cairo_rel_line_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_rel_line_to (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dy</parameter>);</programlisting>
+<para>Relative-coordinate version of <link linkend="cairo-line-to"><function>cairo_line_to()</function></link>. Adds a line to the
+path from the current point to a point that is offset from the
+current point by (<parameter>dx</parameter>
+, <parameter>dy</parameter>
+) in user space. After this call the
+current point will be offset by (<parameter>dx</parameter>
+, <parameter>dy</parameter>
+).</para>
+<para>Given a current point of (x, y), cairo_rel_line_to(<parameter>cr</parameter>
+, <parameter>dx</parameter>
+, <parameter>dy</parameter>
+)
+is logically equivalent to cairo_line_to(<parameter>cr</parameter>
+, x + <parameter>dx</parameter>
+, y + <parameter>dy</parameter>
+).</para>
+<para>It is an error to call this function with no current point. Doing
+so will cause <parameter>cr</parameter>
+ to shutdown with a status of
+<link linkend="CAIRO-STATUS-NO-CURRENT-POINT:CAPS"><literal>CAIRO_STATUS_NO_CURRENT_POINT</literal></link>.</para>
+<refsect3 id="cairo-rel-line-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx</para></entry>
+<entry role="parameter_description"><para>the X offset to the end of the new line</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy</para></entry>
+<entry role="parameter_description"><para>the Y offset to the end of the new line</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rel-move-to" role="function" condition="since:1.0">
+<title>cairo_rel_move_to&#160;()</title>
+<indexterm zone="cairo-rel-move-to" role="1.0"><primary sortas="rel_move_to">cairo_rel_move_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_rel_move_to (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> dy</parameter>);</programlisting>
+<para>Begin a new sub-path. After this call the current point will offset
+by (<parameter>x</parameter>
+, <parameter>y</parameter>
+).</para>
+<para>Given a current point of (x, y), cairo_rel_move_to(<parameter>cr</parameter>
+, <parameter>dx</parameter>
+, <parameter>dy</parameter>
+)
+is logically equivalent to cairo_move_to(<parameter>cr</parameter>
+, x + <parameter>dx</parameter>
+, y + <parameter>dy</parameter>
+).</para>
+<para>It is an error to call this function with no current point. Doing
+so will cause <parameter>cr</parameter>
+ to shutdown with a status of
+<link linkend="CAIRO-STATUS-NO-CURRENT-POINT:CAPS"><literal>CAIRO_STATUS_NO_CURRENT_POINT</literal></link>.</para>
+<refsect3 id="cairo-rel-move-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx</para></entry>
+<entry role="parameter_description"><para>the X offset</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy</para></entry>
+<entry role="parameter_description"><para>the Y offset</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-path-extents" role="function" condition="since:1.6">
+<title>cairo_path_extents&#160;()</title>
+<indexterm zone="cairo-path-extents" role="1.6"><primary sortas="path_extents">cairo_path_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_path_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y2</parameter>);</programlisting>
+<para>Computes a bounding box in user-space coordinates covering the
+points on the current path. If the current path is empty, returns
+an empty rectangle ((0,0), (0,0)). Stroke parameters, fill rule,
+surface dimensions and clipping are not taken into account.</para>
+<para>Contrast with <link linkend="cairo-fill-extents"><function>cairo_fill_extents()</function></link> and <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link> which
+return the extents of only the area that would be "inked" by
+the corresponding drawing operations.</para>
+<para>The result of <link linkend="cairo-path-extents"><function>cairo_path_extents()</function></link> is defined as equivalent to the
+limit of <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link> with <link linkend="CAIRO-LINE-CAP-ROUND:CAPS"><literal>CAIRO_LINE_CAP_ROUND</literal></link> as the
+line width approaches 0.0, (but never reaching the empty-rectangle
+returned by <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link> for a line width of 0.0).</para>
+<para>Specifically, this means that zero-area sub-paths such as
+<link linkend="cairo-move-to"><function>cairo_move_to()</function></link>;<link linkend="cairo-line-to"><function>cairo_line_to()</function></link> segments, (even degenerate cases
+where the coordinates to both calls are identical), will be
+considered as contributing to the extents. However, a lone
+<link linkend="cairo-move-to"><function>cairo_move_to()</function></link> will not contribute to the results of
+<link linkend="cairo-path-extents"><function>cairo_path_extents()</function></link>.</para>
+<refsect3 id="cairo-path-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>left of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>top of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x2</para></entry>
+<entry role="parameter_description"><para>right of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y2</para></entry>
+<entry role="parameter_description"><para>bottom of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Paths.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-path-t" role="struct" condition="since:1.0">
+<title>cairo_path_t</title>
+<indexterm zone="cairo-path-t" role="1.0"><primary sortas="path_t">cairo_path_t</primary></indexterm>
+<programlisting language="C">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"><function>cairo_copy_path()</function></link> and
+<link linkend="cairo-copy-path-flat"><function>cairo_copy_path_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 (defined in <link linkend="cairo-path-data-type-t"><type>cairo_path_data_type_t</type></link>), since the data
+includes both headers and coordinates for each portion.</para>
+<refsect3 id="cairo-path-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="cairo-status-t"><type>cairo_status_t</type></link>&#160;<structfield id="cairo-path-t.status">status</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the current error status</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link>&#160;*<structfield id="cairo-path-t.data">data</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the elements in the path</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-path-t.num-data">num_data</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the number of elements in the data array</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-path-data-t" role="union" condition="since:1.0">
+<title>union cairo_path_data_t</title>
+<indexterm zone="cairo-path-data-t" role="1.0"><primary sortas="path_data_t">cairo_path_data_t</primary></indexterm>
+<para><link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link> is used to represent the path data inside a
+<link linkend="cairo-path-t"><type>cairo_path_t</type></link>.</para>
+<para>The data structure is designed to try to balance the demands of
+efficiency and ease-of-use. A path is represented as an array of
+<link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link>, which is a union of headers and points.</para>
+<para>Each portion of the path is represented by one or more elements in
+the array, (one header followed by 0 or more points). The length
+value of the header is the number of array elements for the current
+portion including the header, (ie. length == 1 + # of points), and
+where the number of points for each element type is as follows:</para>
+<programlisting>
+ %CAIRO_PATH_MOVE_TO: 1 point
+ %CAIRO_PATH_LINE_TO: 1 point
+ %CAIRO_PATH_CURVE_TO: 3 points
+ %CAIRO_PATH_CLOSE_PATH: 0 points
+</programlisting>
+<para>The semantics and ordering of the coordinate values are consistent
+with <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>, and
+<link linkend="cairo-close-path"><function>cairo_close_path()</function></link>.</para>
+<para>Here is sample code for iterating through a <link linkend="cairo-path-t"><type>cairo_path_t</type></link>:</para>
+<informalexample><programlisting>
+ int i;
+ cairo_path_t *path;
+ cairo_path_data_t *data;
+&nbsp;
+ path = cairo_copy_path (cr);
+&nbsp;
+ for (i=0; i &lt; path->num_data; i += path->data[i].header.length) {
+ data = &amp;path->data[i];
+ switch (data->header.type) {
+ case CAIRO_PATH_MOVE_TO:
+ do_move_to_things (data[1].point.x, data[1].point.y);
+ break;
+ case CAIRO_PATH_LINE_TO:
+ do_line_to_things (data[1].point.x, data[1].point.y);
+ break;
+ case CAIRO_PATH_CURVE_TO:
+ do_curve_to_things (data[1].point.x, data[1].point.y,
+ data[2].point.x, data[2].point.y,
+ data[3].point.x, data[3].point.y);
+ break;
+ case CAIRO_PATH_CLOSE_PATH:
+ do_close_path_things ();
+ break;
+ }
+ }
+ cairo_path_destroy (path);
+</programlisting></informalexample>
+<para>As of cairo 1.4, cairo does not mind if there are more elements in
+a portion of the path than needed. Such elements can be used by
+users of the cairo API to hold extra values in the path data
+structure. For this reason, it is recommended that applications
+always use <literal>data->header.length</literal> to
+iterate over the path data, instead of hardcoding the number of
+elements for each element type.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-path-data-type-t" role="enum" condition="since:1.0">
+<title>enum cairo_path_data_type_t</title>
+<indexterm zone="cairo-path-data-type-t" role="1.0"><primary sortas="path_data_type_t">cairo_path_data_type_t</primary></indexterm>
+<para><link linkend="cairo-path-data-t"><type>cairo_path_data_t</type></link> is used to describe the type of one portion
+of a path when represented 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 details.</para>
+<refsect3 id="cairo-path-data-type-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATH-MOVE-TO:CAPS">CAIRO_PATH_MOVE_TO</para></entry>
+<entry role="enum_member_description"><para>A move-to operation, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATH-LINE-TO:CAPS">CAIRO_PATH_LINE_TO</para></entry>
+<entry role="enum_member_description"><para>A line-to operation, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATH-CURVE-TO:CAPS">CAIRO_PATH_CURVE_TO</para></entry>
+<entry role="enum_member_description"><para>A curve-to operation, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATH-CLOSE-PATH:CAPS">CAIRO_PATH_CLOSE_PATH</para></entry>
+<entry role="enum_member_description"><para>A close-path operation, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-pattern.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-pattern.xml
new file mode 100644
index 0000000..7386cde
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-pattern.xml
@@ -0,0 +1,1966 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-pattern-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-pattern-t.top_of_page">cairo_pattern_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_pattern_t</refname>
+<refpurpose>Sources for drawing</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-pattern-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-add-color-stop-rgb">cairo_pattern_add_color_stop_rgb</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-add-color-stop-rgba">cairo_pattern_add_color_stop_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-color-stop-count">cairo_pattern_get_color_stop_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-color-stop-rgba">cairo_pattern_get_color_stop_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-rgb">cairo_pattern_create_rgb</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-rgba">cairo_pattern_create_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-rgba">cairo_pattern_get_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-for-surface">cairo_pattern_create_for_surface</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-surface">cairo_pattern_get_surface</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-linear">cairo_pattern_create_linear</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-linear-points">cairo_pattern_get_linear_points</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-radial">cairo_pattern_create_radial</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-radial-circles">cairo_pattern_get_radial_circles</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-mesh">cairo_pattern_create_mesh</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-begin-patch">cairo_mesh_pattern_begin_patch</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-end-patch">cairo_mesh_pattern_end_patch</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-move-to">cairo_mesh_pattern_move_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-line-to">cairo_mesh_pattern_line_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-curve-to">cairo_mesh_pattern_curve_to</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-set-control-point">cairo_mesh_pattern_set_control_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-set-corner-color-rgb">cairo_mesh_pattern_set_corner_color_rgb</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-set-corner-color-rgba">cairo_mesh_pattern_set_corner_color_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-get-patch-count">cairo_mesh_pattern_get_patch_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-path-t"><returnvalue>cairo_path_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-get-path">cairo_mesh_pattern_get_path</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-get-control-point">cairo_mesh_pattern_get_control_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mesh-pattern-get-corner-color-rgba">cairo_mesh_pattern_get_corner_color_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-reference">cairo_pattern_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-destroy">cairo_pattern_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-status">cairo_pattern_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-set-extend">cairo_pattern_set_extend</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-extend-t"><returnvalue>cairo_extend_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-extend">cairo_pattern_get_extend</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-set-filter">cairo_pattern_set_filter</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-filter-t"><returnvalue>cairo_filter_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-filter">cairo_pattern_get_filter</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-set-matrix">cairo_pattern_set_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-matrix">cairo_pattern_get_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-type-t"><returnvalue>cairo_pattern_type_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-type">cairo_pattern_get_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-reference-count">cairo_pattern_get_reference_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pattern-set-user-data">cairo_pattern_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-get-user-data">cairo_pattern_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-pattern-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-pattern-t">cairo_pattern_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-extend-t">cairo_extend_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-filter-t">cairo_filter_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-pattern-type-t">cairo_pattern_type_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-pattern-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> is the paint with which cairo draws.
+The primary use of patterns is as the source for all cairo drawing
+operations, although they can also be used as masks, that is, as the
+brush too.</para>
+<para>A cairo pattern is created by using one of the many constructors,
+of the form
+<function>cairo_pattern_create_<emphasis>type</emphasis>()</function>
+or implicitly through
+<function>cairo_set_source_<emphasis>type</emphasis>()</function>
+functions.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-pattern-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-pattern-add-color-stop-rgb" role="function" condition="since:1.0">
+<title>cairo_pattern_add_color_stop_rgb&#160;()</title>
+<indexterm zone="cairo-pattern-add-color-stop-rgb" role="1.0"><primary sortas="pattern_add_color_stop_rgb">cairo_pattern_add_color_stop_rgb</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_add_color_stop_rgb (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> offset</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>);</programlisting>
+<para>Adds an opaque color stop to a gradient pattern. The offset
+specifies the location along the gradient's control vector. For
+example, a linear gradient's control vector is from (x0,y0) to
+(x1,y1) while a radial gradient's control vector is from any point
+on the start circle to the corresponding point on the end circle.</para>
+<para>The color is specified in the same way as in <link linkend="cairo-set-source-rgb"><function>cairo_set_source_rgb()</function></link>.</para>
+<para>If two (or more) stops are specified with identical offset values,
+they will be sorted according to the order in which the stops are
+added, (stops added earlier will compare less than stops added
+later). This can be useful for reliably making sharp color
+transitions instead of the typical blend.</para>
+<para>Note: If the pattern is not a gradient pattern, (eg. a linear or
+radial pattern), then the pattern will be put into an error status
+with a status of <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>.</para>
+<refsect3 id="cairo-pattern-add-color-stop-rgb.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>offset</para></entry>
+<entry role="parameter_description"><para>an offset in the range [0.0 .. 1.0]</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-add-color-stop-rgba" role="function" condition="since:1.0">
+<title>cairo_pattern_add_color_stop_rgba&#160;()</title>
+<indexterm zone="cairo-pattern-add-color-stop-rgba" role="1.0"><primary sortas="pattern_add_color_stop_rgba">cairo_pattern_add_color_stop_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_add_color_stop_rgba (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> offset</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> alpha</parameter>);</programlisting>
+<para>Adds a translucent color stop to a gradient pattern. The offset
+specifies the location along the gradient's control vector. For
+example, a linear gradient's control vector is from (x0,y0) to
+(x1,y1) while a radial gradient's control vector is from any point
+on the start circle to the corresponding point on the end circle.</para>
+<para>The color is specified in the same way as in <link linkend="cairo-set-source-rgba"><function>cairo_set_source_rgba()</function></link>.</para>
+<para>If two (or more) stops are specified with identical offset values,
+they will be sorted according to the order in which the stops are
+added, (stops added earlier will compare less than stops added
+later). This can be useful for reliably making sharp color
+transitions instead of the typical blend.</para>
+<para>Note: If the pattern is not a gradient pattern, (eg. a linear or
+radial pattern), then the pattern will be put into an error status
+with a status of <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>.</para>
+<refsect3 id="cairo-pattern-add-color-stop-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>offset</para></entry>
+<entry role="parameter_description"><para>an offset in the range [0.0 .. 1.0]</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>alpha component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-color-stop-count" role="function" condition="since:1.4">
+<title>cairo_pattern_get_color_stop_count&#160;()</title>
+<indexterm zone="cairo-pattern-get-color-stop-count" role="1.4"><primary sortas="pattern_get_color_stop_count">cairo_pattern_get_color_stop_count</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_get_color_stop_count (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *count</parameter>);</programlisting>
+<para>Gets the number of color stops specified in the given gradient
+pattern.</para>
+<refsect3 id="cairo-pattern-get-color-stop-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>count</para></entry>
+<entry role="parameter_description"><para>return value for the number of color stops, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-color-stop-count.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> if <parameter>pattern</parameter>
+is not a gradient
+pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-color-stop-rgba" role="function" condition="since:1.4">
+<title>cairo_pattern_get_color_stop_rgba&#160;()</title>
+<indexterm zone="cairo-pattern-get-color-stop-rgba" role="1.4"><primary sortas="pattern_get_color_stop_rgba">cairo_pattern_get_color_stop_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_get_color_stop_rgba (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> index</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *offset</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *alpha</parameter>);</programlisting>
+<para>Gets the color and offset information at the given <parameter>index</parameter>
+ for a
+gradient pattern. Values of <parameter>index</parameter>
+ range from 0 to n-1
+where n is the number returned
+by <link linkend="cairo-pattern-get-color-stop-count"><function>cairo_pattern_get_color_stop_count()</function></link>.</para>
+<refsect3 id="cairo-pattern-get-color-stop-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>index</para></entry>
+<entry role="parameter_description"><para>index of the stop to return data for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>offset</para></entry>
+<entry role="parameter_description"><para>return value for the offset of the stop, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>return value for red component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>return value for green component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>return value for blue component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>return value for alpha component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-color-stop-rgba.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or <link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link>
+if <parameter>index</parameter>
+is not valid for the given pattern. If the pattern is
+not a gradient pattern, <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> is
+returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-create-rgb" role="function" condition="since:1.0">
+<title>cairo_pattern_create_rgb&#160;()</title>
+<indexterm zone="cairo-pattern-create-rgb" role="1.0"><primary sortas="pattern_create_rgb">cairo_pattern_create_rgb</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_rgb (<parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>);</programlisting>
+<para>Creates a new <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> corresponding to an opaque color. 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>
+<refsect3 id="cairo-pattern-create-rgb.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-create-rgb.returns" role="returns">
+<title>Returns</title>
+<para> the newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> if successful, or
+an error pattern in case of no memory. The caller owns the
+returned object and should call <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when
+finished with it.</para>
+<para>This function will always return a valid pointer, but if an error
+occurred the pattern status will be set to an error. To inspect
+the status of a pattern use <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-create-rgba" role="function" condition="since:1.0">
+<title>cairo_pattern_create_rgba&#160;()</title>
+<indexterm zone="cairo-pattern-create-rgba" role="1.0"><primary sortas="pattern_create_rgba">cairo_pattern_create_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_rgba (<parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> alpha</parameter>);</programlisting>
+<para>Creates a new <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> corresponding to a translucent color.
+The color components are floating point numbers in the range 0 to</para>
+<orderedlist>
+<listitem><para>If the values passed in are outside that range, they will be
+clamped.</para></listitem>
+</orderedlist>
+<refsect3 id="cairo-pattern-create-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>alpha component of the color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-create-rgba.returns" role="returns">
+<title>Returns</title>
+<para> the newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> if successful, or
+an error pattern in case of no memory. The caller owns the
+returned object and should call <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when
+finished with it.</para>
+<para>This function will always return a valid pointer, but if an error
+occurred the pattern status will be set to an error. To inspect
+the status of a pattern use <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-rgba" role="function" condition="since:1.4">
+<title>cairo_pattern_get_rgba&#160;()</title>
+<indexterm zone="cairo-pattern-get-rgba" role="1.4"><primary sortas="pattern_get_rgba">cairo_pattern_get_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_get_rgba (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *alpha</parameter>);</programlisting>
+<para>Gets the solid color for a solid color pattern.</para>
+<refsect3 id="cairo-pattern-get-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>return value for red component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>return value for green component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>return value for blue component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>return value for alpha component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-rgba.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> if the pattern is not a solid
+color pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-create-for-surface" role="function" condition="since:1.0">
+<title>cairo_pattern_create_for_surface&#160;()</title>
+<indexterm zone="cairo-pattern-create-for-surface" role="1.0"><primary sortas="pattern_create_for_surface">cairo_pattern_create_for_surface</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_for_surface (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Create a new <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> for the given surface.</para>
+<refsect3 id="cairo-pattern-create-for-surface.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-create-for-surface.returns" role="returns">
+<title>Returns</title>
+<para> the newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> if successful, or
+an error pattern in case of no memory. The caller owns the
+returned object and should call <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when
+finished with it.</para>
+<para>This function will always return a valid pointer, but if an error
+occurred the pattern status will be set to an error. To inspect
+the status of a pattern use <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-surface" role="function" condition="since:1.4">
+<title>cairo_pattern_get_surface&#160;()</title>
+<indexterm zone="cairo-pattern-get-surface" role="1.4"><primary sortas="pattern_get_surface">cairo_pattern_get_surface</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_get_surface (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> **surface</parameter>);</programlisting>
+<para>Gets the surface of a surface pattern. The reference returned in
+<parameter>surface</parameter>
+ is owned by the pattern; the caller should call
+<link linkend="cairo-surface-reference"><function>cairo_surface_reference()</function></link> if the surface is to be retained.</para>
+<refsect3 id="cairo-pattern-get-surface.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>return value for surface of pattern, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-surface.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> if the pattern is not a surface
+pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-create-linear" role="function" condition="since:1.0">
+<title>cairo_pattern_create_linear&#160;()</title>
+<indexterm zone="cairo-pattern-create-linear" role="1.0"><primary sortas="pattern_create_linear">cairo_pattern_create_linear</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_linear (<parameter><link linkend="double"><type>double</type></link> x0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y1</parameter>);</programlisting>
+<para>Create a new linear gradient <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> along the line defined
+by (x0, y0) and (x1, y1). Before using the gradient pattern, a
+number of color stops should be defined using
+<link linkend="cairo-pattern-add-color-stop-rgb"><function>cairo_pattern_add_color_stop_rgb()</function></link> or
+<link linkend="cairo-pattern-add-color-stop-rgba"><function>cairo_pattern_add_color_stop_rgba()</function></link>.</para>
+<para>Note: The coordinates here are in pattern space. For a new pattern,
+pattern space is identical to user space, but the relationship
+between the spaces can be changed with <link linkend="cairo-pattern-set-matrix"><function>cairo_pattern_set_matrix()</function></link>.</para>
+<refsect3 id="cairo-pattern-create-linear.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>x0</para></entry>
+<entry role="parameter_description"><para>x coordinate of the start point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y0</para></entry>
+<entry role="parameter_description"><para>y coordinate of the start point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>x coordinate of the end point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>y coordinate of the end point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-create-linear.returns" role="returns">
+<title>Returns</title>
+<para> the newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> if successful, or
+an error pattern in case of no memory. The caller owns the
+returned object and should call <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when
+finished with it.</para>
+<para>This function will always return a valid pointer, but if an error
+occurred the pattern status will be set to an error. To inspect
+the status of a pattern use <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-linear-points" role="function" condition="since:1.4">
+<title>cairo_pattern_get_linear_points&#160;()</title>
+<indexterm zone="cairo-pattern-get-linear-points" role="1.4"><primary sortas="pattern_get_linear_points">cairo_pattern_get_linear_points</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_get_linear_points (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y1</parameter>);</programlisting>
+<para>Gets the gradient endpoints for a linear gradient.</para>
+<refsect3 id="cairo-pattern-get-linear-points.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x0</para></entry>
+<entry role="parameter_description"><para>return value for the x coordinate of the first point, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y0</para></entry>
+<entry role="parameter_description"><para>return value for the y coordinate of the first point, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>return value for the x coordinate of the second point, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>return value for the y coordinate of the second point, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-linear-points.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> if <parameter>pattern</parameter>
+is not a linear
+gradient pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-create-radial" role="function" condition="since:1.0">
+<title>cairo_pattern_create_radial&#160;()</title>
+<indexterm zone="cairo-pattern-create-radial" role="1.0"><primary sortas="pattern_create_radial">cairo_pattern_create_radial</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_radial (<parameter><link linkend="double"><type>double</type></link> cx0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> cy0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> radius0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> cx1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> cy1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> radius1</parameter>);</programlisting>
+<para>Creates a new radial gradient <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> between the two
+circles defined by (cx0, cy0, radius0) and (cx1, cy1, radius1). Before using the
+gradient pattern, a number of color stops should be defined using
+<link linkend="cairo-pattern-add-color-stop-rgb"><function>cairo_pattern_add_color_stop_rgb()</function></link> or
+<link linkend="cairo-pattern-add-color-stop-rgba"><function>cairo_pattern_add_color_stop_rgba()</function></link>.</para>
+<para>Note: The coordinates here are in pattern space. For a new pattern,
+pattern space is identical to user space, but the relationship
+between the spaces can be changed with <link linkend="cairo-pattern-set-matrix"><function>cairo_pattern_set_matrix()</function></link>.</para>
+<refsect3 id="cairo-pattern-create-radial.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cx0</para></entry>
+<entry role="parameter_description"><para>x coordinate for the center of the start circle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cy0</para></entry>
+<entry role="parameter_description"><para>y coordinate for the center of the start circle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>radius0</para></entry>
+<entry role="parameter_description"><para>radius of the start circle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cx1</para></entry>
+<entry role="parameter_description"><para>x coordinate for the center of the end circle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cy1</para></entry>
+<entry role="parameter_description"><para>y coordinate for the center of the end circle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>radius1</para></entry>
+<entry role="parameter_description"><para>radius of the end circle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-create-radial.returns" role="returns">
+<title>Returns</title>
+<para> the newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> if successful, or
+an error pattern in case of no memory. The caller owns the
+returned object and should call <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when
+finished with it.</para>
+<para>This function will always return a valid pointer, but if an error
+occurred the pattern status will be set to an error. To inspect
+the status of a pattern use <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-radial-circles" role="function" condition="since:1.4">
+<title>cairo_pattern_get_radial_circles&#160;()</title>
+<indexterm zone="cairo-pattern-get-radial-circles" role="1.4"><primary sortas="pattern_get_radial_circles">cairo_pattern_get_radial_circles</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_get_radial_circles (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *r0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *r1</parameter>);</programlisting>
+<para>Gets the gradient endpoint circles for a radial gradient, each
+specified as a center coordinate and a radius.</para>
+<refsect3 id="cairo-pattern-get-radial-circles.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x0</para></entry>
+<entry role="parameter_description"><para>return value for the x coordinate of the center of the first circle, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y0</para></entry>
+<entry role="parameter_description"><para>return value for the y coordinate of the center of the first circle, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>r0</para></entry>
+<entry role="parameter_description"><para>return value for the radius of the first circle, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>return value for the x coordinate of the center of the second circle, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>return value for the y coordinate of the center of the second circle, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>r1</para></entry>
+<entry role="parameter_description"><para>return value for the radius of the second circle, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-radial-circles.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> if <parameter>pattern</parameter>
+is not a radial
+gradient pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-create-mesh" role="function" condition="since:1.12">
+<title>cairo_pattern_create_mesh&#160;()</title>
+<indexterm zone="cairo-pattern-create-mesh" role="1.12"><primary sortas="pattern_create_mesh">cairo_pattern_create_mesh</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_mesh (<parameter><type>void</type></parameter>);</programlisting>
+<para>Create a new mesh pattern.</para>
+<para>Mesh patterns are tensor-product patch meshes (type 7 shadings in
+PDF). Mesh patterns may also be used to create other types of
+shadings that are special cases of tensor-product patch meshes such
+as Coons patch meshes (type 6 shading in PDF) and Gouraud-shaded
+triangle meshes (type 4 and 5 shadings in PDF).</para>
+<para>Mesh patterns consist of one or more tensor-product patches, which
+should be defined before using the mesh pattern. Using a mesh
+pattern with a partially defined patch as source or mask will put
+the context in an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<para>A tensor-product patch is defined by 4 Bézier curves (side 0, 1, 2,
+3) and by 4 additional control points (P0, P1, P2, P3) that provide
+further control over the patch and complete the definition of the
+tensor-product patch. The corner C0 is the first point of the
+patch.</para>
+<para>Degenerate sides are permitted so straight lines may be used. A
+zero length line on one side may be used to create 3 sided patches.</para>
+<informalexample><screen>
+ C1 Side 1 C2
+ +---------------+
+ | |
+ | P1 P2 |
+ | |
+Side 0 | | Side 2
+ | |
+ | |
+ | P0 P3 |
+ | |
+ +---------------+
+ C0 Side 3 C3
+</screen></informalexample>
+<para>Each patch is constructed by first calling
+<link linkend="cairo-mesh-pattern-begin-patch"><function>cairo_mesh_pattern_begin_patch()</function></link>, then <link linkend="cairo-mesh-pattern-move-to"><function>cairo_mesh_pattern_move_to()</function></link>
+to specify the first point in the patch (C0). Then the sides are
+specified with calls to <link linkend="cairo-mesh-pattern-curve-to"><function>cairo_mesh_pattern_curve_to()</function></link> and
+<link linkend="cairo-mesh-pattern-line-to"><function>cairo_mesh_pattern_line_to()</function></link>.</para>
+<para>The four additional control points (P0, P1, P2, P3) in a patch can
+be specified with <link linkend="cairo-mesh-pattern-set-control-point"><function>cairo_mesh_pattern_set_control_point()</function></link>.</para>
+<para>At each corner of the patch (C0, C1, C2, C3) a color may be
+specified with <link linkend="cairo-mesh-pattern-set-corner-color-rgb"><function>cairo_mesh_pattern_set_corner_color_rgb()</function></link> or
+<link linkend="cairo-mesh-pattern-set-corner-color-rgba"><function>cairo_mesh_pattern_set_corner_color_rgba()</function></link>. Any corner whose color
+is not explicitly specified defaults to transparent black.</para>
+<para>A Coons patch is a special case of the tensor-product patch where
+the control points are implicitly defined by the sides of the
+patch. The default value for any control point not specified is the
+implicit value for a Coons patch, i.e. if no control points are
+specified the patch is a Coons patch.</para>
+<para>A triangle is a special case of the tensor-product patch where the
+control points are implicitly defined by the sides of the patch,
+all the sides are lines and one of them has length 0, i.e. if the
+patch is specified using just 3 lines, it is a triangle. If the
+corners connected by the 0-length side have the same color, the
+patch is a Gouraud-shaded triangle.</para>
+<para>Patches may be oriented differently to the above diagram. For
+example the first point could be at the top left. The diagram only
+shows the relationship between the sides, corners and control
+points. Regardless of where the first point is located, when
+specifying colors, corner 0 will always be the first point, corner
+1 the point between side 0 and side 1 etc.</para>
+<para>Calling <link linkend="cairo-mesh-pattern-end-patch"><function>cairo_mesh_pattern_end_patch()</function></link> completes the current
+patch. If less than 4 sides have been defined, the first missing
+side is defined as a line from the current point to the first point
+of the patch (C0) and the other sides are degenerate lines from C0
+to C0. The corners between the added sides will all be coincident
+with C0 of the patch and their color will be set to be the same as
+the color of C0.</para>
+<para>Additional patches may be added with additional calls to
+<link linkend="cairo-mesh-pattern-begin-patch"><function>cairo_mesh_pattern_begin_patch()</function></link>/<link linkend="cairo-mesh-pattern-end-patch"><function>cairo_mesh_pattern_end_patch()</function></link>.</para>
+<informalexample><programlisting>
+cairo_pattern_t *pattern = cairo_pattern_create_mesh ();
+
+/&ast; Add a Coons patch &ast;/
+cairo_mesh_pattern_begin_patch (pattern);
+cairo_mesh_pattern_move_to (pattern, 0, 0);
+cairo_mesh_pattern_curve_to (pattern, 30, -30, 60, 30, 100, 0);
+cairo_mesh_pattern_curve_to (pattern, 60, 30, 130, 60, 100, 100);
+cairo_mesh_pattern_curve_to (pattern, 60, 70, 30, 130, 0, 100);
+cairo_mesh_pattern_curve_to (pattern, 30, 70, -30, 30, 0, 0);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 3, 1, 1, 0);
+cairo_mesh_pattern_end_patch (pattern);
+
+/&ast; Add a Gouraud-shaded triangle &ast;/
+cairo_mesh_pattern_begin_patch (pattern)
+cairo_mesh_pattern_move_to (pattern, 100, 100);
+cairo_mesh_pattern_line_to (pattern, 130, 130);
+cairo_mesh_pattern_line_to (pattern, 130, 70);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 0, 1, 0, 0);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 1, 0, 1, 0);
+cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1);
+cairo_mesh_pattern_end_patch (pattern)
+</programlisting></informalexample>
+<para>When two patches overlap, the last one that has been added is drawn
+over the first one.</para>
+<para>When a patch folds over itself, points are sorted depending on
+their parameter coordinates inside the patch. The v coordinate
+ranges from 0 to 1 when moving from side 3 to side 1; the u
+coordinate ranges from 0 to 1 when going from side 0 to side</para>
+<orderedlist>
+<listitem>
+<para>Points with higher v coordinate hide points with lower v
+coordinate. When two points have the same v coordinate, the one
+with higher u coordinate is above. This means that points nearer to
+side 1 are above points nearer to side 3; when this is not
+sufficient to decide which point is above (for example when both
+points belong to side 1 or side 3) points nearer to side 2 are
+above points nearer to side 0.</para>
+</listitem>
+</orderedlist>
+<para>For a complete definition of tensor-product patches, see the PDF
+specification (ISO32000), which describes the parametrization in
+detail.</para>
+<para>Note: The coordinates are always in pattern space. For a new
+pattern, pattern space is identical to user space, but the
+relationship between the spaces can be changed with
+<link linkend="cairo-pattern-set-matrix"><function>cairo_pattern_set_matrix()</function></link>.</para>
+<refsect3 id="cairo-pattern-create-mesh.returns" role="returns">
+<title>Returns</title>
+<para> the newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> if successful, or
+an error pattern in case of no memory. The caller owns the returned
+object and should call <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when finished with
+it.</para>
+<para>This function will always return a valid pointer, but if an error
+occurred the pattern status will be set to an error. To inspect the
+status of a pattern use <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-begin-patch" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_begin_patch&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-begin-patch" role="1.12"><primary sortas="mesh_pattern_begin_patch">cairo_mesh_pattern_begin_patch</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_begin_patch (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Begin a patch in a mesh pattern.</para>
+<para>After calling this function, the patch shape should be defined with
+<link linkend="cairo-mesh-pattern-move-to"><function>cairo_mesh_pattern_move_to()</function></link>, <link linkend="cairo-mesh-pattern-line-to"><function>cairo_mesh_pattern_line_to()</function></link> and
+<link linkend="cairo-mesh-pattern-curve-to"><function>cairo_mesh_pattern_curve_to()</function></link>.</para>
+<para>After defining the patch, <link linkend="cairo-mesh-pattern-end-patch"><function>cairo_mesh_pattern_end_patch()</function></link> must be
+called before using <parameter>pattern</parameter>
+ as a source or mask.</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>pattern</parameter>
+ already has a
+current patch, it will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-begin-patch.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-end-patch" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_end_patch&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-end-patch" role="1.12"><primary sortas="mesh_pattern_end_patch">cairo_mesh_pattern_end_patch</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_end_patch (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Indicates the end of the current patch in a mesh pattern.</para>
+<para>If the current patch has less than 4 sides, it is closed with a
+straight line from the current point to the first point of the
+patch as if <link linkend="cairo-mesh-pattern-line-to"><function>cairo_mesh_pattern_line_to()</function></link> was used.</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>pattern</parameter>
+ has no current
+patch or the current patch has no current point, <parameter>pattern</parameter>
+ will be
+put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-end-patch.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-move-to" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_move_to&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-move-to" role="1.12"><primary sortas="mesh_pattern_move_to">cairo_mesh_pattern_move_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_move_to (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Define the first point of the current patch in a mesh pattern.</para>
+<para>After this call the current point will be (<parameter>x</parameter>
+, <parameter>y</parameter>
+).</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>pattern</parameter>
+ has no current
+patch or the current patch already has at least one side, <parameter>pattern</parameter>
+
+will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-move-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the new position</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the new position</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-line-to" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_line_to&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-line-to" role="1.12"><primary sortas="mesh_pattern_line_to">cairo_mesh_pattern_line_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_line_to (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Adds a line to the current patch from the current point to position
+(<parameter>x</parameter>
+, <parameter>y</parameter>
+) in pattern-space coordinates.</para>
+<para>If there is no current point before the call to
+<link linkend="cairo-mesh-pattern-line-to"><function>cairo_mesh_pattern_line_to()</function></link> this function will behave as
+cairo_mesh_pattern_move_to(<parameter>pattern</parameter>
+, <parameter>x</parameter>
+, <parameter>y</parameter>
+).</para>
+<para>After this call the current point will be (<parameter>x</parameter>
+, <parameter>y</parameter>
+).</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>pattern</parameter>
+ has no current
+patch or the current patch already has 4 sides, <parameter>pattern</parameter>
+ will be
+put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-line-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the end of the new line</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the end of the new line</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-curve-to" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_curve_to&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-curve-to" role="1.12"><primary sortas="mesh_pattern_curve_to">cairo_mesh_pattern_curve_to</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_curve_to (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x3</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y3</parameter>);</programlisting>
+<para>Adds a cubic Bézier spline to the current patch from the current
+point to position (<parameter>x3</parameter>
+, <parameter>y3</parameter>
+) in pattern-space coordinates, using
+(<parameter>x1</parameter>
+, <parameter>y1</parameter>
+) and (<parameter>x2</parameter>
+, <parameter>y2</parameter>
+) as the control points.</para>
+<para>If the current patch has no current point before the call to
+<link linkend="cairo-mesh-pattern-curve-to"><function>cairo_mesh_pattern_curve_to()</function></link>, this function will behave as if
+preceded by a call to cairo_mesh_pattern_move_to(<parameter>pattern</parameter>
+, <parameter>x1</parameter>
+,
+<parameter>y1</parameter>
+).</para>
+<para>After this call the current point will be (<parameter>x3</parameter>
+, <parameter>y3</parameter>
+).</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>pattern</parameter>
+ has no current
+patch or the current patch already has 4 sides, <parameter>pattern</parameter>
+ will be
+put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-curve-to.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the first control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the first control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x2</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the second control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y2</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the second control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x3</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the end of the curve</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y3</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the end of the curve</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-set-control-point" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_set_control_point&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-set-control-point" role="1.12"><primary sortas="mesh_pattern_set_control_point">cairo_mesh_pattern_set_control_point</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_set_control_point (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> point_num</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Set an internal control point of the current patch.</para>
+<para>Valid values for <parameter>point_num</parameter>
+ are from 0 to 3 and identify the
+control points as explained in <link linkend="cairo-pattern-create-mesh"><function>cairo_pattern_create_mesh()</function></link>.</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>point_num</parameter>
+ is not valid,
+<parameter>pattern</parameter>
+ will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link>. If <parameter>pattern</parameter>
+ has no current patch,
+<parameter>pattern</parameter>
+ will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-set-control-point.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>point_num</para></entry>
+<entry role="parameter_description"><para>the control point to set the position for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the X coordinate of the control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the Y coordinate of the control point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-set-corner-color-rgb" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_set_corner_color_rgb&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-set-corner-color-rgb" role="1.12"><primary sortas="mesh_pattern_set_corner_color_rgb">cairo_mesh_pattern_set_corner_color_rgb</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_set_corner_color_rgb
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> corner_num</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>);</programlisting>
+<para>Sets the color of a corner of the current patch in a mesh pattern.</para>
+<para>The color is specified in the same way as in <link linkend="cairo-set-source-rgb"><function>cairo_set_source_rgb()</function></link>.</para>
+<para>Valid values for <parameter>corner_num</parameter>
+ are from 0 to 3 and identify the
+corners as explained in <link linkend="cairo-pattern-create-mesh"><function>cairo_pattern_create_mesh()</function></link>.</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>corner_num</parameter>
+ is not valid,
+<parameter>pattern</parameter>
+ will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link>. If <parameter>pattern</parameter>
+ has no current patch,
+<parameter>pattern</parameter>
+ will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-set-corner-color-rgb.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>corner_num</para></entry>
+<entry role="parameter_description"><para>the corner to set the color for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-set-corner-color-rgba" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_set_corner_color_rgba&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-set-corner-color-rgba" role="1.12"><primary sortas="mesh_pattern_set_corner_color_rgba">cairo_mesh_pattern_set_corner_color_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mesh_pattern_set_corner_color_rgba
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> corner_num</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> alpha</parameter>);</programlisting>
+<para>Sets the color of a corner of the current patch in a mesh pattern.</para>
+<para>The color is specified in the same way as in <link linkend="cairo-set-source-rgba"><function>cairo_set_source_rgba()</function></link>.</para>
+<para>Valid values for <parameter>corner_num</parameter>
+ are from 0 to 3 and identify the
+corners as explained in <link linkend="cairo-pattern-create-mesh"><function>cairo_pattern_create_mesh()</function></link>.</para>
+<para>Note: If <parameter>pattern</parameter>
+ is not a mesh pattern then <parameter>pattern</parameter>
+ will be put
+into an error status with a status of
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>. If <parameter>corner_num</parameter>
+ is not valid,
+<parameter>pattern</parameter>
+ will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link>. If <parameter>pattern</parameter>
+ has no current patch,
+<parameter>pattern</parameter>
+ will be put into an error status with a status of
+<link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+<refsect3 id="cairo-mesh-pattern-set-corner-color-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>corner_num</para></entry>
+<entry role="parameter_description"><para>the corner to set the color for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>alpha component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-get-patch-count" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_get_patch_count&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-get-patch-count" role="1.12"><primary sortas="mesh_pattern_get_patch_count">cairo_mesh_pattern_get_patch_count</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_mesh_pattern_get_patch_count (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> *count</parameter>);</programlisting>
+<para>Gets the number of patches specified in the given mesh pattern.</para>
+<para>The number only includes patches which have been finished by
+calling <link linkend="cairo-mesh-pattern-end-patch"><function>cairo_mesh_pattern_end_patch()</function></link>. For example it will be 0
+during the definition of the first patch.</para>
+<refsect3 id="cairo-mesh-pattern-get-patch-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>count</para></entry>
+<entry role="parameter_description"><para>return value for the number patches, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-mesh-pattern-get-patch-count.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or
+<link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> if <parameter>pattern</parameter>
+is not a mesh
+pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-get-path" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_get_path&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-get-path" role="1.12"><primary sortas="mesh_pattern_get_path">cairo_mesh_pattern_get_path</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-path-t"><returnvalue>cairo_path_t</returnvalue></link>&#160;*
+cairo_mesh_pattern_get_path (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> patch_num</parameter>);</programlisting>
+<para>Gets path defining the patch <parameter>patch_num</parameter>
+ for a mesh
+pattern.</para>
+<para><parameter>patch_num</parameter>
+ can range from 0 to n-1 where n is the number returned by
+<link linkend="cairo-mesh-pattern-get-patch-count"><function>cairo_mesh_pattern_get_patch_count()</function></link>.</para>
+<refsect3 id="cairo-mesh-pattern-get-path.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>patch_num</para></entry>
+<entry role="parameter_description"><para>the patch number to return data for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-mesh-pattern-get-path.returns" role="returns">
+<title>Returns</title>
+<para> the path defining the patch, or a path with status
+<link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link> if <parameter>patch_num</parameter>
+or <parameter>point_num</parameter>
+is not
+valid for <parameter>pattern</parameter>
+. If <parameter>pattern</parameter>
+is not a mesh pattern, a path with
+status <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> is returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-get-control-point" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_get_control_point&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-get-control-point" role="1.12"><primary sortas="mesh_pattern_get_control_point">cairo_mesh_pattern_get_control_point</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_mesh_pattern_get_control_point (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> patch_num</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> point_num</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y</parameter>);</programlisting>
+<para>Gets the control point <parameter>point_num</parameter>
+ of patch <parameter>patch_num</parameter>
+ for a mesh
+pattern.</para>
+<para><parameter>patch_num</parameter>
+ can range from 0 to n-1 where n is the number returned by
+<link linkend="cairo-mesh-pattern-get-patch-count"><function>cairo_mesh_pattern_get_patch_count()</function></link>.</para>
+<para>Valid values for <parameter>point_num</parameter>
+ are from 0 to 3 and identify the
+control points as explained in <link linkend="cairo-pattern-create-mesh"><function>cairo_pattern_create_mesh()</function></link>.</para>
+<refsect3 id="cairo-mesh-pattern-get-control-point.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>patch_num</para></entry>
+<entry role="parameter_description"><para>the patch number to return data for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>point_num</para></entry>
+<entry role="parameter_description"><para>the control point number to return data for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>return value for the x coordinate of the control point, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>return value for the y coordinate of the control point, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-mesh-pattern-get-control-point.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or <link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link>
+if <parameter>patch_num</parameter>
+or <parameter>point_num</parameter>
+is not valid for <parameter>pattern</parameter>
+. If <parameter>pattern</parameter>
+is not a mesh pattern, <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link> is
+returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-mesh-pattern-get-corner-color-rgba" role="function" condition="since:1.12">
+<title>cairo_mesh_pattern_get_corner_color_rgba&#160;()</title>
+<indexterm zone="cairo-mesh-pattern-get-corner-color-rgba" role="1.12"><primary sortas="mesh_pattern_get_corner_color_rgba">cairo_mesh_pattern_get_corner_color_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_mesh_pattern_get_corner_color_rgba
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> patch_num</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> corner_num</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *alpha</parameter>);</programlisting>
+<para>Gets the color information in corner <parameter>corner_num</parameter>
+ of patch
+<parameter>patch_num</parameter>
+ for a mesh pattern.</para>
+<para><parameter>patch_num</parameter>
+ can range from 0 to n-1 where n is the number returned by
+<link linkend="cairo-mesh-pattern-get-patch-count"><function>cairo_mesh_pattern_get_patch_count()</function></link>.</para>
+<para>Valid values for <parameter>corner_num</parameter>
+ are from 0 to 3 and identify the
+corners as explained in <link linkend="cairo-pattern-create-mesh"><function>cairo_pattern_create_mesh()</function></link>.</para>
+<refsect3 id="cairo-mesh-pattern-get-corner-color-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>patch_num</para></entry>
+<entry role="parameter_description"><para>the patch number to return data for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>corner_num</para></entry>
+<entry role="parameter_description"><para>the corner number to return data for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>return value for red component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>return value for green component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>return value for blue component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>return value for alpha component of color, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-mesh-pattern-get-corner-color-rgba.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, or <link linkend="CAIRO-STATUS-INVALID-INDEX:CAPS"><literal>CAIRO_STATUS_INVALID_INDEX</literal></link>
+if <parameter>patch_num</parameter>
+or <parameter>corner_num</parameter>
+is not valid for <parameter>pattern</parameter>
+. If
+<parameter>pattern</parameter>
+is not a mesh pattern, <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>
+is returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-pattern-reference" role="function" condition="since:1.0">
+<title>cairo_pattern_reference&#160;()</title>
+<indexterm zone="cairo-pattern-reference" role="1.0"><primary sortas="pattern_reference">cairo_pattern_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_reference (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Increases the reference count on <parameter>pattern</parameter>
+ by one. This prevents
+<parameter>pattern</parameter>
+ from being destroyed until a matching call to
+<link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> is made.</para>
+<para>Use <link linkend="cairo-pattern-get-reference-count"><function>cairo_pattern_get_reference_count()</function></link> to get the number of
+references to a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>.</para>
+<refsect3 id="cairo-pattern-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-destroy" role="function" condition="since:1.0">
+<title>cairo_pattern_destroy&#160;()</title>
+<indexterm zone="cairo-pattern-destroy" role="1.0"><primary sortas="pattern_destroy">cairo_pattern_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_destroy (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Decreases the reference count on <parameter>pattern</parameter>
+ by one. If the result is
+zero, then <parameter>pattern</parameter>
+ and all associated resources are freed. See
+<link linkend="cairo-pattern-reference"><function>cairo_pattern_reference()</function></link>.</para>
+<refsect3 id="cairo-pattern-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-status" role="function" condition="since:1.0">
+<title>cairo_pattern_status&#160;()</title>
+<indexterm zone="cairo-pattern-status" role="1.0"><primary sortas="pattern_status">cairo_pattern_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_status (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this
+pattern.</para>
+<refsect3 id="cairo-pattern-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>,
+<link linkend="CAIRO-STATUS-INVALID-MATRIX:CAPS"><literal>CAIRO_STATUS_INVALID_MATRIX</literal></link>, <link linkend="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_PATTERN_TYPE_MISMATCH</literal></link>,
+or <link linkend="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><literal>CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-set-extend" role="function" condition="since:1.0">
+<title>cairo_pattern_set_extend&#160;()</title>
+<indexterm zone="cairo-pattern-set-extend" role="1.0"><primary sortas="pattern_set_extend">cairo_pattern_set_extend</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_set_extend (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-extend-t"><type>cairo_extend_t</type></link> extend</parameter>);</programlisting>
+<para>Sets the mode to be used for drawing outside the area of a pattern.
+See <link linkend="cairo-extend-t"><type>cairo_extend_t</type></link> for details on the semantics of each extend
+strategy.</para>
+<para>The default extend mode is <link linkend="CAIRO-EXTEND-NONE:CAPS"><literal>CAIRO_EXTEND_NONE</literal></link> for surface patterns
+and <link linkend="CAIRO-EXTEND-PAD:CAPS"><literal>CAIRO_EXTEND_PAD</literal></link> for gradient patterns.</para>
+<refsect3 id="cairo-pattern-set-extend.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extend</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-extend-t"><type>cairo_extend_t</type></link> describing how the area outside of the
+pattern will be drawn</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-extend" role="function" condition="since:1.0">
+<title>cairo_pattern_get_extend&#160;()</title>
+<indexterm zone="cairo-pattern-get-extend" role="1.0"><primary sortas="pattern_get_extend">cairo_pattern_get_extend</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-extend-t"><returnvalue>cairo_extend_t</returnvalue></link>
+cairo_pattern_get_extend (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Gets the current extend mode for a pattern. See <link linkend="cairo-extend-t"><type>cairo_extend_t</type></link>
+for details on the semantics of each extend strategy.</para>
+<refsect3 id="cairo-pattern-get-extend.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-extend.returns" role="returns">
+<title>Returns</title>
+<para> the current extend strategy used for drawing the
+pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-set-filter" role="function" condition="since:1.0">
+<title>cairo_pattern_set_filter&#160;()</title>
+<indexterm zone="cairo-pattern-set-filter" role="1.0"><primary sortas="pattern_set_filter">cairo_pattern_set_filter</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_set_filter (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-filter-t"><type>cairo_filter_t</type></link> filter</parameter>);</programlisting>
+<para>Sets the filter to be used for resizing when using this pattern.
+See <link linkend="cairo-filter-t"><type>cairo_filter_t</type></link> for details on each filter.</para>
+<itemizedlist>
+<listitem>
+<para>Note that you might want to control filtering even when you do not
+have an explicit <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> object, (for example when using
+<link linkend="cairo-set-source-surface"><function>cairo_set_source_surface()</function></link>). In these cases, it is convenient to
+use <link linkend="cairo-get-source"><function>cairo_get_source()</function></link> to get access to the pattern that cairo
+creates implicitly. For example:</para>
+</listitem>
+</itemizedlist>
+<informalexample><programlisting>
+cairo_set_source_surface (cr, image, x, y);
+cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
+</programlisting></informalexample>
+<refsect3 id="cairo-pattern-set-filter.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>filter</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-filter-t"><type>cairo_filter_t</type></link> describing the filter to use for resizing
+the pattern</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-filter" role="function" condition="since:1.0">
+<title>cairo_pattern_get_filter&#160;()</title>
+<indexterm zone="cairo-pattern-get-filter" role="1.0"><primary sortas="pattern_get_filter">cairo_pattern_get_filter</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-filter-t"><returnvalue>cairo_filter_t</returnvalue></link>
+cairo_pattern_get_filter (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Gets the current filter for a pattern. See <link linkend="cairo-filter-t"><type>cairo_filter_t</type></link>
+for details on each filter.</para>
+<refsect3 id="cairo-pattern-get-filter.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-filter.returns" role="returns">
+<title>Returns</title>
+<para> the current filter used for resizing the pattern.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-set-matrix" role="function" condition="since:1.0">
+<title>cairo_pattern_set_matrix&#160;()</title>
+<indexterm zone="cairo-pattern-set-matrix" role="1.0"><primary sortas="pattern_set_matrix">cairo_pattern_set_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_set_matrix (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</programlisting>
+<para>Sets the pattern's transformation matrix to <parameter>matrix</parameter>
+. This matrix is
+a transformation from user space to pattern space.</para>
+<para>When a pattern is first created it always has the identity matrix
+for its transformation matrix, which means that pattern space is
+initially identical to user space.</para>
+<para>Important: Please note that the direction of this transformation
+matrix is from user space to pattern space. This means that if you
+imagine the flow from a pattern to user space (and on to device
+space), then coordinates in that flow will be transformed by the
+inverse of the pattern matrix.</para>
+<para>For example, if you want to make a pattern appear twice as large as
+it does by default the correct code to use is:</para>
+<informalexample><programlisting>
+cairo_matrix_init_scale (&amp;matrix, 0.5, 0.5);
+cairo_pattern_set_matrix (pattern, &amp;matrix);
+</programlisting></informalexample>
+<para>Meanwhile, using values of 2.0 rather than 0.5 in the code above
+would cause the pattern to appear at half of its default size.</para>
+<para>Also, please note the discussion of the user-space locking
+semantics of <link linkend="cairo-set-source"><function>cairo_set_source()</function></link>.</para>
+<refsect3 id="cairo-pattern-set-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-matrix" role="function" condition="since:1.0">
+<title>cairo_pattern_get_matrix&#160;()</title>
+<indexterm zone="cairo-pattern-get-matrix" role="1.0"><primary sortas="pattern_get_matrix">cairo_pattern_get_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pattern_get_matrix (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</programlisting>
+<para>Stores the pattern's transformation matrix into <parameter>matrix</parameter>
+.</para>
+<refsect3 id="cairo-pattern-get-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>return value for the matrix</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-type" role="function" condition="since:1.2">
+<title>cairo_pattern_get_type&#160;()</title>
+<indexterm zone="cairo-pattern-get-type" role="1.2"><primary sortas="pattern_get_type">cairo_pattern_get_type</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-type-t"><returnvalue>cairo_pattern_type_t</returnvalue></link>
+cairo_pattern_get_type (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Get the pattern's type. See <link linkend="cairo-pattern-type-t"><type>cairo_pattern_type_t</type></link> for available
+types.</para>
+<refsect3 id="cairo-pattern-get-type.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-type.returns" role="returns">
+<title>Returns</title>
+<para> The type of <parameter>pattern</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-reference-count" role="function" condition="since:1.4">
+<title>cairo_pattern_get_reference_count&#160;()</title>
+<indexterm zone="cairo-pattern-get-reference-count" role="1.4"><primary sortas="pattern_get_reference_count">cairo_pattern_get_reference_count</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_pattern_get_reference_count (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Returns the current reference count of <parameter>pattern</parameter>
+.</para>
+<refsect3 id="cairo-pattern-get-reference-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-reference-count.returns" role="returns">
+<title>Returns</title>
+<para> the current reference count of <parameter>pattern</parameter>
+. If the
+object is a nil object, 0 will be returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-set-user-data" role="function" condition="since:1.4">
+<title>cairo_pattern_set_user_data&#160;()</title>
+<indexterm zone="cairo-pattern-set-user-data" role="1.4"><primary sortas="pattern_set_user_data">cairo_pattern_set_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_pattern_set_user_data (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>);</programlisting>
+<para>Attach user data to <parameter>pattern</parameter>
+. To remove user data from a surface,
+call this function with the key that was used to set it and <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+for <parameter>data</parameter>
+.</para>
+<refsect3 id="cairo-pattern-set-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to attach to the <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> which will be called when the
+<link linkend="cairo-t"><type>cairo_t</type></link> is destroyed or when new user data is attached using the
+same key.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-set-user-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-pattern-get-user-data" role="function" condition="since:1.4">
+<title>cairo_pattern_get_user_data&#160;()</title>
+<indexterm zone="cairo-pattern-get-user-data" role="1.4"><primary sortas="pattern_get_user_data">cairo_pattern_get_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_pattern_get_user_data (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>);</programlisting>
+<para>Return user data previously attached to <parameter>pattern</parameter>
+ using the
+specified key. If no user data has been attached with the given
+key this function returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-pattern-get-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-get-user-data.returns" role="returns">
+<title>Returns</title>
+<para> the user data previously attached or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-pattern-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-pattern-t" role="typedef" condition="since:1.0">
+<title>cairo_pattern_t</title>
+<indexterm zone="cairo-pattern-t" role="1.0"><primary sortas="pattern_t">cairo_pattern_t</primary></indexterm>
+<programlisting language="C">typedef struct _cairo_pattern cairo_pattern_t;
+</programlisting>
+<para>A <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> represents a source when drawing onto a
+surface. There are different subtypes of <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>,
+for different types of sources; for example,
+<link linkend="cairo-pattern-create-rgb"><function>cairo_pattern_create_rgb()</function></link> creates a pattern for a solid
+opaque color.</para>
+<para>Other than various
+<function>cairo_pattern_create_<emphasis>type</emphasis>()</function>
+functions, some of the pattern types can be implicitly created using various
+<function>cairo_set_source_<emphasis>type</emphasis>()</function> functions;
+for example <link linkend="cairo-set-source-rgb"><function>cairo_set_source_rgb()</function></link>.</para>
+<para>The type of a pattern can be queried with <link linkend="cairo-pattern-get-type"><function>cairo_pattern_get_type()</function></link>.</para>
+<para>Memory management of <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> is done with
+<link linkend="cairo-pattern-reference"><function>cairo_pattern_reference()</function></link> and <link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-extend-t" role="enum" condition="since:1.0">
+<title>enum cairo_extend_t</title>
+<indexterm zone="cairo-extend-t" role="1.0"><primary sortas="extend_t">cairo_extend_t</primary></indexterm>
+<para><link linkend="cairo-extend-t"><type>cairo_extend_t</type></link> is used to describe how pattern color/alpha will be
+determined for areas "outside" the pattern's natural area, (for
+example, outside the surface bounds or outside the gradient
+geometry).</para>
+<para>Mesh patterns are not affected by the extend mode.</para>
+<para>The default extend mode is <link linkend="CAIRO-EXTEND-NONE:CAPS"><literal>CAIRO_EXTEND_NONE</literal></link> for surface patterns
+and <link linkend="CAIRO-EXTEND-PAD:CAPS"><literal>CAIRO_EXTEND_PAD</literal></link> for gradient patterns.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-extend-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-EXTEND-NONE:CAPS">CAIRO_EXTEND_NONE</para></entry>
+<entry role="enum_member_description"><para>pixels outside of the source pattern
+ are fully transparent (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-EXTEND-REPEAT:CAPS">CAIRO_EXTEND_REPEAT</para></entry>
+<entry role="enum_member_description"><para>the pattern is tiled by repeating (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-EXTEND-REFLECT:CAPS">CAIRO_EXTEND_REFLECT</para></entry>
+<entry role="enum_member_description"><para>the pattern is tiled by reflecting
+ at the edges (Since 1.0; but only implemented for surface patterns since 1.6)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-EXTEND-PAD:CAPS">CAIRO_EXTEND_PAD</para></entry>
+<entry role="enum_member_description"><para>pixels outside of the pattern copy
+ the closest pixel from the source (Since 1.2; but only
+ implemented for surface patterns since 1.6)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-filter-t" role="enum" condition="since:1.0">
+<title>enum cairo_filter_t</title>
+<indexterm zone="cairo-filter-t" role="1.0"><primary sortas="filter_t">cairo_filter_t</primary></indexterm>
+<para><link linkend="cairo-filter-t"><type>cairo_filter_t</type></link> is used to indicate what filtering should be
+applied when reading pixel values from patterns. See
+<link linkend="cairo-pattern-set-filter"><function>cairo_pattern_set_filter()</function></link> for indicating the desired filter to be
+used with a particular pattern.</para>
+<refsect3 id="cairo-filter-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILTER-FAST:CAPS">CAIRO_FILTER_FAST</para></entry>
+<entry role="enum_member_description"><para>A high-performance filter, with quality similar
+ to <link linkend="CAIRO-FILTER-NEAREST:CAPS"><literal>CAIRO_FILTER_NEAREST</literal></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILTER-GOOD:CAPS">CAIRO_FILTER_GOOD</para></entry>
+<entry role="enum_member_description"><para>A reasonable-performance filter, with quality
+ similar to <link linkend="CAIRO-FILTER-BILINEAR:CAPS"><literal>CAIRO_FILTER_BILINEAR</literal></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILTER-BEST:CAPS">CAIRO_FILTER_BEST</para></entry>
+<entry role="enum_member_description"><para>The highest-quality available, performance may
+ not be suitable for interactive use. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILTER-NEAREST:CAPS">CAIRO_FILTER_NEAREST</para></entry>
+<entry role="enum_member_description"><para>Nearest-neighbor filtering (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILTER-BILINEAR:CAPS">CAIRO_FILTER_BILINEAR</para></entry>
+<entry role="enum_member_description"><para>Linear interpolation in two dimensions (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILTER-GAUSSIAN:CAPS">CAIRO_FILTER_GAUSSIAN</para></entry>
+<entry role="enum_member_description"><para>This filter value is currently
+ unimplemented, and should not be used in current code. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-pattern-type-t" role="enum" condition="since:1.2">
+<title>enum cairo_pattern_type_t</title>
+<indexterm zone="cairo-pattern-type-t" role="1.2"><primary sortas="pattern_type_t">cairo_pattern_type_t</primary></indexterm>
+<para><link linkend="cairo-pattern-type-t"><type>cairo_pattern_type_t</type></link> is used to describe the type of a given pattern.</para>
+<para>The type of a pattern is determined by the function used to create
+it. The <link linkend="cairo-pattern-create-rgb"><function>cairo_pattern_create_rgb()</function></link> and <link linkend="cairo-pattern-create-rgba"><function>cairo_pattern_create_rgba()</function></link>
+functions create SOLID patterns. The remaining
+cairo_pattern_create<!-- --> functions map to pattern types in obvious
+ways.</para>
+<para>The pattern type can be queried with <link linkend="cairo-pattern-get-type"><function>cairo_pattern_get_type()</function></link></para>
+<para>Most <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> functions can be called with a pattern of any
+type, (though trying to change the extend or filter for a solid
+pattern will have no effect). A notable exception is
+<link linkend="cairo-pattern-add-color-stop-rgb"><function>cairo_pattern_add_color_stop_rgb()</function></link> and
+<link linkend="cairo-pattern-add-color-stop-rgba"><function>cairo_pattern_add_color_stop_rgba()</function></link> which must only be called with
+gradient patterns (either LINEAR or RADIAL). Otherwise the pattern
+will be shutdown and put into an error state.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-pattern-type-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATTERN-TYPE-SOLID:CAPS">CAIRO_PATTERN_TYPE_SOLID</para></entry>
+<entry role="enum_member_description"><para>The pattern is a solid (uniform)
+color. It may be opaque or translucent, since 1.2.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATTERN-TYPE-SURFACE:CAPS">CAIRO_PATTERN_TYPE_SURFACE</para></entry>
+<entry role="enum_member_description"><para>The pattern is a based on a surface (an image), since 1.2.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATTERN-TYPE-LINEAR:CAPS">CAIRO_PATTERN_TYPE_LINEAR</para></entry>
+<entry role="enum_member_description"><para>The pattern is a linear gradient, since 1.2.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATTERN-TYPE-RADIAL:CAPS">CAIRO_PATTERN_TYPE_RADIAL</para></entry>
+<entry role="enum_member_description"><para>The pattern is a radial gradient, since 1.2.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATTERN-TYPE-MESH:CAPS">CAIRO_PATTERN_TYPE_MESH</para></entry>
+<entry role="enum_member_description"><para>The pattern is a mesh, since 1.12.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PATTERN-TYPE-RASTER-SOURCE:CAPS">CAIRO_PATTERN_TYPE_RASTER_SOURCE</para></entry>
+<entry role="enum_member_description"><para>The pattern is a user pattern providing raster data, since 1.12.</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-pattern-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-t"><type>cairo_t</type></link>, <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-pdf.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-pdf.xml
new file mode 100644
index 0000000..c0c5b8e
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-pdf.xml
@@ -0,0 +1,595 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-PDF-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-PDF-Surfaces.top_of_page">PDF Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>PDF Surfaces</refname>
+<refpurpose>Rendering PDF documents</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-PDF-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-create">cairo_pdf_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-create-for-stream">cairo_pdf_surface_create_for_stream</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-restrict-to-version">cairo_pdf_surface_restrict_to_version</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-get-versions">cairo_pdf_get_versions</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pdf-version-to-string">cairo_pdf_version_to_string</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-set-size">cairo_pdf_surface_set_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-add-outline">cairo_pdf_surface_add_outline</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-set-metadata">cairo_pdf_surface_set_metadata</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-set-page-label">cairo_pdf_surface_set_page_label</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pdf-surface-set-thumbnail-size">cairo_pdf_surface_set_thumbnail_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-PDF-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-PDF-SURFACE:CAPS">CAIRO_HAS_PDF_SURFACE</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-PDF-OUTLINE-ROOT:CAPS">CAIRO_PDF_OUTLINE_ROOT</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-pdf-outline-flags-t">cairo_pdf_outline_flags_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-pdf-metadata-t">cairo_pdf_metadata_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-pdf-version-t">cairo_pdf_version_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-PDF-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The PDF surface is used to render cairo graphics to Adobe
+PDF files and is a multi-page vector surface backend.</para>
+<para>The following mime types are supported: <link linkend="CAIRO-MIME-TYPE-JPEG:CAPS"><literal>CAIRO_MIME_TYPE_JPEG</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-JP2:CAPS"><literal>CAIRO_MIME_TYPE_JP2</literal></link>, <link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><literal>CAIRO_MIME_TYPE_UNIQUE_ID</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-JBIG2:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2</literal></link>, <link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX</literal></link>, <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link>.</para>
+<refsect2><title>JBIG2 Images</title><para>JBIG2 data in PDF must be in the embedded format as described in
+ISO/IEC 11544. Image specific JBIG2 data must be in
+<link linkend="CAIRO-MIME-TYPE-JBIG2:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2</literal></link>. Any global segments in the JBIG2 data
+(segments with page association field set to 0) must be in
+<link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL</literal></link>. The global data may be shared by
+multiple images. All images sharing the same global data must set
+<link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</literal></link> to a unique identifier. At least
+one of the images must provide the global data using
+<link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL</literal></link>. The global data will only be
+embedded once and shared by all JBIG2 images with the same
+<link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</literal></link>.</para>
+</refsect2>
+<refsect2 id="ccitt"><title>CCITT Fax Images</title><para>The <link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX</literal></link> mime data requires a number of decoding
+parameters These parameters are specified using <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link>.</para>
+<para><link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link> mime data must contain a string of the form
+"param1=value1 param2=value2 ...".</para>
+<para><parameter>Columns</parameter>
+: [required] An integer specifying the width of the image in pixels.</para>
+<para><parameter>Rows</parameter>
+: [required] An integer specifying the height of the image in scan lines.</para>
+<para><parameter>K</parameter>
+: [optional] An integer identifying the encoding scheme used. &lt; 0
+is 2 dimensional Group 4, = 0 is Group3 1 dimensional, &gt; 0 is mixed 1
+and 2 dimensional encoding. Default is 0.</para>
+<para><parameter>EndOfLine</parameter>
+: [optional] If true end-of-line bit patterns are present. Default is false.</para>
+<para><parameter>EncodedByteAlign</parameter>
+: [optional] If true the end of line is padded
+with 0 bits so the next line begins on a byte boundary. Default is false.</para>
+<para><parameter>EndOfBlock</parameter>
+: [optional] If true the data contains an end-of-block pattern. Default is true.</para>
+<para><parameter>BlackIs1</parameter>
+: [optional] If true 1 bits are black pixels. Default is false.</para>
+<para><parameter>DamagedRowsBeforeError</parameter>
+: [optional] An integer specifying the
+number of damages rows tolerated before an error occurs. Default is 0.</para>
+<para>Boolean values may be "true" or "false", or 1 or 0.</para>
+<para>These parameters are the same as the CCITTFaxDecode parameters in the
+<ulink url="https://www.adobe.com/products/postscript/pdfs/PLRM.pdf">PostScript Language Reference</ulink>
+and <ulink url="https://www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf">Portable Document Format (PDF)</ulink>.
+Refer to these documents for further details.</para>
+<para>An example <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link> string is:</para>
+<programlisting>
+"Columns=10230 Rows=40000 K=1 EndOfLine=true EncodedByteAlign=1 BlackIs1=false"
+</programlisting>
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PDF-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-pdf-surface-create" role="function" condition="since:1.2">
+<title>cairo_pdf_surface_create&#160;()</title>
+<indexterm zone="cairo-pdf-surface-create" role="1.2"><primary sortas="pdf_surface_create">cairo_pdf_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_pdf_surface_create (<parameter>const <link linkend="char"><type>char</type></link> *filename</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Creates a PDF surface of the specified size in points to be written
+to <parameter>filename</parameter>
+.</para>
+<refsect3 id="cairo-pdf-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>filename</para></entry>
+<entry role="parameter_description"><para>a filename for the PDF output (must be writable), <link linkend="NULL:CAPS"><literal>NULL</literal></link> may be
+used to specify no output. This will generate a PDF surface that
+may be queried and used as a source, without generating a
+temporary file.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>width of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>height of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pdf-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-create-for-stream" role="function" condition="since:1.2">
+<title>cairo_pdf_surface_create_for_stream&#160;()</title>
+<indexterm zone="cairo-pdf-surface-create-for-stream" role="1.2"><primary sortas="pdf_surface_create_for_stream">cairo_pdf_surface_create_for_stream</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_pdf_surface_create_for_stream (<parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Creates a PDF surface of the specified size in points to be written
+incrementally to the stream represented by <parameter>write_func</parameter>
+ and <parameter>closure</parameter>
+.</para>
+<refsect3 id="cairo-pdf-surface-create-for-stream.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>write_func</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> to accept the output data, may be <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+to indicate a no-op <parameter>write_func</parameter>
+. With a no-op <parameter>write_func</parameter>
+,
+the surface may be queried or used as a source without
+generating any temporary files.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>the closure argument for <parameter>write_func</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>width of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>height of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pdf-surface-create-for-stream.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-restrict-to-version" role="function" condition="since:1.10">
+<title>cairo_pdf_surface_restrict_to_version&#160;()</title>
+<indexterm zone="cairo-pdf-surface-restrict-to-version" role="1.10"><primary sortas="pdf_surface_restrict_to_version">cairo_pdf_surface_restrict_to_version</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pdf_surface_restrict_to_version (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-pdf-version-t"><type>cairo_pdf_version_t</type></link> version</parameter>);</programlisting>
+<para>Restricts the generated PDF file to <parameter>version</parameter>
+. See <link linkend="cairo-pdf-get-versions"><function>cairo_pdf_get_versions()</function></link>
+for a list of available version values that can be used here.</para>
+<para>This function should only be called before any drawing operations
+have been performed on the given surface. The simplest way to do
+this is to call this function immediately after creating the
+surface.</para>
+<refsect3 id="cairo-pdf-surface-restrict-to-version.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PDF <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>version</para></entry>
+<entry role="parameter_description"><para>PDF version</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-pdf-get-versions" role="function" condition="since:1.10">
+<title>cairo_pdf_get_versions&#160;()</title>
+<indexterm zone="cairo-pdf-get-versions" role="1.10"><primary sortas="pdf_get_versions">cairo_pdf_get_versions</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pdf_get_versions (<parameter><link linkend="cairo-pdf-version-t"><type>cairo_pdf_version_t</type></link> const **versions</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_versions</parameter>);</programlisting>
+<para>Used to retrieve the list of supported versions. See
+<link linkend="cairo-pdf-surface-restrict-to-version"><function>cairo_pdf_surface_restrict_to_version()</function></link>.</para>
+<refsect3 id="cairo-pdf-get-versions.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>versions</para></entry>
+<entry role="parameter_description"><para>supported version list</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_versions</para></entry>
+<entry role="parameter_description"><para>list length</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-pdf-version-to-string" role="function" condition="since:1.10">
+<title>cairo_pdf_version_to_string&#160;()</title>
+<indexterm zone="cairo-pdf-version-to-string" role="1.10"><primary sortas="pdf_version_to_string">cairo_pdf_version_to_string</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_pdf_version_to_string (<parameter><link linkend="cairo-pdf-version-t"><type>cairo_pdf_version_t</type></link> version</parameter>);</programlisting>
+<para>Get the string representation of the given <parameter>version</parameter>
+ id. This function
+will return <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>version</parameter>
+ isn't valid. See <link linkend="cairo-pdf-get-versions"><function>cairo_pdf_get_versions()</function></link>
+for a way to get the list of valid version ids.</para>
+<refsect3 id="cairo-pdf-version-to-string.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>version</para></entry>
+<entry role="parameter_description"><para>a version id</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pdf-version-to-string.returns" role="returns">
+<title>Returns</title>
+<para> the string associated to given version.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-set-size" role="function" condition="since:1.2">
+<title>cairo_pdf_surface_set_size&#160;()</title>
+<indexterm zone="cairo-pdf-surface-set-size" role="1.2"><primary sortas="pdf_surface_set_size">cairo_pdf_surface_set_size</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pdf_surface_set_size (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Changes the size of a PDF surface for the current (and
+subsequent) pages.</para>
+<para>This function should only be called before any drawing operations
+have been performed on the current page. The simplest way to do
+this is to call this function immediately after creating the
+surface or immediately after completing a page with either
+<link linkend="cairo-show-page"><function>cairo_show_page()</function></link> or <link linkend="cairo-copy-page"><function>cairo_copy_page()</function></link>.</para>
+<refsect3 id="cairo-pdf-surface-set-size.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PDF <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>new surface width, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>new surface height, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-add-outline" role="function" condition="since:1.16">
+<title>cairo_pdf_surface_add_outline&#160;()</title>
+<indexterm zone="cairo-pdf-surface-add-outline" role="1.16"><primary sortas="pdf_surface_add_outline">cairo_pdf_surface_add_outline</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_pdf_surface_add_outline (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> parent_id</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *link_attribs</parameter>,
+ <parameter><link linkend="cairo-pdf-outline-flags-t"><type>cairo_pdf_outline_flags_t</type></link> flags</parameter>);</programlisting>
+<para>Add an item to the document outline hierarchy with the name <parameter>utf8</parameter>
+
+that links to the location specified by <parameter>link_attribs</parameter>
+. Link
+attributes have the same keys and values as the <link linkend="link">Link Tag</link>,
+excluding the "rect" attribute. The item will be a child of the
+item with id <parameter>parent_id</parameter>
+. Use <link linkend="CAIRO-PDF-OUTLINE-ROOT:CAPS"><literal>CAIRO_PDF_OUTLINE_ROOT</literal></link> as the parent
+id of top level items.</para>
+<refsect3 id="cairo-pdf-surface-add-outline.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PDF <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>parent_id</para></entry>
+<entry role="parameter_description"><para>the id of the parent item or <link linkend="CAIRO-PDF-OUTLINE-ROOT:CAPS"><literal>CAIRO_PDF_OUTLINE_ROOT</literal></link> if this is a top level item.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>the name of the outline</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>link_attribs</para></entry>
+<entry role="parameter_description"><para>the link attributes specifying where this outline links to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>flags</para></entry>
+<entry role="parameter_description"><para>outline item flags</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pdf-surface-add-outline.returns" role="returns">
+<title>Returns</title>
+<para> the id for the added item.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-set-metadata" role="function" condition="since:1.16">
+<title>cairo_pdf_surface_set_metadata&#160;()</title>
+<indexterm zone="cairo-pdf-surface-set-metadata" role="1.16"><primary sortas="pdf_surface_set_metadata">cairo_pdf_surface_set_metadata</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pdf_surface_set_metadata (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-pdf-metadata-t"><type>cairo_pdf_metadata_t</type></link> metadata</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>);</programlisting>
+<para>Set document metadata. The <link linkend="CAIRO-PDF-METADATA-CREATE-DATE:CAPS"><literal>CAIRO_PDF_METADATA_CREATE_DATE</literal></link> and
+<link linkend="CAIRO-PDF-METADATA-MOD-DATE:CAPS"><literal>CAIRO_PDF_METADATA_MOD_DATE</literal></link> values must be in ISO-8601 format:
+YYYY-MM-DDThh:mm:ss. An optional timezone of the form "[+/-]hh:mm"
+or "Z" for UTC time can be appended. All other metadata values can be any UTF-8
+string.</para>
+<para>For example:</para>
+<informalexample><programlisting>
+cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_TITLE, "My Document");
+cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATE_DATE, "2015-12-31T23:59+02:00");
+</programlisting></informalexample>
+<refsect3 id="cairo-pdf-surface-set-metadata.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PDF <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>metadata</para></entry>
+<entry role="parameter_description"><para>The metadata item to set.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>metadata value</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-set-page-label" role="function" condition="since:1.16">
+<title>cairo_pdf_surface_set_page_label&#160;()</title>
+<indexterm zone="cairo-pdf-surface-set-page-label" role="1.16"><primary sortas="pdf_surface_set_page_label">cairo_pdf_surface_set_page_label</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pdf_surface_set_page_label (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>);</programlisting>
+<para>Set page label for the current page.</para>
+<refsect3 id="cairo-pdf-surface-set-page-label.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PDF <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>The page label.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-pdf-surface-set-thumbnail-size" role="function" condition="since:1.16">
+<title>cairo_pdf_surface_set_thumbnail_size&#160;()</title>
+<indexterm zone="cairo-pdf-surface-set-thumbnail-size" role="1.16"><primary sortas="pdf_surface_set_thumbnail_size">cairo_pdf_surface_set_thumbnail_size</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pdf_surface_set_thumbnail_size (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Set the thumbnail image size for the current and all subsequent
+pages. Setting a width or height of 0 disables thumbnails for the
+current and subsequent pages.</para>
+<refsect3 id="cairo-pdf-surface-set-thumbnail-size.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PDF <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>Thumbnail width.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>Thumbnail height</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PDF-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-PDF-SURFACE:CAPS" role="macro" condition="since:1.2">
+<title>CAIRO_HAS_PDF_SURFACE</title>
+<indexterm zone="CAIRO-HAS-PDF-SURFACE:CAPS" role="1.2"><primary sortas="HAS_PDF_SURFACE">CAIRO_HAS_PDF_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_PDF_SURFACE 1
+</programlisting>
+<para>Defined if the PDF surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="CAIRO-PDF-OUTLINE-ROOT:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_PDF_OUTLINE_ROOT</title>
+<indexterm zone="CAIRO-PDF-OUTLINE-ROOT:CAPS" role="1.16"><primary sortas="PDF_OUTLINE_ROOT">CAIRO_PDF_OUTLINE_ROOT</primary></indexterm>
+<programlisting language="C">#define CAIRO_PDF_OUTLINE_ROOT 0
+</programlisting>
+<para>The root outline item in <link linkend="cairo-pdf-surface-add-outline"><function>cairo_pdf_surface_add_outline()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-pdf-outline-flags-t" role="enum" condition="since:1.16">
+<title>enum cairo_pdf_outline_flags_t</title>
+<indexterm zone="cairo-pdf-outline-flags-t" role="1.16"><primary sortas="pdf_outline_flags_t">cairo_pdf_outline_flags_t</primary></indexterm>
+<para><link linkend="cairo-pdf-outline-flags-t"><type>cairo_pdf_outline_flags_t</type></link> is used by the
+<link linkend="cairo-pdf-surface-add-outline"><function>cairo_pdf_surface_add_outline()</function></link> function specify the attributes of
+an outline item. These flags may be bitwise-or'd to produce any
+combination of flags.</para>
+<refsect3 id="cairo-pdf-outline-flags-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-OUTLINE-FLAG-OPEN:CAPS">CAIRO_PDF_OUTLINE_FLAG_OPEN</para></entry>
+<entry role="enum_member_description"><para>The outline item defaults to open in the PDF viewer (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-OUTLINE-FLAG-BOLD:CAPS">CAIRO_PDF_OUTLINE_FLAG_BOLD</para></entry>
+<entry role="enum_member_description"><para>The outline item is displayed by the viewer in bold text (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-OUTLINE-FLAG-ITALIC:CAPS">CAIRO_PDF_OUTLINE_FLAG_ITALIC</para></entry>
+<entry role="enum_member_description"><para>The outline item is displayed by the viewer in italic text (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-pdf-metadata-t" role="enum" condition="since:1.16">
+<title>enum cairo_pdf_metadata_t</title>
+<indexterm zone="cairo-pdf-metadata-t" role="1.16"><primary sortas="pdf_metadata_t">cairo_pdf_metadata_t</primary></indexterm>
+<para><link linkend="cairo-pdf-metadata-t"><type>cairo_pdf_metadata_t</type></link> is used by the
+<link linkend="cairo-pdf-surface-set-metadata"><function>cairo_pdf_surface_set_metadata()</function></link> function specify the metadata to set.</para>
+<refsect3 id="cairo-pdf-metadata-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-TITLE:CAPS">CAIRO_PDF_METADATA_TITLE</para></entry>
+<entry role="enum_member_description"><para>The document title (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-AUTHOR:CAPS">CAIRO_PDF_METADATA_AUTHOR</para></entry>
+<entry role="enum_member_description"><para>The document author (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-SUBJECT:CAPS">CAIRO_PDF_METADATA_SUBJECT</para></entry>
+<entry role="enum_member_description"><para>The document subject (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-KEYWORDS:CAPS">CAIRO_PDF_METADATA_KEYWORDS</para></entry>
+<entry role="enum_member_description"><para>The document keywords (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-CREATOR:CAPS">CAIRO_PDF_METADATA_CREATOR</para></entry>
+<entry role="enum_member_description"><para>The document creator (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-CREATE-DATE:CAPS">CAIRO_PDF_METADATA_CREATE_DATE</para></entry>
+<entry role="enum_member_description"><para>The document creation date (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-METADATA-MOD-DATE:CAPS">CAIRO_PDF_METADATA_MOD_DATE</para></entry>
+<entry role="enum_member_description"><para>The document modification date (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-pdf-version-t" role="enum" condition="since:1.10">
+<title>enum cairo_pdf_version_t</title>
+<indexterm zone="cairo-pdf-version-t" role="1.10"><primary sortas="pdf_version_t">cairo_pdf_version_t</primary></indexterm>
+<para><link linkend="cairo-pdf-version-t"><type>cairo_pdf_version_t</type></link> is used to describe the version number of the PDF
+specification that a generated PDF file will conform to.</para>
+<refsect3 id="cairo-pdf-version-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-VERSION-1-4:CAPS">CAIRO_PDF_VERSION_1_4</para></entry>
+<entry role="enum_member_description"><para>The version 1.4 of the PDF specification. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PDF-VERSION-1-5:CAPS">CAIRO_PDF_VERSION_1_5</para></entry>
+<entry role="enum_member_description"><para>The version 1.5 of the PDF specification. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PDF-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-png.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-png.xml
new file mode 100644
index 0000000..d8a1ea7
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-png.xml
@@ -0,0 +1,309 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-PNG-Support">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-PNG-Support.top_of_page">PNG Support</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>PNG Support</refname>
+<refpurpose>Reading and writing PNG images</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-PNG-Support.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-image-surface-create-from-png">cairo_image_surface_create_from_png</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-read-func-t">*cairo_read_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-image-surface-create-from-png-stream">cairo_image_surface_create_from_png_stream</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-write-to-png">cairo_surface_write_to_png</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-write-func-t">*cairo_write_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-write-to-png-stream">cairo_surface_write_to_png_stream</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-PNG-Support.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-PNG-FUNCTIONS:CAPS">CAIRO_HAS_PNG_FUNCTIONS</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-PNG-Support.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The PNG functions allow reading PNG images into image surfaces, and writing
+any surface to a PNG file.</para>
+<para>It is a toy API. It only offers very simple support for reading and
+writing PNG files, which is sufficient for testing and
+demonstration purposes. Applications which need more control over
+the generated PNG file should access the pixel data directly, using
+<link linkend="cairo-image-surface-get-data"><function>cairo_image_surface_get_data()</function></link> or a backend-specific access
+function, and process it with another library, e.g. gdk-pixbuf or
+libpng.</para>
+
+</refsect1>
+<refsect1 id="cairo-PNG-Support.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-image-surface-create-from-png" role="function" condition="since:1.0">
+<title>cairo_image_surface_create_from_png&#160;()</title>
+<indexterm zone="cairo-image-surface-create-from-png" role="1.0"><primary sortas="image_surface_create_from_png">cairo_image_surface_create_from_png</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_image_surface_create_from_png (<parameter>const <link linkend="char"><type>char</type></link> *filename</parameter>);</programlisting>
+<para>Creates a new image surface and initializes the contents to the
+given PNG file.</para>
+<refsect3 id="cairo-image-surface-create-from-png.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>filename</para></entry>
+<entry role="parameter_description"><para>name of PNG file to load. On Windows this filename
+is encoded in UTF-8.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-create-from-png.returns" role="returns">
+<title>Returns</title>
+<para> a new <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> initialized with the contents
+of the PNG file, or a "nil" surface if any error occurred. A nil
+surface can be checked for with cairo_surface_status(surface) which
+may return one of the following values:</para>
+<para><link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>
+<link linkend="CAIRO-STATUS-FILE-NOT-FOUND:CAPS"><literal>CAIRO_STATUS_FILE_NOT_FOUND</literal></link>
+<link linkend="CAIRO-STATUS-READ-ERROR:CAPS"><literal>CAIRO_STATUS_READ_ERROR</literal></link>
+<link linkend="CAIRO-STATUS-PNG-ERROR:CAPS"><literal>CAIRO_STATUS_PNG_ERROR</literal></link></para>
+<para>Alternatively, you can allow errors to propagate through the drawing
+operations and check the status on the context upon completion
+using <link linkend="cairo-status"><function>cairo_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-read-func-t" role="function" condition="since:1.0">
+<title>cairo_read_func_t&#160;()</title>
+<indexterm zone="cairo-read-func-t" role="1.0"><primary sortas="read_func_t">cairo_read_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_read_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="void"><type>void</type></link> *closure</parameter>,
+ <parameter>unsigned <link linkend="char"><type>char</type></link> *data</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> length</parameter>);</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 input 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
+<link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> if all the data was successfully read,
+<link linkend="CAIRO-STATUS-READ-ERROR:CAPS"><literal>CAIRO_STATUS_READ_ERROR</literal></link> otherwise.</para>
+<refsect3 id="cairo-read-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>the input closure</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>the buffer into which to read the data</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>length</para></entry>
+<entry role="parameter_description"><para>the amount of data to read</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-read-func-t.returns" role="returns">
+<title>Returns</title>
+<para> the status code of the read operation</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-image-surface-create-from-png-stream" role="function" condition="since:1.0">
+<title>cairo_image_surface_create_from_png_stream&#160;()</title>
+<indexterm zone="cairo-image-surface-create-from-png-stream" role="1.0"><primary sortas="image_surface_create_from_png_stream">cairo_image_surface_create_from_png_stream</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_image_surface_create_from_png_stream
+ (<parameter><link linkend="cairo-read-func-t"><type>cairo_read_func_t</type></link> read_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>);</programlisting>
+<para>Creates a new image surface from PNG data read incrementally
+via the <parameter>read_func</parameter>
+ function.</para>
+<refsect3 id="cairo-image-surface-create-from-png-stream.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>read_func</para></entry>
+<entry role="parameter_description"><para>function called to read the data of the file</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>data to pass to <parameter>read_func</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-image-surface-create-from-png-stream.returns" role="returns">
+<title>Returns</title>
+<para> a new <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> initialized with the contents
+of the PNG file or a "nil" surface if the data read is not a valid PNG image
+or memory could not be allocated for the operation. A nil
+surface can be checked for with cairo_surface_status(surface) which
+may return one of the following values:</para>
+<para><link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>
+<link linkend="CAIRO-STATUS-READ-ERROR:CAPS"><literal>CAIRO_STATUS_READ_ERROR</literal></link>
+<link linkend="CAIRO-STATUS-PNG-ERROR:CAPS"><literal>CAIRO_STATUS_PNG_ERROR</literal></link></para>
+<para>Alternatively, you can allow errors to propagate through the drawing
+operations and check the status on the context upon completion
+using <link linkend="cairo-status"><function>cairo_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-write-to-png" role="function" condition="since:1.0">
+<title>cairo_surface_write_to_png&#160;()</title>
+<indexterm zone="cairo-surface-write-to-png" role="1.0"><primary sortas="surface_write_to_png">cairo_surface_write_to_png</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_write_to_png (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *filename</parameter>);</programlisting>
+<para>Writes the contents of <parameter>surface</parameter>
+ to a new file <parameter>filename</parameter>
+ as a PNG
+image.</para>
+<refsect3 id="cairo-surface-write-to-png.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> with pixel contents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>filename</para></entry>
+<entry role="parameter_description"><para>the name of a file to write to; on Windows this filename
+is encoded in UTF-8.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-write-to-png.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> if the PNG file was written
+successfully. Otherwise, <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if memory could not
+be allocated for the operation or
+<link linkend="CAIRO-STATUS-SURFACE-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_SURFACE_TYPE_MISMATCH</literal></link> if the surface does not have
+pixel contents, or <link linkend="CAIRO-STATUS-WRITE-ERROR:CAPS"><literal>CAIRO_STATUS_WRITE_ERROR</literal></link> if an I/O error occurs
+while attempting to write the file, or <link linkend="CAIRO-STATUS-PNG-ERROR:CAPS"><literal>CAIRO_STATUS_PNG_ERROR</literal></link> if libpng
+returned an error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-write-func-t" role="function" condition="since:1.0">
+<title>cairo_write_func_t&#160;()</title>
+<indexterm zone="cairo-write-func-t" role="1.0"><primary sortas="write_func_t">cairo_write_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_write_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="void"><type>void</type></link> *closure</parameter>,
+ <parameter>const unsigned <link linkend="char"><type>char</type></link> *data</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> length</parameter>);</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
+<link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> if all the data was successfully written,
+<link linkend="CAIRO-STATUS-WRITE-ERROR:CAPS"><literal>CAIRO_STATUS_WRITE_ERROR</literal></link> otherwise.</para>
+<refsect3 id="cairo-write-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>the output closure</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>the buffer containing the data to write</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>length</para></entry>
+<entry role="parameter_description"><para>the amount of data to write</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-write-func-t.returns" role="returns">
+<title>Returns</title>
+<para> the status code of the write operation</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-write-to-png-stream" role="function" condition="since:1.0">
+<title>cairo_surface_write_to_png_stream&#160;()</title>
+<indexterm zone="cairo-surface-write-to-png-stream" role="1.0"><primary sortas="surface_write_to_png_stream">cairo_surface_write_to_png_stream</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_write_to_png_stream (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>);</programlisting>
+<para>Writes the image surface to the write function.</para>
+<refsect3 id="cairo-surface-write-to-png-stream.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> with pixel contents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>write_func</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>closure data for the write function</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-write-to-png-stream.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> if the PNG file was written
+successfully. Otherwise, <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> is returned if
+memory could not be allocated for the operation,
+<link linkend="CAIRO-STATUS-SURFACE-TYPE-MISMATCH:CAPS"><literal>CAIRO_STATUS_SURFACE_TYPE_MISMATCH</literal></link> if the surface does not have
+pixel contents, or <link linkend="CAIRO-STATUS-PNG-ERROR:CAPS"><literal>CAIRO_STATUS_PNG_ERROR</literal></link> if libpng
+returned an error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PNG-Support.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-PNG-FUNCTIONS:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_HAS_PNG_FUNCTIONS</title>
+<indexterm zone="CAIRO-HAS-PNG-FUNCTIONS:CAPS" role="1.0"><primary sortas="HAS_PNG_FUNCTIONS">CAIRO_HAS_PNG_FUNCTIONS</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_PNG_FUNCTIONS 1
+</programlisting>
+<para>Defined if the PNG functions are available.
+This macro can be used to conditionally compile code using the cairo
+PNG functions.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PNG-Support.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-ps.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-ps.xml
new file mode 100644
index 0000000..3a73d7f
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-ps.xml
@@ -0,0 +1,548 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-PostScript-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-PostScript-Surfaces.top_of_page">PostScript Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>PostScript Surfaces</refname>
+<refpurpose>Rendering PostScript documents</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-PostScript-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-create">cairo_ps_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-create-for-stream">cairo_ps_surface_create_for_stream</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-restrict-to-level">cairo_ps_surface_restrict_to_level</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-get-levels">cairo_ps_get_levels</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-ps-level-to-string">cairo_ps_level_to_string</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-set-eps">cairo_ps_surface_set_eps</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-get-eps">cairo_ps_surface_get_eps</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-set-size">cairo_ps_surface_set_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-dsc-begin-setup">cairo_ps_surface_dsc_begin_setup</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-dsc-begin-page-setup">cairo_ps_surface_dsc_begin_page_setup</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-ps-surface-dsc-comment">cairo_ps_surface_dsc_comment</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-PostScript-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-PS-SURFACE:CAPS">CAIRO_HAS_PS_SURFACE</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-ps-level-t">cairo_ps_level_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-PostScript-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The PostScript surface is used to render cairo graphics to Adobe
+PostScript files and is a multi-page vector surface backend.</para>
+<para>The following mime types are supported: <link linkend="CAIRO-MIME-TYPE-JPEG:CAPS"><literal>CAIRO_MIME_TYPE_JPEG</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><literal>CAIRO_MIME_TYPE_UNIQUE_ID</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX</literal></link>, <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX</literal></link>, <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-EPS:CAPS"><literal>CAIRO_MIME_TYPE_EPS</literal></link>, <link linkend="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_EPS_PARAMS</literal></link>.</para>
+<para>Source surfaces used by the PostScript surface that have a
+<link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><literal>CAIRO_MIME_TYPE_UNIQUE_ID</literal></link> mime type will be stored in PostScript
+printer memory for the duration of the print
+job. <link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><literal>CAIRO_MIME_TYPE_UNIQUE_ID</literal></link> should only be used for small
+frequently used sources.</para>
+<para>The <link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX</literal></link> and <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link> mime types
+are documented in <link linkend="ccitt">CCITT Fax Images</link>.</para>
+<refsect2 id="eps"><title>Embedding EPS files</title><para>Encapsulated PostScript files can be embedded in the PS output by
+setting the CAIRO_MIME_TYPE_EPS mime data on a surface to the EPS
+data and painting the surface. The EPS will be scaled and
+translated to the extents of the surface the EPS data is attached
+to.</para>
+<para>The <link linkend="CAIRO-MIME-TYPE-EPS:CAPS"><literal>CAIRO_MIME_TYPE_EPS</literal></link> mime type requires the
+<link linkend="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_EPS_PARAMS</literal></link> mime data to also be provided in order
+to specify the embeddding parameters. <link linkend="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_EPS_PARAMS</literal></link>
+mime data must contain a string of the form "bbox=[llx lly urx
+ury]" that specifies the bounding box (in PS coordinates) of the
+EPS graphics. The parameters are: lower left x, lower left y, upper
+right x, upper right y. Normally the bbox data is identical to the
+%%<link linkend="BoundingBox"><literal>BoundingBox</literal></link> data in the EPS file.</para>
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PostScript-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-ps-surface-create" role="function" condition="since:1.2">
+<title>cairo_ps_surface_create&#160;()</title>
+<indexterm zone="cairo-ps-surface-create" role="1.2"><primary sortas="ps_surface_create">cairo_ps_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_ps_surface_create (<parameter>const <link linkend="char"><type>char</type></link> *filename</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Creates a PostScript surface of the specified size in points to be
+written to <parameter>filename</parameter>
+. See <link linkend="cairo-ps-surface-create-for-stream"><function>cairo_ps_surface_create_for_stream()</function></link> for
+a more flexible mechanism for handling the PostScript output than
+simply writing it to a named file.</para>
+<para>Note that the size of individual pages of the PostScript output can
+vary. See <link linkend="cairo-ps-surface-set-size"><function>cairo_ps_surface_set_size()</function></link>.</para>
+<refsect3 id="cairo-ps-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>filename</para></entry>
+<entry role="parameter_description"><para>a filename for the PS output (must be writable), <link linkend="NULL:CAPS"><literal>NULL</literal></link> may be
+used to specify no output. This will generate a PS surface that
+may be queried and used as a source, without generating a
+temporary file.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>width of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>height of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ps-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-create-for-stream" role="function" condition="since:1.2">
+<title>cairo_ps_surface_create_for_stream&#160;()</title>
+<indexterm zone="cairo-ps-surface-create-for-stream" role="1.2"><primary sortas="ps_surface_create_for_stream">cairo_ps_surface_create_for_stream</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_ps_surface_create_for_stream (<parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Creates a PostScript surface of the specified size in points to be
+written incrementally to the stream represented by <parameter>write_func</parameter>
+ and
+<parameter>closure</parameter>
+. See <link linkend="cairo-ps-surface-create"><function>cairo_ps_surface_create()</function></link> for a more convenient way
+to simply direct the PostScript output to a named file.</para>
+<para>Note that the size of individual pages of the PostScript
+output can vary. See <link linkend="cairo-ps-surface-set-size"><function>cairo_ps_surface_set_size()</function></link>.</para>
+<refsect3 id="cairo-ps-surface-create-for-stream.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>write_func</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> to accept the output data, may be <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+to indicate a no-op <parameter>write_func</parameter>
+. With a no-op <parameter>write_func</parameter>
+,
+the surface may be queried or used as a source without
+generating any temporary files.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>the closure argument for <parameter>write_func</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>width of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>height of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ps-surface-create-for-stream.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-restrict-to-level" role="function" condition="since:1.6">
+<title>cairo_ps_surface_restrict_to_level&#160;()</title>
+<indexterm zone="cairo-ps-surface-restrict-to-level" role="1.6"><primary sortas="ps_surface_restrict_to_level">cairo_ps_surface_restrict_to_level</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_surface_restrict_to_level (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-ps-level-t"><type>cairo_ps_level_t</type></link> level</parameter>);</programlisting>
+<para>Restricts the generated PostSript file to <parameter>level</parameter>
+. See
+<link linkend="cairo-ps-get-levels"><function>cairo_ps_get_levels()</function></link> for a list of available level values that
+can be used here.</para>
+<para>This function should only be called before any drawing operations
+have been performed on the given surface. The simplest way to do
+this is to call this function immediately after creating the
+surface.</para>
+<refsect3 id="cairo-ps-surface-restrict-to-level.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>level</para></entry>
+<entry role="parameter_description"><para>PostScript level</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-ps-get-levels" role="function" condition="since:1.6">
+<title>cairo_ps_get_levels&#160;()</title>
+<indexterm zone="cairo-ps-get-levels" role="1.6"><primary sortas="ps_get_levels">cairo_ps_get_levels</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_get_levels (<parameter><link linkend="cairo-ps-level-t"><type>cairo_ps_level_t</type></link> const **levels</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_levels</parameter>);</programlisting>
+<para>Used to retrieve the list of supported levels. See
+<link linkend="cairo-ps-surface-restrict-to-level"><function>cairo_ps_surface_restrict_to_level()</function></link>.</para>
+<refsect3 id="cairo-ps-get-levels.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>levels</para></entry>
+<entry role="parameter_description"><para>supported level list</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_levels</para></entry>
+<entry role="parameter_description"><para>list length</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-ps-level-to-string" role="function" condition="since:1.6">
+<title>cairo_ps_level_to_string&#160;()</title>
+<indexterm zone="cairo-ps-level-to-string" role="1.6"><primary sortas="ps_level_to_string">cairo_ps_level_to_string</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_ps_level_to_string (<parameter><link linkend="cairo-ps-level-t"><type>cairo_ps_level_t</type></link> level</parameter>);</programlisting>
+<para>Get the string representation of the given <parameter>level</parameter>
+ id. This function
+will return <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>level</parameter>
+ id isn't valid. See <link linkend="cairo-ps-get-levels"><function>cairo_ps_get_levels()</function></link>
+for a way to get the list of valid level ids.</para>
+<refsect3 id="cairo-ps-level-to-string.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>level</para></entry>
+<entry role="parameter_description"><para>a level id</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ps-level-to-string.returns" role="returns">
+<title>Returns</title>
+<para> the string associated to given level.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-set-eps" role="function" condition="since:1.6">
+<title>cairo_ps_surface_set_eps&#160;()</title>
+<indexterm zone="cairo-ps-surface-set-eps" role="1.6"><primary sortas="ps_surface_set_eps">cairo_ps_surface_set_eps</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_surface_set_eps (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-bool-t"><type>cairo_bool_t</type></link> eps</parameter>);</programlisting>
+<para>If <parameter>eps</parameter>
+ is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, the PostScript surface will output Encapsulated
+PostScript.</para>
+<para>This function should only be called before any drawing operations
+have been performed on the current page. The simplest way to do
+this is to call this function immediately after creating the
+surface. An Encapsulated PostScript file should never contain more
+than one page.</para>
+<refsect3 id="cairo-ps-surface-set-eps.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>eps</para></entry>
+<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to output EPS format PostScript</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-get-eps" role="function" condition="since:1.6">
+<title>cairo_ps_surface_get_eps&#160;()</title>
+<indexterm zone="cairo-ps-surface-get-eps" role="1.6"><primary sortas="ps_surface_get_eps">cairo_ps_surface_get_eps</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_ps_surface_get_eps (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Check whether the PostScript surface will output Encapsulated PostScript.</para>
+<refsect3 id="cairo-ps-surface-get-eps.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-ps-surface-get-eps.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface will output Encapsulated PostScript.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-set-size" role="function" condition="since:1.2">
+<title>cairo_ps_surface_set_size&#160;()</title>
+<indexterm zone="cairo-ps-surface-set-size" role="1.2"><primary sortas="ps_surface_set_size">cairo_ps_surface_set_size</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_surface_set_size (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Changes the size of a PostScript surface for the current (and
+subsequent) pages.</para>
+<para>This function should only be called before any drawing operations
+have been performed on the current page. The simplest way to do
+this is to call this function immediately after creating the
+surface or immediately after completing a page with either
+<link linkend="cairo-show-page"><function>cairo_show_page()</function></link> or <link linkend="cairo-copy-page"><function>cairo_copy_page()</function></link>.</para>
+<refsect3 id="cairo-ps-surface-set-size.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>new surface width, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>new surface height, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-dsc-begin-setup" role="function" condition="since:1.2">
+<title>cairo_ps_surface_dsc_begin_setup&#160;()</title>
+<indexterm zone="cairo-ps-surface-dsc-begin-setup" role="1.2"><primary sortas="ps_surface_dsc_begin_setup">cairo_ps_surface_dsc_begin_setup</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_surface_dsc_begin_setup (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>This function indicates that subsequent calls to
+<link linkend="cairo-ps-surface-dsc-comment"><function>cairo_ps_surface_dsc_comment()</function></link> should direct comments to the Setup
+section of the PostScript output.</para>
+<para>This function should be called at most once per surface, and must
+be called before any call to <link linkend="cairo-ps-surface-dsc-begin-page-setup"><function>cairo_ps_surface_dsc_begin_page_setup()</function></link>
+and before any drawing is performed to the surface.</para>
+<para>See <link linkend="cairo-ps-surface-dsc-comment"><function>cairo_ps_surface_dsc_comment()</function></link> for more details.</para>
+<refsect3 id="cairo-ps-surface-dsc-begin-setup.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-dsc-begin-page-setup" role="function" condition="since:1.2">
+<title>cairo_ps_surface_dsc_begin_page_setup&#160;()</title>
+<indexterm zone="cairo-ps-surface-dsc-begin-page-setup" role="1.2"><primary sortas="ps_surface_dsc_begin_page_setup">cairo_ps_surface_dsc_begin_page_setup</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_surface_dsc_begin_page_setup (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>This function indicates that subsequent calls to
+<link linkend="cairo-ps-surface-dsc-comment"><function>cairo_ps_surface_dsc_comment()</function></link> should direct comments to the
+PageSetup section of the PostScript output.</para>
+<para>This function call is only needed for the first page of a
+surface. It should be called after any call to
+<link linkend="cairo-ps-surface-dsc-begin-setup"><function>cairo_ps_surface_dsc_begin_setup()</function></link> and before any drawing is
+performed to the surface.</para>
+<para>See <link linkend="cairo-ps-surface-dsc-comment"><function>cairo_ps_surface_dsc_comment()</function></link> for more details.</para>
+<refsect3 id="cairo-ps-surface-dsc-begin-page-setup.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-ps-surface-dsc-comment" role="function" condition="since:1.2">
+<title>cairo_ps_surface_dsc_comment&#160;()</title>
+<indexterm zone="cairo-ps-surface-dsc-comment" role="1.2"><primary sortas="ps_surface_dsc_comment">cairo_ps_surface_dsc_comment</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_ps_surface_dsc_comment (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *comment</parameter>);</programlisting>
+<para>Emit a comment into the PostScript output for the given surface.</para>
+<para>The comment is expected to conform to the PostScript Language
+Document Structuring Conventions (DSC). Please see that manual for
+details on the available comments and their meanings. In
+particular, the %%IncludeFeature comment allows a
+device-independent means of controlling printer device features. So
+the PostScript Printer Description Files Specification will also be
+a useful reference.</para>
+<para>The comment string must begin with a percent character (%) and the
+total length of the string (including any initial percent
+characters) must not exceed 255 characters. Violating either of
+these conditions will place <parameter>surface</parameter>
+ into an error state. But
+beyond these two conditions, this function will not enforce
+conformance of the comment with any particular specification.</para>
+<para>The comment string should not have a trailing newline.</para>
+<para>The DSC specifies different sections in which particular comments
+can appear. This function provides for comments to be emitted
+within three sections: the header, the Setup section, and the
+PageSetup section. Comments appearing in the first two sections
+apply to the entire document while comments in the BeginPageSetup
+section apply only to a single page.</para>
+<para>For comments to appear in the header section, this function should
+be called after the surface is created, but before a call to
+<link linkend="cairo-ps-surface-dsc-begin-setup"><function>cairo_ps_surface_dsc_begin_setup()</function></link>.</para>
+<para>For comments to appear in the Setup section, this function should
+be called after a call to <link linkend="cairo-ps-surface-dsc-begin-setup"><function>cairo_ps_surface_dsc_begin_setup()</function></link> but
+before a call to <link linkend="cairo-ps-surface-dsc-begin-page-setup"><function>cairo_ps_surface_dsc_begin_page_setup()</function></link>.</para>
+<para>For comments to appear in the PageSetup section, this function
+should be called after a call to
+<link linkend="cairo-ps-surface-dsc-begin-page-setup"><function>cairo_ps_surface_dsc_begin_page_setup()</function></link>.</para>
+<para>Note that it is only necessary to call
+<link linkend="cairo-ps-surface-dsc-begin-page-setup"><function>cairo_ps_surface_dsc_begin_page_setup()</function></link> for the first page of any
+surface. After a call to <link linkend="cairo-show-page"><function>cairo_show_page()</function></link> or <link linkend="cairo-copy-page"><function>cairo_copy_page()</function></link>
+comments are unambiguously directed to the PageSetup section of the
+current page. But it doesn't hurt to call this function at the
+beginning of every page as that consistency may make the calling
+code simpler.</para>
+<para>As a final note, cairo automatically generates several comments on
+its own. As such, applications must not manually generate any of
+the following comments:</para>
+<para>Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages,
+%%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments.</para>
+<para>Setup section: %%BeginSetup, %%EndSetup</para>
+<para>PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup.</para>
+<para>Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF</para>
+<para>Here is an example sequence showing how this function might be used:</para>
+<informalexample><programlisting>
+cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height);
+...
+cairo_ps_surface_dsc_comment (surface, "%%Title: My excellent document");
+cairo_ps_surface_dsc_comment (surface, "%%Copyright: Copyright (C) 2006 Cairo Lover")
+...
+cairo_ps_surface_dsc_begin_setup (surface);
+cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaColor White");
+...
+cairo_ps_surface_dsc_begin_page_setup (surface);
+cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A3");
+cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *InputSlot LargeCapacity");
+cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaType Glossy");
+cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaColor Blue");
+... draw to first page here ..
+cairo_show_page (cr);
+...
+cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A5");
+...
+</programlisting></informalexample>
+<refsect3 id="cairo-ps-surface-dsc-comment.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a PostScript <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>comment</para></entry>
+<entry role="parameter_description"><para>a comment string to be emitted into the PostScript output</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PostScript-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-PS-SURFACE:CAPS" role="macro" condition="since:1.2">
+<title>CAIRO_HAS_PS_SURFACE</title>
+<indexterm zone="CAIRO-HAS-PS-SURFACE:CAPS" role="1.2"><primary sortas="HAS_PS_SURFACE">CAIRO_HAS_PS_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_PS_SURFACE 1
+</programlisting>
+<para>Defined if the PostScript surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-ps-level-t" role="enum" condition="since:1.6">
+<title>enum cairo_ps_level_t</title>
+<indexterm zone="cairo-ps-level-t" role="1.6"><primary sortas="ps_level_t">cairo_ps_level_t</primary></indexterm>
+<para><link linkend="cairo-ps-level-t"><type>cairo_ps_level_t</type></link> is used to describe the language level of the
+PostScript Language Reference that a generated PostScript file will
+conform to.</para>
+<refsect3 id="cairo-ps-level-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PS-LEVEL-2:CAPS">CAIRO_PS_LEVEL_2</para></entry>
+<entry role="enum_member_description"><para>The language level 2 of the PostScript specification. (Since 1.6)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-PS-LEVEL-3:CAPS">CAIRO_PS_LEVEL_3</para></entry>
+<entry role="enum_member_description"><para>The language level 3 of the PostScript specification. (Since 1.6)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-PostScript-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-quartz-fonts.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-quartz-fonts.xml
new file mode 100644
index 0000000..6b74915
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-quartz-fonts.xml
@@ -0,0 +1,129 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Quartz-(CGFont)-Fonts">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Quartz-(CGFont)-Fonts.top_of_page">Quartz (CGFont) Fonts</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Quartz (CGFont) Fonts</refname>
+<refpurpose>Font support via CGFont on OS X</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Quartz-(CGFont)-Fonts.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-quartz-font-face-create-for-cgfont">cairo_quartz_font_face_create_for_cgfont</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-quartz-font-face-create-for-atsu-font-id">cairo_quartz_font_face_create_for_atsu_font_id</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Quartz-(CGFont)-Fonts.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-QUARTZ-FONT:CAPS">CAIRO_HAS_QUARTZ_FONT</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Quartz-(CGFont)-Fonts.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The Quartz font backend is primarily used to render text on Apple
+MacOS X systems. The CGFont API is used for the internal
+implementation of the font backend methods.</para>
+
+</refsect1>
+<refsect1 id="cairo-Quartz-(CGFont)-Fonts.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-quartz-font-face-create-for-cgfont" role="function" condition="since:1.6">
+<title>cairo_quartz_font_face_create_for_cgfont&#160;()</title>
+<indexterm zone="cairo-quartz-font-face-create-for-cgfont" role="1.6"><primary sortas="quartz_font_face_create_for_cgfont">cairo_quartz_font_face_create_for_cgfont</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_quartz_font_face_create_for_cgfont
+ (<parameter><link linkend="CGFontRef"><type>CGFontRef</type></link> font</parameter>);</programlisting>
+<para>Creates a new font for the Quartz font backend based on a
+<link linkend="CGFontRef"><type>CGFontRef</type></link>. This font can then be used with
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>.</para>
+<refsect3 id="cairo-quartz-font-face-create-for-cgfont.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="CGFontRef"><type>CGFontRef</type></link> obtained through a method external to cairo.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-quartz-font-face-create-for-cgfont.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-quartz-font-face-create-for-atsu-font-id" role="function" condition="since:1.6">
+<title>cairo_quartz_font_face_create_for_atsu_font_id&#160;()</title>
+<indexterm zone="cairo-quartz-font-face-create-for-atsu-font-id" role="1.6"><primary sortas="quartz_font_face_create_for_atsu_font_id">cairo_quartz_font_face_create_for_atsu_font_id</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_quartz_font_face_create_for_atsu_font_id
+ (<parameter><link linkend="ATSUFontID"><type>ATSUFontID</type></link> font_id</parameter>);</programlisting>
+<para>Creates a new font for the Quartz font backend based on an
+<link linkend="ATSUFontID"><type>ATSUFontID</type></link>. This font can then be used with
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>.</para>
+<refsect3 id="cairo-quartz-font-face-create-for-atsu-font-id.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_id</para></entry>
+<entry role="parameter_description"><para>an ATSUFontID for the font.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-quartz-font-face-create-for-atsu-font-id.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Quartz-(CGFont)-Fonts.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-QUARTZ-FONT:CAPS" role="macro" condition="since:1.6">
+<title>CAIRO_HAS_QUARTZ_FONT</title>
+<indexterm zone="CAIRO-HAS-QUARTZ-FONT:CAPS" role="1.6"><primary sortas="HAS_QUARTZ_FONT">CAIRO_HAS_QUARTZ_FONT</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_QUARTZ_FONT 1
+</programlisting>
+<para>Defined if the Quartz font backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Quartz-(CGFont)-Fonts.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-quartz.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-quartz.xml
new file mode 100644
index 0000000..d39d524
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-quartz.xml
@@ -0,0 +1,183 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Quartz-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Quartz-Surfaces.top_of_page">Quartz Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Quartz Surfaces</refname>
+<refpurpose>Rendering to Quartz surfaces</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Quartz-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-quartz-surface-create">cairo_quartz_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-quartz-surface-create-for-cg-context">cairo_quartz_surface_create_for_cg_context</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="CGContextRef"><returnvalue>CGContextRef</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-quartz-surface-get-cg-context">cairo_quartz_surface_get_cg_context</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Quartz-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-QUARTZ-SURFACE:CAPS">CAIRO_HAS_QUARTZ_SURFACE</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Quartz-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The Quartz surface is used to render cairo graphics targeting the
+Apple OS X Quartz rendering system.</para>
+
+</refsect1>
+<refsect1 id="cairo-Quartz-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-quartz-surface-create" role="function" condition="since:1.6">
+<title>cairo_quartz_surface_create&#160;()</title>
+<indexterm zone="cairo-quartz-surface-create" role="1.6"><primary sortas="quartz_surface_create">cairo_quartz_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_quartz_surface_create (<parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates a Quartz surface backed by a CGBitmap. The surface is
+created using the Device RGB (or Device Gray, for A8) color space.
+All Cairo operations, including those that require software
+rendering, will succeed on this surface.</para>
+<refsect3 id="cairo-quartz-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>format of pixels in the surface to create</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-quartz-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-quartz-surface-create-for-cg-context" role="function" condition="since:1.6">
+<title>cairo_quartz_surface_create_for_cg_context&#160;()</title>
+<indexterm zone="cairo-quartz-surface-create-for-cg-context" role="1.6"><primary sortas="quartz_surface_create_for_cg_context">cairo_quartz_surface_create_for_cg_context</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_quartz_surface_create_for_cg_context
+ (<parameter><link linkend="CGContextRef"><type>CGContextRef</type></link> cgContext</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter>unsigned <link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates a Quartz surface that wraps the given CGContext. The
+CGContext is assumed to be in the standard Cairo coordinate space
+(that is, with the origin at the upper left and the Y axis
+increasing downward). If the CGContext is in the Quartz coordinate
+space (with the origin at the bottom left), then it should be
+flipped before this function is called. The flip can be accomplished
+using a translate and a scale; for example:</para>
+<informalexample><programlisting>
+CGContextTranslateCTM (cgContext, 0.0, height);
+CGContextScaleCTM (cgContext, 1.0, -1.0);
+</programlisting></informalexample>
+<para>All Cairo operations are implemented in terms of Quartz operations,
+as long as Quartz-compatible elements are used (such as Quartz fonts).</para>
+<refsect3 id="cairo-quartz-surface-create-for-cg-context.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cgContext</para></entry>
+<entry role="parameter_description"><para>the existing CGContext for which to create the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-quartz-surface-create-for-cg-context.returns" role="returns">
+<title>Returns</title>
+<para> the newly created Cairo surface.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-quartz-surface-get-cg-context" role="function" condition="since:1.6">
+<title>cairo_quartz_surface_get_cg_context&#160;()</title>
+<indexterm zone="cairo-quartz-surface-get-cg-context" role="1.6"><primary sortas="quartz_surface_get_cg_context">cairo_quartz_surface_get_cg_context</primary></indexterm>
+<programlisting language="C"><link linkend="CGContextRef"><returnvalue>CGContextRef</returnvalue></link>
+cairo_quartz_surface_get_cg_context (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Returns the CGContextRef that the given Quartz surface is backed
+by.</para>
+<para>A call to <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> is required before using the
+CGContextRef to ensure that all pending drawing operations are
+finished and to restore any temporary modification cairo has made
+to its state. A call to <link linkend="cairo-surface-mark-dirty"><function>cairo_surface_mark_dirty()</function></link> is required
+after the state or the content of the CGContextRef has been
+modified.</para>
+<refsect3 id="cairo-quartz-surface-get-cg-context.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>the Cairo Quartz surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-quartz-surface-get-cg-context.returns" role="returns">
+<title>Returns</title>
+<para> the CGContextRef for the given surface.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Quartz-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-QUARTZ-SURFACE:CAPS" role="macro" condition="since:1.6">
+<title>CAIRO_HAS_QUARTZ_SURFACE</title>
+<indexterm zone="CAIRO-HAS-QUARTZ-SURFACE:CAPS" role="1.6"><primary sortas="HAS_QUARTZ_SURFACE">CAIRO_HAS_QUARTZ_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_QUARTZ_SURFACE 1
+</programlisting>
+<para>Defined if the Quartz surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Quartz-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-raster-source.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-raster-source.xml
new file mode 100644
index 0000000..227bb18
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-raster-source.xml
@@ -0,0 +1,550 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Raster-Sources">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Raster-Sources.top_of_page">Raster Sources</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Raster Sources</refname>
+<refpurpose>Supplying arbitrary image data</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Raster-Sources.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pattern-create-raster-source">cairo_pattern_create_raster_source</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-set-callback-data">cairo_raster_source_pattern_set_callback_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-get-callback-data">cairo_raster_source_pattern_get_callback_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-set-acquire">cairo_raster_source_pattern_set_acquire</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-get-acquire">cairo_raster_source_pattern_get_acquire</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-set-snapshot">cairo_raster_source_pattern_set_snapshot</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-raster-source-snapshot-func-t"><returnvalue>cairo_raster_source_snapshot_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-get-snapshot">cairo_raster_source_pattern_get_snapshot</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-set-copy">cairo_raster_source_pattern_set_copy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-raster-source-copy-func-t"><returnvalue>cairo_raster_source_copy_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-get-copy">cairo_raster_source_pattern_get_copy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-set-finish">cairo_raster_source_pattern_set_finish</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-raster-source-finish-func-t"><returnvalue>cairo_raster_source_finish_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-raster-source-pattern-get-finish">cairo_raster_source_pattern_get_finish</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-raster-source-acquire-func-t">*cairo_raster_source_acquire_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-raster-source-release-func-t">*cairo_raster_source_release_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-raster-source-snapshot-func-t">*cairo_raster_source_snapshot_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-raster-source-copy-func-t">*cairo_raster_source_copy_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-raster-source-finish-func-t">*cairo_raster_source_finish_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Raster-Sources.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The raster source provides the ability to supply arbitrary pixel data
+whilst rendering. The pixels are queried at the time of rasterisation
+by means of user callback functions, allowing for the ultimate
+flexibility. For example, in handling compressed image sources, you
+may keep a MRU cache of decompressed images and decompress sources on the
+fly and discard old ones to conserve memory.</para>
+<para>For the raster source to be effective, you must at least specify
+the acquire and release callbacks which are used to retrieve the pixel
+data for the region of interest and demark when it can be freed afterwards.
+Other callbacks are provided for when the pattern is copied temporarily
+during rasterisation, or more permanently as a snapshot in order to keep
+the pixel data available for printing.</para>
+
+</refsect1>
+<refsect1 id="cairo-Raster-Sources.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-pattern-create-raster-source" role="function" condition="since:1.12">
+<title>cairo_pattern_create_raster_source&#160;()</title>
+<indexterm zone="cairo-pattern-create-raster-source" role="1.12"><primary sortas="pattern_create_raster_source">cairo_pattern_create_raster_source</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pattern_create_raster_source (<parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-content-t"><type>cairo_content_t</type></link> content</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates a new user pattern for providing pixel data.</para>
+<para>Use the setter functions to associate callbacks with the returned
+pattern. The only mandatory callback is acquire.</para>
+<refsect3 id="cairo-pattern-create-raster-source.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to be passed to all callbacks</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>content</para></entry>
+<entry role="parameter_description"><para>content type for the pixel data that will be returned. Knowing
+the content type ahead of time is used for analysing the operation and
+picking the appropriate rendering path.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>maximum size of the sample area</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>maximum size of the sample area</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pattern-create-raster-source.returns" role="returns">
+<title>Returns</title>
+<para> a newly created <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link>. Free with
+<link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when you are done using it.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-set-callback-data" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_set_callback_data&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-set-callback-data" role="1.12"><primary sortas="raster_source_pattern_set_callback_data">cairo_raster_source_pattern_set_callback_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_raster_source_pattern_set_callback_data
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+<para>Updates the user data that is provided to all callbacks.</para>
+<refsect3 id="cairo-raster-source-pattern-set-callback-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to update</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>the user data to be passed to all callbacks</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-get-callback-data" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_get_callback_data&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-get-callback-data" role="1.12"><primary sortas="raster_source_pattern_get_callback_data">cairo_raster_source_pattern_get_callback_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_raster_source_pattern_get_callback_data
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Queries the current user data.</para>
+<refsect3 id="cairo-raster-source-pattern-get-callback-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to update</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-pattern-get-callback-data.returns" role="returns">
+<title>Returns</title>
+<para> the current user-data passed to each callback</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-set-acquire" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_set_acquire&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-set-acquire" role="1.12"><primary sortas="raster_source_pattern_set_acquire">cairo_raster_source_pattern_set_acquire</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_raster_source_pattern_set_acquire
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-raster-source-acquire-func-t"><type>cairo_raster_source_acquire_func_t</type></link> acquire</parameter>,
+ <parameter><link linkend="cairo-raster-source-release-func-t"><type>cairo_raster_source_release_func_t</type></link> release</parameter>);</programlisting>
+<para>Specifies the callbacks used to generate the image surface for a rendering
+operation (acquire) and the function used to cleanup that surface afterwards.</para>
+<para>The <parameter>acquire</parameter>
+ callback should create a surface (preferably an image
+surface created to match the target using
+<link linkend="cairo-surface-create-similar-image"><function>cairo_surface_create_similar_image()</function></link>) that defines at least the region
+of interest specified by extents. The surface is allowed to be the entire
+sample area, but if it does contain a subsection of the sample area,
+the surface extents should be provided by setting the device offset (along
+with its width and height) using <link linkend="cairo-surface-set-device-offset"><function>cairo_surface_set_device_offset()</function></link>.</para>
+<refsect3 id="cairo-raster-source-pattern-set-acquire.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to update</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>acquire</para></entry>
+<entry role="parameter_description"><para>acquire callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>release</para></entry>
+<entry role="parameter_description"><para>release callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-get-acquire" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_get_acquire&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-get-acquire" role="1.12"><primary sortas="raster_source_pattern_get_acquire">cairo_raster_source_pattern_get_acquire</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_raster_source_pattern_get_acquire
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-raster-source-acquire-func-t"><type>cairo_raster_source_acquire_func_t</type></link> *acquire</parameter>,
+ <parameter><link linkend="cairo-raster-source-release-func-t"><type>cairo_raster_source_release_func_t</type></link> *release</parameter>);</programlisting>
+<para>Queries the current acquire and release callbacks.</para>
+<refsect3 id="cairo-raster-source-pattern-get-acquire.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to query</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>acquire</para></entry>
+<entry role="parameter_description"><para>return value for the current acquire callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>release</para></entry>
+<entry role="parameter_description"><para>return value for the current release callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-set-snapshot" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_set_snapshot&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-set-snapshot" role="1.12"><primary sortas="raster_source_pattern_set_snapshot">cairo_raster_source_pattern_set_snapshot</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_raster_source_pattern_set_snapshot
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-raster-source-snapshot-func-t"><type>cairo_raster_source_snapshot_func_t</type></link> snapshot</parameter>);</programlisting>
+<para>Sets the callback that will be used whenever a snapshot is taken of the
+pattern, that is whenever the current contents of the pattern should be
+preserved for later use. This is typically invoked whilst printing.</para>
+<refsect3 id="cairo-raster-source-pattern-set-snapshot.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to update</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>snapshot</para></entry>
+<entry role="parameter_description"><para>snapshot callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-get-snapshot" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_get_snapshot&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-get-snapshot" role="1.12"><primary sortas="raster_source_pattern_get_snapshot">cairo_raster_source_pattern_get_snapshot</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-raster-source-snapshot-func-t"><returnvalue>cairo_raster_source_snapshot_func_t</returnvalue></link>
+cairo_raster_source_pattern_get_snapshot
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Queries the current snapshot callback.</para>
+<refsect3 id="cairo-raster-source-pattern-get-snapshot.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to query</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-pattern-get-snapshot.returns" role="returns">
+<title>Returns</title>
+<para> the current snapshot callback</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-set-copy" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_set_copy&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-set-copy" role="1.12"><primary sortas="raster_source_pattern_set_copy">cairo_raster_source_pattern_set_copy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_raster_source_pattern_set_copy (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-raster-source-copy-func-t"><type>cairo_raster_source_copy_func_t</type></link> copy</parameter>);</programlisting>
+<para>Updates the copy callback which is used whenever a temporary copy of the
+pattern is taken.</para>
+<refsect3 id="cairo-raster-source-pattern-set-copy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to update</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>copy</para></entry>
+<entry role="parameter_description"><para>the copy callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-get-copy" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_get_copy&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-get-copy" role="1.12"><primary sortas="raster_source_pattern_get_copy">cairo_raster_source_pattern_get_copy</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-raster-source-copy-func-t"><returnvalue>cairo_raster_source_copy_func_t</returnvalue></link>
+cairo_raster_source_pattern_get_copy (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Queries the current copy callback.</para>
+<refsect3 id="cairo-raster-source-pattern-get-copy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to query</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-pattern-get-copy.returns" role="returns">
+<title>Returns</title>
+<para> the current copy callback</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-set-finish" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_set_finish&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-set-finish" role="1.12"><primary sortas="raster_source_pattern_set_finish">cairo_raster_source_pattern_set_finish</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_raster_source_pattern_set_finish
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="cairo-raster-source-finish-func-t"><type>cairo_raster_source_finish_func_t</type></link> finish</parameter>);</programlisting>
+<para>Updates the finish callback which is used whenever a pattern (or a copy
+thereof) will no longer be used.</para>
+<refsect3 id="cairo-raster-source-pattern-set-finish.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to update</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>finish</para></entry>
+<entry role="parameter_description"><para>the finish callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-pattern-get-finish" role="function" condition="since:1.12">
+<title>cairo_raster_source_pattern_get_finish&#160;()</title>
+<indexterm zone="cairo-raster-source-pattern-get-finish" role="1.12"><primary sortas="raster_source_pattern_get_finish">cairo_raster_source_pattern_get_finish</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-raster-source-finish-func-t"><returnvalue>cairo_raster_source_finish_func_t</returnvalue></link>
+cairo_raster_source_pattern_get_finish
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</programlisting>
+<para>Queries the current finish callback.</para>
+<refsect3 id="cairo-raster-source-pattern-get-finish.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern to query</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-pattern-get-finish.returns" role="returns">
+<title>Returns</title>
+<para> the current finish callback</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-acquire-func-t" role="function" condition="since:1.12">
+<title>cairo_raster_source_acquire_func_t&#160;()</title>
+<indexterm zone="cairo-raster-source-acquire-func-t" role="1.12"><primary sortas="raster_source_acquire_func_t">cairo_raster_source_acquire_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_raster_source_acquire_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *callback_data</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *target</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *extents</parameter>);</programlisting>
+<para><link linkend="cairo-raster-source-acquire-func-t"><type>cairo_raster_source_acquire_func_t</type></link> is the type of function which is
+called when a pattern is being rendered from. It should create a surface
+that provides the pixel data for the region of interest as defined by
+extents, though the surface itself does not have to be limited to that
+area. For convenience the surface should probably be of image type,
+created with <link linkend="cairo-surface-create-similar-image"><function>cairo_surface_create_similar_image()</function></link> for the target (which
+enables the number of copies to be reduced during transfer to the
+device). Another option, might be to return a similar surface to the
+target for explicit handling by the application of a set of cached sources
+on the device. The region of sample data provided should be defined using
+<link linkend="cairo-surface-set-device-offset"><function>cairo_surface_set_device_offset()</function></link> to specify the top-left corner of the
+sample data (along with width and height of the surface).</para>
+<refsect3 id="cairo-raster-source-acquire-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern being rendered from</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>callback_data</para></entry>
+<entry role="parameter_description"><para>the user data supplied during creation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>target</para></entry>
+<entry role="parameter_description"><para>the rendering target surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>rectangular region of interest in pixels in sample space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-acquire-func-t.returns" role="returns">
+<title>Returns</title>
+<para> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-release-func-t" role="function" condition="since:1.12">
+<title>cairo_raster_source_release_func_t&#160;()</title>
+<indexterm zone="cairo-raster-source-release-func-t" role="1.12"><primary sortas="raster_source_release_func_t">cairo_raster_source_release_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_raster_source_release_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *callback_data</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para><link linkend="cairo-raster-source-release-func-t"><type>cairo_raster_source_release_func_t</type></link> is the type of function which is
+called when the pixel data is no longer being access by the pattern
+for the rendering operation. Typically this function will simply
+destroy the surface created during acquire.</para>
+<refsect3 id="cairo-raster-source-release-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern being rendered from</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>callback_data</para></entry>
+<entry role="parameter_description"><para>the user data supplied during creation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>the surface created during acquire</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-snapshot-func-t" role="function" condition="since:1.12">
+<title>cairo_raster_source_snapshot_func_t&#160;()</title>
+<indexterm zone="cairo-raster-source-snapshot-func-t" role="1.12"><primary sortas="raster_source_snapshot_func_t">cairo_raster_source_snapshot_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_raster_source_snapshot_func_t<phrase role="c_punctuation">)</phrase>
+ (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *callback_data</parameter>);</programlisting>
+<para><link linkend="cairo-raster-source-snapshot-func-t"><type>cairo_raster_source_snapshot_func_t</type></link> is the type of function which is
+called when the pixel data needs to be preserved for later use
+during printing. This pattern will be accessed again later, and it
+is expected to provide the pixel data that was current at the time
+of snapshotting.</para>
+<refsect3 id="cairo-raster-source-snapshot-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern being rendered from</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>callback_data</para></entry>
+<entry role="parameter_description"><para>the user data supplied during creation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-snapshot-func-t.returns" role="returns">
+<title>Returns</title>
+<para> CAIRO_STATUS_SUCCESS on success, or one of the
+<link linkend="cairo-status-t"><type>cairo_status_t</type></link> error codes for failure.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-copy-func-t" role="function" condition="since:1.12">
+<title>cairo_raster_source_copy_func_t&#160;()</title>
+<indexterm zone="cairo-raster-source-copy-func-t" role="1.12"><primary sortas="raster_source_copy_func_t">cairo_raster_source_copy_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_raster_source_copy_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *callback_data</parameter>,
+ <parameter>const <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *other</parameter>);</programlisting>
+<para><link linkend="cairo-raster-source-copy-func-t"><type>cairo_raster_source_copy_func_t</type></link> is the type of function which is
+called when the pattern gets copied as a normal part of rendering.</para>
+<refsect3 id="cairo-raster-source-copy-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> that was copied to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>callback_data</para></entry>
+<entry role="parameter_description"><para>the user data supplied during creation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>the <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> being used as the source for the copy</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-raster-source-copy-func-t.returns" role="returns">
+<title>Returns</title>
+<para> CAIRO_STATUS_SUCCESS on success, or one of the
+<link linkend="cairo-status-t"><type>cairo_status_t</type></link> error codes for failure.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-raster-source-finish-func-t" role="function" condition="since:1.12">
+<title>cairo_raster_source_finish_func_t&#160;()</title>
+<indexterm zone="cairo-raster-source-finish-func-t" role="1.12"><primary sortas="raster_source_finish_func_t">cairo_raster_source_finish_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_raster_source_finish_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *callback_data</parameter>);</programlisting>
+<para><link linkend="cairo-raster-source-finish-func-t"><type>cairo_raster_source_finish_func_t</type></link> is the type of function which is
+called when the pattern (or a copy thereof) is no longer required.</para>
+<refsect3 id="cairo-raster-source-finish-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>the pattern being rendered from</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>callback_data</para></entry>
+<entry role="parameter_description"><para>the user data supplied during creation</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Raster-Sources.other_details" role="details">
+<title role="details.title">Types and Values</title>
+
+</refsect1>
+<refsect1 id="cairo-Raster-Sources.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-recording.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-recording.xml
new file mode 100644
index 0000000..b6b9a6f
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-recording.xml
@@ -0,0 +1,204 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Recording-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Recording-Surfaces.top_of_page">Recording Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Recording Surfaces</refname>
+<refpurpose>Records all drawing operations</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Recording-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-recording-surface-create">cairo_recording_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-recording-surface-ink-extents">cairo_recording_surface_ink_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-recording-surface-get-extents">cairo_recording_surface_get_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Recording-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-RECORDING-SURFACE:CAPS">CAIRO_HAS_RECORDING_SURFACE</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Recording-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>A recording surface is a surface that records all drawing operations at
+the highest level of the surface backend interface, (that is, the
+level of paint, mask, stroke, fill, and show_text_glyphs). The recording
+surface can then be "replayed" against any target surface by using it
+as a source surface.</para>
+<para>If you want to replay a surface so that the results in target will be
+identical to the results that would have been obtained if the original
+operations applied to the recording surface had instead been applied to the
+target surface, you can use code like this:</para>
+<informalexample><programlisting>
+cairo_t *cr;
+
+cr = cairo_create (target);
+cairo_set_source_surface (cr, recording_surface, 0.0, 0.0);
+cairo_paint (cr);
+cairo_destroy (cr);
+</programlisting></informalexample>
+<para>A recording surface is logically unbounded, i.e. it has no implicit constraint
+on the size of the drawing surface. However, in practice this is rarely
+useful as you wish to replay against a particular target surface with
+known bounds. For this case, it is more efficient to specify the target
+extents to the recording surface upon creation.</para>
+<para>The recording phase of the recording surface is careful to snapshot all
+necessary objects (paths, patterns, etc.), in order to achieve
+accurate replay. The efficiency of the recording surface could be
+improved by improving the implementation of snapshot for the
+various objects. For example, it would be nice to have a
+copy-on-write implementation for _cairo_surface_snapshot.</para>
+
+</refsect1>
+<refsect1 id="cairo-Recording-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-recording-surface-create" role="function" condition="since:1.10">
+<title>cairo_recording_surface_create&#160;()</title>
+<indexterm zone="cairo-recording-surface-create" role="1.10"><primary sortas="recording_surface_create">cairo_recording_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_recording_surface_create (<parameter><link linkend="cairo-content-t"><type>cairo_content_t</type></link> content</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-t"><type>cairo_rectangle_t</type></link> *extents</parameter>);</programlisting>
+<para>Creates a recording-surface which can be used to record all drawing operations
+at the highest level (that is, the level of paint, mask, stroke, fill
+and show_text_glyphs). The recording surface can then be "replayed" against
+any target surface by using it as a source to drawing operations.</para>
+<para>The recording phase of the recording surface is careful to snapshot all
+necessary objects (paths, patterns, etc.), in order to achieve
+accurate replay.</para>
+<refsect3 id="cairo-recording-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>content</para></entry>
+<entry role="parameter_description"><para>the content of the recording surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>the extents to record in pixels, can be <link linkend="NULL:CAPS"><literal>NULL</literal></link> to record
+unbounded operations.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-recording-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-recording-surface-ink-extents" role="function" condition="since:1.10">
+<title>cairo_recording_surface_ink_extents&#160;()</title>
+<indexterm zone="cairo-recording-surface-ink-extents" role="1.10"><primary sortas="recording_surface_ink_extents">cairo_recording_surface_ink_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_recording_surface_ink_extents (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y0</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *width</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *height</parameter>);</programlisting>
+<para>Measures the extents of the operations stored within the recording-surface.
+This is useful to compute the required size of an image surface (or
+equivalent) into which to replay the full sequence of drawing operations.</para>
+<refsect3 id="cairo-recording-surface-ink-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-recording-surface-t"><type>cairo_recording_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x0</para></entry>
+<entry role="parameter_description"><para>the x-coordinate of the top-left of the ink bounding box</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y0</para></entry>
+<entry role="parameter_description"><para>the y-coordinate of the top-left of the ink bounding box</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the width of the ink bounding box</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the height of the ink bounding box</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-recording-surface-get-extents" role="function" condition="since:1.12">
+<title>cairo_recording_surface_get_extents&#160;()</title>
+<indexterm zone="cairo-recording-surface-get-extents" role="1.12"><primary sortas="recording_surface_get_extents">cairo_recording_surface_get_extents</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_recording_surface_get_extents (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-rectangle-t"><type>cairo_rectangle_t</type></link> *extents</parameter>);</programlisting>
+<para>Get the extents of the recording-surface.</para>
+<refsect3 id="cairo-recording-surface-get-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-recording-surface-t"><type>cairo_recording_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>the <link linkend="cairo-rectangle-t"><type>cairo_rectangle_t</type></link> to be assigned the extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-recording-surface-get-extents.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is bounded, of recording type, and
+not in an error state, otherwise <link linkend="FALSE:CAPS"><literal>FALSE</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Recording-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-RECORDING-SURFACE:CAPS" role="macro" condition="since:1.10">
+<title>CAIRO_HAS_RECORDING_SURFACE</title>
+<indexterm zone="CAIRO-HAS-RECORDING-SURFACE:CAPS" role="1.10"><primary sortas="HAS_RECORDING_SURFACE">CAIRO_HAS_RECORDING_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_RECORDING_SURFACE 1
+</programlisting>
+<para>Defined if the recording surface backend is available.
+The recording surface backend is always built in.
+This macro was added for completeness in cairo 1.10.</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Recording-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-region.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-region.xml
new file mode 100644
index 0000000..30bc405
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-region.xml
@@ -0,0 +1,793 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Regions">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Regions.top_of_page">Regions</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Regions</refname>
+<refpurpose>Representing a pixel-aligned area</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Regions.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-region-create">cairo_region_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-region-create-rectangle">cairo_region_create_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-region-create-rectangles">cairo_region_create_rectangles</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-region-copy">cairo_region_copy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-region-reference">cairo_region_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-destroy">cairo_region_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-status">cairo_region_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-get-extents">cairo_region_get_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-num-rectangles">cairo_region_num_rectangles</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-get-rectangle">cairo_region_get_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-is-empty">cairo_region_is_empty</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-contains-point">cairo_region_contains_point</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-region-overlap-t"><returnvalue>cairo_region_overlap_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-contains-rectangle">cairo_region_contains_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-equal">cairo_region_equal</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-translate">cairo_region_translate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-intersect">cairo_region_intersect</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-intersect-rectangle">cairo_region_intersect_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-subtract">cairo_region_subtract</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-subtract-rectangle">cairo_region_subtract_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-union">cairo_region_union</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-union-rectangle">cairo_region_union_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-xor">cairo_region_xor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-region-xor-rectangle">cairo_region_xor_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Regions.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-region-t">cairo_region_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-region-overlap-t">cairo_region_overlap_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Regions.description" role="desc">
+<title role="desc.title">Description</title>
+<para>Regions are a simple graphical data type representing an area of
+integer-aligned rectangles. They are often used on raster surfaces
+to track areas of interest, such as change or clip areas.</para>
+
+</refsect1>
+<refsect1 id="cairo-Regions.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-region-create" role="function" condition="since:1.10">
+<title>cairo_region_create&#160;()</title>
+<indexterm zone="cairo-region-create" role="1.10"><primary sortas="region_create">cairo_region_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+cairo_region_create (<parameter><type>void</type></parameter>);</programlisting>
+<para>Allocates a new empty region object.</para>
+<refsect3 id="cairo-region-create.returns" role="returns">
+<title>Returns</title>
+<para> A newly allocated <link linkend="cairo-region-t"><type>cairo_region_t</type></link>. Free with
+<link linkend="cairo-region-destroy"><function>cairo_region_destroy()</function></link>. This function always returns a
+valid pointer; if memory cannot be allocated, then a special
+error object is returned where all operations on the object do nothing.
+You can check for this with <link linkend="cairo-region-status"><function>cairo_region_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-create-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_create_rectangle&#160;()</title>
+<indexterm zone="cairo-region-create-rectangle" role="1.10"><primary sortas="region_create_rectangle">cairo_region_create_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+cairo_region_create_rectangle (<parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Allocates a new region object containing <parameter>rectangle</parameter>
+.</para>
+<refsect3 id="cairo-region-create-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-create-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> A newly allocated <link linkend="cairo-region-t"><type>cairo_region_t</type></link>. Free with
+<link linkend="cairo-region-destroy"><function>cairo_region_destroy()</function></link>. This function always returns a
+valid pointer; if memory cannot be allocated, then a special
+error object is returned where all operations on the object do nothing.
+You can check for this with <link linkend="cairo-region-status"><function>cairo_region_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-create-rectangles" role="function" condition="since:1.10">
+<title>cairo_region_create_rectangles&#160;()</title>
+<indexterm zone="cairo-region-create-rectangles" role="1.10"><primary sortas="region_create_rectangles">cairo_region_create_rectangles</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+cairo_region_create_rectangles (<parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rects</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> count</parameter>);</programlisting>
+<para>Allocates a new region object containing the union of all given <parameter>rects</parameter>
+.</para>
+<refsect3 id="cairo-region-create-rectangles.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>rects</para></entry>
+<entry role="parameter_description"><para>an array of <parameter>count</parameter>
+rectangles</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>count</para></entry>
+<entry role="parameter_description"><para>number of rectangles</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-create-rectangles.returns" role="returns">
+<title>Returns</title>
+<para> A newly allocated <link linkend="cairo-region-t"><type>cairo_region_t</type></link>. Free with
+<link linkend="cairo-region-destroy"><function>cairo_region_destroy()</function></link>. This function always returns a
+valid pointer; if memory cannot be allocated, then a special
+error object is returned where all operations on the object do nothing.
+You can check for this with <link linkend="cairo-region-status"><function>cairo_region_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-copy" role="function" condition="since:1.10">
+<title>cairo_region_copy&#160;()</title>
+<indexterm zone="cairo-region-copy" role="1.10"><primary sortas="region_copy">cairo_region_copy</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+cairo_region_copy (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *original</parameter>);</programlisting>
+<para>Allocates a new region object copying the area from <parameter>original</parameter>
+.</para>
+<refsect3 id="cairo-region-copy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>original</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-copy.returns" role="returns">
+<title>Returns</title>
+<para> A newly allocated <link linkend="cairo-region-t"><type>cairo_region_t</type></link>. Free with
+<link linkend="cairo-region-destroy"><function>cairo_region_destroy()</function></link>. This function always returns a
+valid pointer; if memory cannot be allocated, then a special
+error object is returned where all operations on the object do nothing.
+You can check for this with <link linkend="cairo-region-status"><function>cairo_region_status()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-reference" role="function" condition="since:1.10">
+<title>cairo_region_reference&#160;()</title>
+<indexterm zone="cairo-region-reference" role="1.10"><primary sortas="region_reference">cairo_region_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-region-t"><returnvalue>cairo_region_t</returnvalue></link>&#160;*
+cairo_region_reference (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
+<para>Increases the reference count on <parameter>region</parameter>
+ by one. This prevents
+<parameter>region</parameter>
+ from being destroyed until a matching call to
+<link linkend="cairo-region-destroy"><function>cairo_region_destroy()</function></link> is made.</para>
+<refsect3 id="cairo-region-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-region-t"><type>cairo_region_t</type></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-destroy" role="function" condition="since:1.10">
+<title>cairo_region_destroy&#160;()</title>
+<indexterm zone="cairo-region-destroy" role="1.10"><primary sortas="region_destroy">cairo_region_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_region_destroy (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
+<para>Destroys a <link linkend="cairo-region-t"><type>cairo_region_t</type></link> object created with
+<link linkend="cairo-region-create"><function>cairo_region_create()</function></link>, <link linkend="cairo-region-copy"><function>cairo_region_copy()</function></link>, or
+or <link linkend="cairo-region-create-rectangle"><function>cairo_region_create_rectangle()</function></link>.</para>
+<refsect3 id="cairo-region-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-status" role="function" condition="since:1.10">
+<title>cairo_region_status&#160;()</title>
+<indexterm zone="cairo-region-status" role="1.10"><primary sortas="region_status">cairo_region_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_status (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
+<para>Checks whether an error has previous occurred for this
+region object.</para>
+<refsect3 id="cairo-region-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-get-extents" role="function" condition="since:1.10">
+<title>cairo_region_get_extents&#160;()</title>
+<indexterm zone="cairo-region-get-extents" role="1.10"><primary sortas="region_get_extents">cairo_region_get_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_region_get_extents (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>,
+ <parameter><link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *extents</parameter>);</programlisting>
+<para>Gets the bounding rectangle of <parameter>region</parameter>
+ as a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para>
+<refsect3 id="cairo-region-get-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>rectangle into which to store the extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-num-rectangles" role="function" condition="since:1.10">
+<title>cairo_region_num_rectangles&#160;()</title>
+<indexterm zone="cairo-region-num-rectangles" role="1.10"><primary sortas="region_num_rectangles">cairo_region_num_rectangles</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_region_num_rectangles (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
+<para>Returns the number of rectangles contained in <parameter>region</parameter>
+.</para>
+<refsect3 id="cairo-region-num-rectangles.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-num-rectangles.returns" role="returns">
+<title>Returns</title>
+<para> The number of rectangles contained in <parameter>region</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-get-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_get_rectangle&#160;()</title>
+<indexterm zone="cairo-region-get-rectangle" role="1.10"><primary sortas="region_get_rectangle">cairo_region_get_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_region_get_rectangle (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> nth</parameter>,
+ <parameter><link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Stores the <parameter>nth</parameter>
+ rectangle from the region in <parameter>rectangle</parameter>
+.</para>
+<refsect3 id="cairo-region-get-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>nth</para></entry>
+<entry role="parameter_description"><para>a number indicating which rectangle should be returned</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>return location for a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-is-empty" role="function" condition="since:1.10">
+<title>cairo_region_is_empty&#160;()</title>
+<indexterm zone="cairo-region-is-empty" role="1.10"><primary sortas="region_is_empty">cairo_region_is_empty</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_region_is_empty (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
+<para>Checks whether <parameter>region</parameter>
+ is empty.</para>
+<refsect3 id="cairo-region-is-empty.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-is-empty.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>region</parameter>
+is empty, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if it isn't.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-contains-point" role="function" condition="since:1.10">
+<title>cairo_region_contains_point&#160;()</title>
+<indexterm zone="cairo-region-contains-point" role="1.10"><primary sortas="region_contains_point">cairo_region_contains_point</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_region_contains_point (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> x</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> y</parameter>);</programlisting>
+<para>Checks whether (<parameter>x</parameter>
+, <parameter>y</parameter>
+) is contained in <parameter>region</parameter>
+.</para>
+<refsect3 id="cairo-region-contains-point.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the x coordinate of a point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the y coordinate of a point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-contains-point.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if (<parameter>x</parameter>
+, <parameter>y</parameter>
+) is contained in <parameter>region</parameter>
+, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if it is not.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-contains-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_contains_rectangle&#160;()</title>
+<indexterm zone="cairo-region-contains-rectangle" role="1.10"><primary sortas="region_contains_rectangle">cairo_region_contains_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-region-overlap-t"><returnvalue>cairo_region_overlap_t</returnvalue></link>
+cairo_region_contains_rectangle (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Checks whether <parameter>rectangle</parameter>
+ is inside, outside or partially contained
+in <parameter>region</parameter>
+</para>
+<refsect3 id="cairo-region-contains-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-contains-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-REGION-OVERLAP-IN:CAPS"><literal>CAIRO_REGION_OVERLAP_IN</literal></link> if <parameter>rectangle</parameter>
+is entirely inside <parameter>region</parameter>
+,
+<link linkend="CAIRO-REGION-OVERLAP-OUT:CAPS"><literal>CAIRO_REGION_OVERLAP_OUT</literal></link> if <parameter>rectangle</parameter>
+is entirely outside <parameter>region</parameter>
+, or
+<link linkend="CAIRO-REGION-OVERLAP-PART:CAPS"><literal>CAIRO_REGION_OVERLAP_PART</literal></link> if <parameter>rectangle</parameter>
+is partially inside and partially outside <parameter>region</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-equal" role="function" condition="since:1.10">
+<title>cairo_region_equal&#160;()</title>
+<indexterm zone="cairo-region-equal" role="1.10"><primary sortas="region_equal">cairo_region_equal</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_region_equal (<parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *a</parameter>,
+ <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *b</parameter>);</programlisting>
+<para>Compares whether region_a is equivalent to region_b. <link linkend="NULL:CAPS"><literal>NULL</literal></link> as an argument
+is equal to itself, but not to any non-<link linkend="NULL:CAPS"><literal>NULL</literal></link> region.</para>
+<refsect3 id="cairo-region-equal.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>a</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link> or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>b</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link> or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-equal.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if both regions contained the same coverage,
+<link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if it is not or any region is in an error status.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-translate" role="function" condition="since:1.10">
+<title>cairo_region_translate&#160;()</title>
+<indexterm zone="cairo-region-translate" role="1.10"><primary sortas="region_translate">cairo_region_translate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_region_translate (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> dx</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> dy</parameter>);</programlisting>
+<para>Translates <parameter>region</parameter>
+ by (<parameter>dx</parameter>
+, <parameter>dy</parameter>
+).</para>
+<refsect3 id="cairo-region-translate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>region</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx</para></entry>
+<entry role="parameter_description"><para>Amount to translate in the x direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy</para></entry>
+<entry role="parameter_description"><para>Amount to translate in the y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-intersect" role="function" condition="since:1.10">
+<title>cairo_region_intersect&#160;()</title>
+<indexterm zone="cairo-region-intersect" role="1.10"><primary sortas="region_intersect">cairo_region_intersect</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_intersect (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *other</parameter>);</programlisting>
+<para>Computes the intersection of <parameter>dst</parameter>
+ with <parameter>other</parameter>
+ and places the result in <parameter>dst</parameter>
+</para>
+<refsect3 id="cairo-region-intersect.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>another <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-intersect.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-intersect-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_intersect_rectangle&#160;()</title>
+<indexterm zone="cairo-region-intersect-rectangle" role="1.10"><primary sortas="region_intersect_rectangle">cairo_region_intersect_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_intersect_rectangle (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Computes the intersection of <parameter>dst</parameter>
+ with <parameter>rectangle</parameter>
+ and places the
+result in <parameter>dst</parameter>
+</para>
+<refsect3 id="cairo-region-intersect-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-intersect-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-subtract" role="function" condition="since:1.10">
+<title>cairo_region_subtract&#160;()</title>
+<indexterm zone="cairo-region-subtract" role="1.10"><primary sortas="region_subtract">cairo_region_subtract</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_subtract (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *other</parameter>);</programlisting>
+<para>Subtracts <parameter>other</parameter>
+ from <parameter>dst</parameter>
+ and places the result in <parameter>dst</parameter>
+</para>
+<refsect3 id="cairo-region-subtract.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>another <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-subtract.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-subtract-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_subtract_rectangle&#160;()</title>
+<indexterm zone="cairo-region-subtract-rectangle" role="1.10"><primary sortas="region_subtract_rectangle">cairo_region_subtract_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_subtract_rectangle (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Subtracts <parameter>rectangle</parameter>
+ from <parameter>dst</parameter>
+ and places the result in <parameter>dst</parameter>
+</para>
+<refsect3 id="cairo-region-subtract-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-subtract-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-union" role="function" condition="since:1.10">
+<title>cairo_region_union&#160;()</title>
+<indexterm zone="cairo-region-union" role="1.10"><primary sortas="region_union">cairo_region_union</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_union (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *other</parameter>);</programlisting>
+<para>Computes the union of <parameter>dst</parameter>
+ with <parameter>other</parameter>
+ and places the result in <parameter>dst</parameter>
+</para>
+<refsect3 id="cairo-region-union.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>another <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-union.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-union-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_union_rectangle&#160;()</title>
+<indexterm zone="cairo-region-union-rectangle" role="1.10"><primary sortas="region_union_rectangle">cairo_region_union_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_union_rectangle (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Computes the union of <parameter>dst</parameter>
+ with <parameter>rectangle</parameter>
+ and places the result in <parameter>dst</parameter>
+.</para>
+<refsect3 id="cairo-region-union-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-union-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-xor" role="function" condition="since:1.10">
+<title>cairo_region_xor&#160;()</title>
+<indexterm zone="cairo-region-xor" role="1.10"><primary sortas="region_xor">cairo_region_xor</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_xor (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *other</parameter>);</programlisting>
+<para>Computes the exclusive difference of <parameter>dst</parameter>
+ with <parameter>other</parameter>
+ and places the
+result in <parameter>dst</parameter>
+. That is, <parameter>dst</parameter>
+ will be set to contain all areas that
+are either in <parameter>dst</parameter>
+ or in <parameter>other</parameter>
+, but not in both.</para>
+<refsect3 id="cairo-region-xor.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>another <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-xor.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-xor-rectangle" role="function" condition="since:1.10">
+<title>cairo_region_xor_rectangle&#160;()</title>
+<indexterm zone="cairo-region-xor-rectangle" role="1.10"><primary sortas="region_xor_rectangle">cairo_region_xor_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_region_xor_rectangle (<parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *dst</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *rectangle</parameter>);</programlisting>
+<para>Computes the exclusive difference of <parameter>dst</parameter>
+ with <parameter>rectangle</parameter>
+ and places the
+result in <parameter>dst</parameter>
+. That is, <parameter>dst</parameter>
+ will be set to contain all areas that are
+either in <parameter>dst</parameter>
+ or in <parameter>rectangle</parameter>
+, but not in both.</para>
+<refsect3 id="cairo-region-xor-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dst</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>rectangle</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-region-xor-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Regions.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-region-t" role="typedef" condition="since:1.10">
+<title>cairo_region_t</title>
+<indexterm zone="cairo-region-t" role="1.10"><primary sortas="region_t">cairo_region_t</primary></indexterm>
+<programlisting language="C">typedef struct _cairo_region cairo_region_t;
+</programlisting>
+<para>A <link linkend="cairo-region-t"><type>cairo_region_t</type></link> represents a set of integer-aligned rectangles.</para>
+<para>It allows set-theoretical operations like <link linkend="cairo-region-union"><function>cairo_region_union()</function></link> and
+<link linkend="cairo-region-intersect"><function>cairo_region_intersect()</function></link> to be performed on them.</para>
+<para>Memory management of <link linkend="cairo-region-t"><type>cairo_region_t</type></link> is done with
+<link linkend="cairo-region-reference"><function>cairo_region_reference()</function></link> and <link linkend="cairo-region-destroy"><function>cairo_region_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-region-overlap-t" role="enum" condition="since:1.10">
+<title>enum cairo_region_overlap_t</title>
+<indexterm zone="cairo-region-overlap-t" role="1.10"><primary sortas="region_overlap_t">cairo_region_overlap_t</primary></indexterm>
+<para>Used as the return value for <link linkend="cairo-region-contains-rectangle"><function>cairo_region_contains_rectangle()</function></link>.</para>
+<refsect3 id="cairo-region-overlap-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-REGION-OVERLAP-IN:CAPS">CAIRO_REGION_OVERLAP_IN</para></entry>
+<entry role="enum_member_description"><para>The contents are entirely inside the region. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-REGION-OVERLAP-OUT:CAPS">CAIRO_REGION_OVERLAP_OUT</para></entry>
+<entry role="enum_member_description"><para>The contents are entirely outside the region. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-REGION-OVERLAP-PART:CAPS">CAIRO_REGION_OVERLAP_PART</para></entry>
+<entry role="enum_member_description"><para>The contents are partially inside and
+ partially outside the region. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-scaled-font.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-scaled-font.xml
new file mode 100644
index 0000000..3be82a2
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-scaled-font.xml
@@ -0,0 +1,925 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-scaled-font-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-scaled-font-t.top_of_page">cairo_scaled_font_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_scaled_font_t</refname>
+<refpurpose>Font face at particular size and options</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-scaled-font-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-scaled-font-t"><returnvalue>cairo_scaled_font_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-create">cairo_scaled_font_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-scaled-font-t"><returnvalue>cairo_scaled_font_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-reference">cairo_scaled_font_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-destroy">cairo_scaled_font_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-status">cairo_scaled_font_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-extents">cairo_scaled_font_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-text-extents">cairo_scaled_font_text_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-glyph-extents">cairo_scaled_font_glyph_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-text-to-glyphs">cairo_scaled_font_text_to_glyphs</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-font-face">cairo_scaled_font_get_font_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-font-options">cairo_scaled_font_get_font_options</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-font-matrix">cairo_scaled_font_get_font_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-ctm">cairo_scaled_font_get_ctm</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-scale-matrix">cairo_scaled_font_get_scale_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-type-t"><returnvalue>cairo_font_type_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-type">cairo_scaled_font_get_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-reference-count">cairo_scaled_font_get_reference_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-set-user-data">cairo_scaled_font_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-scaled-font-get-user-data">cairo_scaled_font_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-scaled-font-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-scaled-font-t">cairo_scaled_font_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-font-extents-t">cairo_font_extents_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-text-extents-t">cairo_text_extents_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-scaled-font-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> represents a realization of a font face at a particular
+size and transformation and a certain set of font options.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-scaled-font-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-scaled-font-create" role="function" condition="since:1.0">
+<title>cairo_scaled_font_create&#160;()</title>
+<indexterm zone="cairo-scaled-font-create" role="1.0"><primary sortas="scaled_font_create">cairo_scaled_font_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-scaled-font-t"><returnvalue>cairo_scaled_font_t</returnvalue></link>&#160;*
+cairo_scaled_font_create (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *font_matrix</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *ctm</parameter>,
+ <parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</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>
+<refsect3 id="cairo-scaled-font-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>font_matrix</para></entry>
+<entry role="parameter_description"><para>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>.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>ctm</para></entry>
+<entry role="parameter_description"><para>user to device transformation matrix with which the font will
+be used.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>options to use when getting metrics for the font and
+rendering with it.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-create.returns" role="returns">
+<title>Returns</title>
+<para> 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></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-reference" role="function" condition="since:1.0">
+<title>cairo_scaled_font_reference&#160;()</title>
+<indexterm zone="cairo-scaled-font-reference" role="1.0"><primary sortas="scaled_font_reference">cairo_scaled_font_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-scaled-font-t"><returnvalue>cairo_scaled_font_t</returnvalue></link>&#160;*
+cairo_scaled_font_reference (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</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>Use <link linkend="cairo-scaled-font-get-reference-count"><function>cairo_scaled_font_get_reference_count()</function></link> to get the number of
+references to a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>.</para>
+<refsect3 id="cairo-scaled-font-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>, (may be <link linkend="NULL:CAPS"><literal>NULL</literal></link> in which case
+this function does nothing)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-destroy" role="function" condition="since:1.0">
+<title>cairo_scaled_font_destroy&#160;()</title>
+<indexterm zone="cairo-scaled-font-destroy" role="1.0"><primary sortas="scaled_font_destroy">cairo_scaled_font_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_destroy (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</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>
+<refsect3 id="cairo-scaled-font-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-status" role="function" condition="since:1.0">
+<title>cairo_scaled_font_status&#160;()</title>
+<indexterm zone="cairo-scaled-font-status" role="1.0"><primary sortas="scaled_font_status">cairo_scaled_font_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_scaled_font_status (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this
+scaled_font.</para>
+<refsect3 id="cairo-scaled-font-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or another error such as
+<link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-extents" role="function" condition="since:1.0">
+<title>cairo_scaled_font_extents&#160;()</title>
+<indexterm zone="cairo-scaled-font-extents" role="1.0"><primary sortas="scaled_font_extents">cairo_scaled_font_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_extents (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> *extents</parameter>);</programlisting>
+<para>Gets the metrics for a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>.</para>
+<refsect3 id="cairo-scaled-font-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> which to store the retrieved extents.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-text-extents" role="function" condition="since:1.2">
+<title>cairo_scaled_font_text_extents&#160;()</title>
+<indexterm zone="cairo-scaled-font-text-extents" role="1.2"><primary sortas="scaled_font_text_extents">cairo_scaled_font_text_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_text_extents (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>,
+ <parameter><link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> *extents</parameter>);</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
+drawn at the origin (0,0) (as it would be drawn by <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>
+if the cairo graphics state were set to the same font_face,
+font_matrix, ctm, and font_options as <parameter>scaled_font</parameter>
+). Additionally,
+the x_advance and y_advance values indicate the amount by which the
+current point would be advanced by <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>.</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>
+<refsect3 id="cairo-scaled-font-text-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a NUL-terminated string of text, encoded in UTF-8</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> which to store the retrieved extents.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-glyph-extents" role="function" condition="since:1.0">
+<title>cairo_scaled_font_glyph_extents&#160;()</title>
+<indexterm zone="cairo-scaled-font-glyph-extents" role="1.0"><primary sortas="scaled_font_glyph_extents">cairo_scaled_font_glyph_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_glyph_extents (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter>const <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> *glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_glyphs</parameter>,
+ <parameter><link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> *extents</parameter>);</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 <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link> if the cairo
+graphics state were set to the same font_face, font_matrix, ctm,
+and font_options as <parameter>scaled_font</parameter>
+). Additionally, the x_advance and
+y_advance values indicate the amount by which the current point
+would be advanced by <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link>.</para>
+<para>Note that whitespace glyphs do not contribute to the size of the
+rectangle (extents.width and extents.height).</para>
+<refsect3 id="cairo-scaled-font-glyph-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>an array of glyph IDs with X and Y offsets.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>the number of glyphs in the <parameter>glyphs</parameter>
+array</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> which to store the retrieved extents.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-text-to-glyphs" role="function" condition="since:1.8">
+<title>cairo_scaled_font_text_to_glyphs&#160;()</title>
+<indexterm zone="cairo-scaled-font-text-to-glyphs" role="1.8"><primary sortas="scaled_font_text_to_glyphs">cairo_scaled_font_text_to_glyphs</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_scaled_font_text_to_glyphs (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> utf8_len</parameter>,
+ <parameter><link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> **glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_glyphs</parameter>,
+ <parameter><link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link> **clusters</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_clusters</parameter>,
+ <parameter><link linkend="cairo-text-cluster-flags-t"><type>cairo_text_cluster_flags_t</type></link> *cluster_flags</parameter>);</programlisting>
+<para>Converts UTF-8 text to an array of glyphs, optionally with cluster
+mapping, that can be used to render later using <parameter>scaled_font</parameter>
+.</para>
+<para>If <parameter>glyphs</parameter>
+ initially points to a non-<link linkend="NULL:CAPS"><literal>NULL</literal></link> value, that array is used
+as a glyph buffer, and <parameter>num_glyphs</parameter>
+ should point to the number of glyph
+entries available there. If the provided glyph array is too short for
+the conversion, a new glyph array is allocated using <link linkend="cairo-glyph-allocate"><function>cairo_glyph_allocate()</function></link>
+and placed in <parameter>glyphs</parameter>
+. Upon return, <parameter>num_glyphs</parameter>
+ always contains the
+number of generated glyphs. If the value <parameter>glyphs</parameter>
+ points to has changed
+after the call, the user is responsible for freeing the allocated glyph
+array using <link linkend="cairo-glyph-free"><function>cairo_glyph_free()</function></link>. This may happen even if the provided
+array was large enough.</para>
+<para>If <parameter>clusters</parameter>
+ is not <link linkend="NULL:CAPS"><literal>NULL</literal></link>, <parameter>num_clusters</parameter>
+ and <parameter>cluster_flags</parameter>
+ should not be <link linkend="NULL:CAPS"><literal>NULL</literal></link>,
+and cluster mapping will be computed.
+The semantics of how cluster array allocation works is similar to the glyph
+array. That is,
+if <parameter>clusters</parameter>
+ initially points to a non-<link linkend="NULL:CAPS"><literal>NULL</literal></link> value, that array is used
+as a cluster buffer, and <parameter>num_clusters</parameter>
+ should point to the number of cluster
+entries available there. If the provided cluster array is too short for
+the conversion, a new cluster array is allocated using <link linkend="cairo-text-cluster-allocate"><function>cairo_text_cluster_allocate()</function></link>
+and placed in <parameter>clusters</parameter>
+. Upon return, <parameter>num_clusters</parameter>
+ always contains the
+number of generated clusters. If the value <parameter>clusters</parameter>
+ points at has changed
+after the call, the user is responsible for freeing the allocated cluster
+array using <link linkend="cairo-text-cluster-free"><function>cairo_text_cluster_free()</function></link>. This may happen even if the provided
+array was large enough.</para>
+<para>In the simplest case, <parameter>glyphs</parameter>
+ and <parameter>clusters</parameter>
+ can point to <link linkend="NULL:CAPS"><literal>NULL</literal></link> initially
+and a suitable array will be allocated. In code:</para>
+<informalexample><programlisting>
+cairo_status_t status;
+
+cairo_glyph_t *glyphs = NULL;
+int num_glyphs;
+cairo_text_cluster_t *clusters = NULL;
+int num_clusters;
+cairo_text_cluster_flags_t cluster_flags;
+
+status = cairo_scaled_font_text_to_glyphs (scaled_font,
+ x, y,
+ utf8, utf8_len,
+ &amp;glyphs, &amp;num_glyphs,
+ &amp;clusters, &amp;num_clusters, &amp;cluster_flags);
+
+if (status == CAIRO_STATUS_SUCCESS) {
+ cairo_show_text_glyphs (cr,
+ utf8, utf8_len,
+ glyphs, num_glyphs,
+ clusters, num_clusters, cluster_flags);
+
+ cairo_glyph_free (glyphs);
+ cairo_text_cluster_free (clusters);
+}
+</programlisting></informalexample>
+<para>If no cluster mapping is needed:</para>
+<informalexample><programlisting>
+cairo_status_t status;
+
+cairo_glyph_t *glyphs = NULL;
+int num_glyphs;
+
+status = cairo_scaled_font_text_to_glyphs (scaled_font,
+ x, y,
+ utf8, utf8_len,
+ &amp;glyphs, &amp;num_glyphs,
+ NULL, NULL,
+ NULL);
+
+if (status == CAIRO_STATUS_SUCCESS) {
+ cairo_show_glyphs (cr, glyphs, num_glyphs);
+ cairo_glyph_free (glyphs);
+}
+</programlisting></informalexample>
+<para>If stack-based glyph and cluster arrays are to be used for small
+arrays:</para>
+<informalexample><programlisting>
+cairo_status_t status;
+
+cairo_glyph_t stack_glyphs[40];
+cairo_glyph_t *glyphs = stack_glyphs;
+int num_glyphs = sizeof (stack_glyphs) / sizeof (stack_glyphs[0]);
+cairo_text_cluster_t stack_clusters[40];
+cairo_text_cluster_t *clusters = stack_clusters;
+int num_clusters = sizeof (stack_clusters) / sizeof (stack_clusters[0]);
+cairo_text_cluster_flags_t cluster_flags;
+
+status = cairo_scaled_font_text_to_glyphs (scaled_font,
+ x, y,
+ utf8, utf8_len,
+ &amp;glyphs, &amp;num_glyphs,
+ &amp;clusters, &amp;num_clusters, &amp;cluster_flags);
+
+if (status == CAIRO_STATUS_SUCCESS) {
+ cairo_show_text_glyphs (cr,
+ utf8, utf8_len,
+ glyphs, num_glyphs,
+ clusters, num_clusters, cluster_flags);
+
+ if (glyphs != stack_glyphs)
+ cairo_glyph_free (glyphs);
+ if (clusters != stack_clusters)
+ cairo_text_cluster_free (clusters);
+}
+</programlisting></informalexample>
+<para>For details of how <parameter>clusters</parameter>
+, <parameter>num_clusters</parameter>
+, and <parameter>cluster_flags</parameter>
+ map input
+UTF-8 text to the output glyphs see <link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link>.</para>
+<para>The output values can be readily passed to <link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link>
+<link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link>, or related functions, assuming that the exact
+same <parameter>scaled_font</parameter>
+ is used for the operation.</para>
+<refsect3 id="cairo-scaled-font-text-to-glyphs.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X position to place first glyph</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y position to place first glyph</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a string of text encoded in UTF-8</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8_len</para></entry>
+<entry role="parameter_description"><para>length of <parameter>utf8</parameter>
+in bytes, or -1 if it is NUL-terminated</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>pointer to array of glyphs to fill</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>pointer to number of glyphs</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>clusters</para></entry>
+<entry role="parameter_description"><para>pointer to array of cluster mapping information to fill, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_clusters</para></entry>
+<entry role="parameter_description"><para>pointer to number of clusters, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cluster_flags</para></entry>
+<entry role="parameter_description"><para>pointer to location to store cluster flags corresponding to the
+output <parameter>clusters</parameter>
+, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-text-to-glyphs.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> upon success, or an error status
+if the input values are wrong or if conversion failed. If the input
+values are correct but the conversion failed, the error status is also
+set on <parameter>scaled_font</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-font-face" role="function" condition="since:1.2">
+<title>cairo_scaled_font_get_font_face&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-font-face" role="1.2"><primary sortas="scaled_font_get_font_face">cairo_scaled_font_get_font_face</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_scaled_font_get_font_face (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Gets the font face that this scaled font uses. This might be the
+font face passed to <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>, but this does not
+hold true for all possible cases.</para>
+<refsect3 id="cairo-scaled-font-get-font-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-get-font-face.returns" role="returns">
+<title>Returns</title>
+<para> The <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> with which <parameter>scaled_font</parameter>
+was
+created. This object is owned by cairo. To keep a reference to it,
+you must call <link linkend="cairo-scaled-font-reference"><function>cairo_scaled_font_reference()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-font-options" role="function" condition="since:1.2">
+<title>cairo_scaled_font_get_font_options&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-font-options" role="1.2"><primary sortas="scaled_font_get_font_options">cairo_scaled_font_get_font_options</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_get_font_options (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Stores the font options with which <parameter>scaled_font</parameter>
+ was created into
+<parameter>options</parameter>
+.</para>
+<refsect3 id="cairo-scaled-font-get-font-options.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>return value for the font options</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-font-matrix" role="function" condition="since:1.2">
+<title>cairo_scaled_font_get_font_matrix&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-font-matrix" role="1.2"><primary sortas="scaled_font_get_font_matrix">cairo_scaled_font_get_font_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_get_font_matrix (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *font_matrix</parameter>);</programlisting>
+<para>Stores the font matrix with which <parameter>scaled_font</parameter>
+ was created into
+<parameter>matrix</parameter>
+.</para>
+<refsect3 id="cairo-scaled-font-get-font-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>font_matrix</para></entry>
+<entry role="parameter_description"><para>return value for the matrix</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-ctm" role="function" condition="since:1.2">
+<title>cairo_scaled_font_get_ctm&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-ctm" role="1.2"><primary sortas="scaled_font_get_ctm">cairo_scaled_font_get_ctm</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_get_ctm (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *ctm</parameter>);</programlisting>
+<para>Stores the CTM with which <parameter>scaled_font</parameter>
+ was created into <parameter>ctm</parameter>
+.
+Note that the translation offsets (x0, y0) of the CTM are ignored
+by <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>. So, the matrix this
+function returns always has 0,0 as x0,y0.</para>
+<refsect3 id="cairo-scaled-font-get-ctm.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>ctm</para></entry>
+<entry role="parameter_description"><para>return value for the CTM</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-scale-matrix" role="function" condition="since:1.8">
+<title>cairo_scaled_font_get_scale_matrix&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-scale-matrix" role="1.8"><primary sortas="scaled_font_get_scale_matrix">cairo_scaled_font_get_scale_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scaled_font_get_scale_matrix (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *scale_matrix</parameter>);</programlisting>
+<para>Stores the scale matrix of <parameter>scaled_font</parameter>
+ into <parameter>matrix</parameter>
+.
+The scale matrix is product of the font matrix and the ctm
+associated with the scaled font, and hence is the matrix mapping from
+font space to device space.</para>
+<refsect3 id="cairo-scaled-font-get-scale-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>scale_matrix</para></entry>
+<entry role="parameter_description"><para>return value for the matrix</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-type" role="function" condition="since:1.2">
+<title>cairo_scaled_font_get_type&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-type" role="1.2"><primary sortas="scaled_font_get_type">cairo_scaled_font_get_type</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-type-t"><returnvalue>cairo_font_type_t</returnvalue></link>
+cairo_scaled_font_get_type (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>This function returns the type of the backend used to create
+a scaled font. See <link linkend="cairo-font-type-t"><type>cairo_font_type_t</type></link> for available types.
+However, this function never returns <link linkend="CAIRO-FONT-TYPE-TOY:CAPS"><literal>CAIRO_FONT_TYPE_TOY</literal></link>.</para>
+<refsect3 id="cairo-scaled-font-get-type.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-get-type.returns" role="returns">
+<title>Returns</title>
+<para> The type of <parameter>scaled_font</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-reference-count" role="function" condition="since:1.4">
+<title>cairo_scaled_font_get_reference_count&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-reference-count" role="1.4"><primary sortas="scaled_font_get_reference_count">cairo_scaled_font_get_reference_count</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_scaled_font_get_reference_count (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Returns the current reference count of <parameter>scaled_font</parameter>
+.</para>
+<refsect3 id="cairo-scaled-font-get-reference-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-get-reference-count.returns" role="returns">
+<title>Returns</title>
+<para> the current reference count of <parameter>scaled_font</parameter>
+. If the
+object is a nil object, 0 will be returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-set-user-data" role="function" condition="since:1.4">
+<title>cairo_scaled_font_set_user_data&#160;()</title>
+<indexterm zone="cairo-scaled-font-set-user-data" role="1.4"><primary sortas="scaled_font_set_user_data">cairo_scaled_font_set_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_scaled_font_set_user_data (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>);</programlisting>
+<para>Attach user data to <parameter>scaled_font</parameter>
+. To remove user data from a surface,
+call this function with the key that was used to set it and <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+for <parameter>data</parameter>
+.</para>
+<refsect3 id="cairo-scaled-font-set-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to attach to the <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> which will be called when the
+<link linkend="cairo-t"><type>cairo_t</type></link> is destroyed or when new user data is attached using the
+same key.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-set-user-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-scaled-font-get-user-data" role="function" condition="since:1.4">
+<title>cairo_scaled_font_get_user_data&#160;()</title>
+<indexterm zone="cairo-scaled-font-get-user-data" role="1.4"><primary sortas="scaled_font_get_user_data">cairo_scaled_font_get_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_scaled_font_get_user_data (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>);</programlisting>
+<para>Return user data previously attached to <parameter>scaled_font</parameter>
+ using the
+specified key. If no user data has been attached with the given
+key this function returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-scaled-font-get-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-scaled-font-get-user-data.returns" role="returns">
+<title>Returns</title>
+<para> the user data previously attached or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-scaled-font-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-scaled-font-t" role="typedef" condition="since:1.0">
+<title>cairo_scaled_font_t</title>
+<indexterm zone="cairo-scaled-font-t" role="1.0"><primary sortas="scaled_font_t">cairo_scaled_font_t</primary></indexterm>
+<programlisting language="C">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 <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> 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>There are various types of scaled fonts, depending on the
+<firstterm>font backend</firstterm> they use. The type of a
+scaled font can be queried using <link linkend="cairo-scaled-font-get-type"><function>cairo_scaled_font_get_type()</function></link>.</para>
+<para>Memory management of <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> is done with
+<link linkend="cairo-scaled-font-reference"><function>cairo_scaled_font_reference()</function></link> and <link linkend="cairo-scaled-font-destroy"><function>cairo_scaled_font_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-extents-t" role="struct" condition="since:1.0">
+<title>cairo_font_extents_t</title>
+<indexterm zone="cairo-font-extents-t" role="1.0"><primary sortas="font_extents_t">cairo_font_extents_t</primary></indexterm>
+<programlisting language="C">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-font-extents-t"><type>cairo_font_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>
+<refsect3 id="cairo-font-extents-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-font-extents-t.ascent">ascent</structfield>;</para></entry>
+<entry role="struct_member_description"><para>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.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-font-extents-t.descent">descent</structfield>;</para></entry>
+<entry role="struct_member_description"><para>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 font should
+align with elements below it.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-font-extents-t.height">height</structfield>;</para></entry>
+<entry role="struct_member_description"><para>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.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-font-extents-t.max-x-advance">max_x_advance</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the maximum distance in the X direction that
+the origin is advanced for any glyph in the font.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-font-extents-t.max-y-advance">max_y_advance</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the maximum distance in the Y direction that
+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.)</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-text-extents-t" role="struct" condition="since:1.0">
+<title>cairo_text_extents_t</title>
+<indexterm zone="cairo-text-extents-t" role="1.0"><primary sortas="text_extents_t">cairo_text_extents_t</primary></indexterm>
+<programlisting language="C">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>
+<refsect3 id="cairo-text-extents-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-text-extents-t.x-bearing">x_bearing</structfield>;</para></entry>
+<entry role="struct_member_description"><para>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.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-text-extents-t.y-bearing">y_bearing</structfield>;</para></entry>
+<entry role="struct_member_description"><para>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.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-text-extents-t.width">width</structfield>;</para></entry>
+<entry role="struct_member_description"><para>width of the glyphs as drawn</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-text-extents-t.height">height</structfield>;</para></entry>
+<entry role="struct_member_description"><para>height of the glyphs as drawn</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-text-extents-t.x-advance">x_advance</structfield>;</para></entry>
+<entry role="struct_member_description"><para>distance to advance in the X direction
+after drawing these glyphs</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-text-extents-t.y-advance">y_advance</structfield>;</para></entry>
+<entry role="struct_member_description"><para>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.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-scaled-font-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>, <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link>, <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-script.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-script.xml
new file mode 100644
index 0000000..c535be3
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-script.xml
@@ -0,0 +1,349 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Script-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Script-Surfaces.top_of_page">Script Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Script Surfaces</refname>
+<refpurpose>Rendering to replayable scripts</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Script-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-script-create">cairo_script_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-script-create-for-stream">cairo_script_create_for_stream</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-script-from-recording-surface">cairo_script_from_recording_surface</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-script-mode-t"><returnvalue>cairo_script_mode_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-script-get-mode">cairo_script_get_mode</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-script-set-mode">cairo_script_set_mode</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-script-surface-create">cairo_script_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-script-surface-create-for-target">cairo_script_surface_create_for_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-script-write-comment">cairo_script_write_comment</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Script-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-SCRIPT-SURFACE:CAPS">CAIRO_HAS_SCRIPT_SURFACE</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-script-mode-t">cairo_script_mode_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Script-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The script surface provides the ability to render to a native
+script that matches the cairo drawing model. The scripts can
+be replayed using tools under the util/cairo-script directory,
+or with cairo-perf-trace.</para>
+
+</refsect1>
+<refsect1 id="cairo-Script-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-script-create" role="function" condition="since:1.12">
+<title>cairo_script_create&#160;()</title>
+<indexterm zone="cairo-script-create" role="1.12"><primary sortas="script_create">cairo_script_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+cairo_script_create (<parameter>const <link linkend="char"><type>char</type></link> *filename</parameter>);</programlisting>
+<para>Creates a output device for emitting the script, used when
+creating the individual surfaces.</para>
+<refsect3 id="cairo-script-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>filename</para></entry>
+<entry role="parameter_description"><para>the name (path) of the file to write the script to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-script-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created device. The caller
+owns the surface and should call <link linkend="cairo-device-destroy"><function>cairo_device_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" device if an error such as out of memory
+occurs. You can use <link linkend="cairo-device-status"><function>cairo_device_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-create-for-stream" role="function" condition="since:1.12">
+<title>cairo_script_create_for_stream&#160;()</title>
+<indexterm zone="cairo-script-create-for-stream" role="1.12"><primary sortas="script_create_for_stream">cairo_script_create_for_stream</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+cairo_script_create_for_stream (<parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>);</programlisting>
+<para>Creates a output device for emitting the script, used when
+creating the individual surfaces.</para>
+<refsect3 id="cairo-script-create-for-stream.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>write_func</para></entry>
+<entry role="parameter_description"><para>callback function passed the bytes written to the script</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>user data to be passed to the callback</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-script-create-for-stream.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created device. The caller
+owns the surface and should call <link linkend="cairo-device-destroy"><function>cairo_device_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" device if an error such as out of memory
+occurs. You can use <link linkend="cairo-device-status"><function>cairo_device_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-from-recording-surface" role="function" condition="since:1.12">
+<title>cairo_script_from_recording_surface&#160;()</title>
+<indexterm zone="cairo-script-from-recording-surface" role="1.12"><primary sortas="script_from_recording_surface">cairo_script_from_recording_surface</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_script_from_recording_surface (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *script</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *recording_surface</parameter>);</programlisting>
+<para>Converts the record operations in <parameter>recording_surface</parameter>
+ into a script.</para>
+<refsect3 id="cairo-script-from-recording-surface.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>script</para></entry>
+<entry role="parameter_description"><para>the script (output device)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>recording_surface</para></entry>
+<entry role="parameter_description"><para>the recording surface to replay</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-script-from-recording-surface.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><type>CAIRO_STATUS_SUCCESS</type></link> on successful completion or an error code.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-get-mode" role="function" condition="since:1.12">
+<title>cairo_script_get_mode&#160;()</title>
+<indexterm zone="cairo-script-get-mode" role="1.12"><primary sortas="script_get_mode">cairo_script_get_mode</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-script-mode-t"><returnvalue>cairo_script_mode_t</returnvalue></link>
+cairo_script_get_mode (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *script</parameter>);</programlisting>
+<para>Queries the script for its current output mode.</para>
+<refsect3 id="cairo-script-get-mode.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>script</para></entry>
+<entry role="parameter_description"><para>The script (output device) to query</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-script-get-mode.returns" role="returns">
+<title>Returns</title>
+<para> the current output mode of the script</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-set-mode" role="function" condition="since:1.12">
+<title>cairo_script_set_mode&#160;()</title>
+<indexterm zone="cairo-script-set-mode" role="1.12"><primary sortas="script_set_mode">cairo_script_set_mode</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_script_set_mode (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *script</parameter>,
+ <parameter><link linkend="cairo-script-mode-t"><type>cairo_script_mode_t</type></link> mode</parameter>);</programlisting>
+<para>Change the output mode of the script</para>
+<refsect3 id="cairo-script-set-mode.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>script</para></entry>
+<entry role="parameter_description"><para>The script (output device)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>mode</para></entry>
+<entry role="parameter_description"><para>the new mode</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-surface-create" role="function" condition="since:1.12">
+<title>cairo_script_surface_create&#160;()</title>
+<indexterm zone="cairo-script-surface-create" role="1.12"><primary sortas="script_surface_create">cairo_script_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_script_surface_create (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *script</parameter>,
+ <parameter><link linkend="cairo-content-t"><type>cairo_content_t</type></link> content</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height</parameter>);</programlisting>
+<para>Create a new surface that will emit its rendering through <parameter>script</parameter>
+</para>
+<refsect3 id="cairo-script-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>script</para></entry>
+<entry role="parameter_description"><para>the script (output device)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>content</para></entry>
+<entry role="parameter_description"><para>the content of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-script-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-surface-create-for-target" role="function" condition="since:1.12">
+<title>cairo_script_surface_create_for_target&#160;()</title>
+<indexterm zone="cairo-script-surface-create-for-target" role="1.12"><primary sortas="script_surface_create_for_target">cairo_script_surface_create_for_target</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_script_surface_create_for_target
+ (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *script</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *target</parameter>);</programlisting>
+<para>Create a pxoy surface that will render to <parameter>target</parameter>
+ and record
+the operations to <parameter>device</parameter>
+.</para>
+<refsect3 id="cairo-script-surface-create-for-target.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>script</para></entry>
+<entry role="parameter_description"><para>the script (output device)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>target</para></entry>
+<entry role="parameter_description"><para>a target surface to wrap</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-script-surface-create-for-target.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-write-comment" role="function" condition="since:1.12">
+<title>cairo_script_write_comment&#160;()</title>
+<indexterm zone="cairo-script-write-comment" role="1.12"><primary sortas="script_write_comment">cairo_script_write_comment</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_script_write_comment (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *script</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *comment</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> len</parameter>);</programlisting>
+<para>Emit a string verbatim into the script.</para>
+<refsect3 id="cairo-script-write-comment.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>script</para></entry>
+<entry role="parameter_description"><para>the script (output device)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>comment</para></entry>
+<entry role="parameter_description"><para>the string to emit</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>len</para></entry>
+<entry role="parameter_description"><para>the length of the sting to write, or -1 to use <link linkend="strlen"><function>strlen()</function></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Script-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-SCRIPT-SURFACE:CAPS" role="macro" condition="since:1.12">
+<title>CAIRO_HAS_SCRIPT_SURFACE</title>
+<indexterm zone="CAIRO-HAS-SCRIPT-SURFACE:CAPS" role="1.12"><primary sortas="HAS_SCRIPT_SURFACE">CAIRO_HAS_SCRIPT_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_SCRIPT_SURFACE 1
+</programlisting>
+<para>Defined if the script surface backend is available.
+The script surface backend is always built in since 1.12.</para>
+<para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-script-mode-t" role="enum" condition="since:1.12">
+<title>enum cairo_script_mode_t</title>
+<indexterm zone="cairo-script-mode-t" role="1.12"><primary sortas="script_mode_t">cairo_script_mode_t</primary></indexterm>
+<para>A set of script output variants.</para>
+<refsect3 id="cairo-script-mode-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SCRIPT-MODE-ASCII:CAPS">CAIRO_SCRIPT_MODE_ASCII</para></entry>
+<entry role="enum_member_description"><para>the output will be in readable text (default). (Since 1.12)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SCRIPT-MODE-BINARY:CAPS">CAIRO_SCRIPT_MODE_BINARY</para></entry>
+<entry role="enum_member_description"><para>the output will use byte codes. (Since 1.12)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Script-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-skia.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-skia.xml
new file mode 100644
index 0000000..aa4af88
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-skia.xml
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-skia">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-skia.top_of_page">cairo-skia</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo-skia</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+
+
+<refsect1 id="cairo-cairo-skia.description" role="desc">
+<title role="desc.title">Description</title>
+
+</refsect1>
+<refsect1 id="cairo-cairo-skia.functions_details" role="details">
+<title role="details.title">Functions</title>
+<para />
+</refsect1>
+<refsect1 id="cairo-cairo-skia.other_details" role="details">
+<title role="details.title">Types and Values</title>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-status.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-status.xml
new file mode 100644
index 0000000..d257b95
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-status.xml
@@ -0,0 +1,366 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Error-handling">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Error-handling.top_of_page">Error handling</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Error handling</refname>
+<refpurpose>Decoding cairo's status</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Error-handling.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-status-to-string">cairo_status_to_string</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-debug-reset-static-data">cairo_debug_reset_static_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Error-handling.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-status-t">cairo_status_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Error-handling.description" role="desc">
+<title role="desc.title">Description</title>
+<para>Cairo uses a single status type to represent all kinds of errors. A status
+value of <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> represents no error and has an integer value
+of zero. All other status values represent an error.</para>
+<para>Cairo's error handling is designed to be easy to use and safe. All major
+cairo objects <firstterm>retain</firstterm> an error status internally which
+can be queried anytime by the users using cairo*_status() calls. In
+the mean time, it is safe to call all cairo functions normally even if the
+underlying object is in an error status. This means that no error handling
+code is required before or after each individual cairo function call.</para>
+
+</refsect1>
+<refsect1 id="cairo-Error-handling.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-status-to-string" role="function" condition="since:1.0">
+<title>cairo_status_to_string&#160;()</title>
+<indexterm zone="cairo-status-to-string" role="1.0"><primary sortas="status_to_string">cairo_status_to_string</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_status_to_string (<parameter><link linkend="cairo-status-t"><type>cairo_status_t</type></link> status</parameter>);</programlisting>
+<para>Provides a human-readable description of a <link linkend="cairo-status-t"><type>cairo_status_t</type></link>.</para>
+<refsect3 id="cairo-status-to-string.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>status</para></entry>
+<entry role="parameter_description"><para>a cairo status</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-status-to-string.returns" role="returns">
+<title>Returns</title>
+<para> a string representation of the status</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-debug-reset-static-data" role="function" condition="since:1.0">
+<title>cairo_debug_reset_static_data&#160;()</title>
+<indexterm zone="cairo-debug-reset-static-data" role="1.0"><primary sortas="debug_reset_static_data">cairo_debug_reset_static_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_debug_reset_static_data (<parameter><type>void</type></parameter>);</programlisting>
+<para>Resets all static data within cairo to its original state,
+(ie. identical to the state at the time of program invocation). For
+example, all caches within cairo will be flushed empty.</para>
+<para>This function is intended to be useful when using memory-checking
+tools such as valgrind. When valgrind's memcheck analyzes a
+cairo-using program without a call to <link linkend="cairo-debug-reset-static-data"><function>cairo_debug_reset_static_data()</function></link>,
+it will report all data reachable via cairo's static objects as
+"still reachable". Calling <link linkend="cairo-debug-reset-static-data"><function>cairo_debug_reset_static_data()</function></link> just prior
+to program termination will make it easier to get squeaky clean
+reports from valgrind.</para>
+<para>WARNING: It is only safe to call this function when there are no
+active cairo objects remaining, (ie. the appropriate destroy
+functions have been called as necessary). If there are active cairo
+objects, this call is likely to cause a crash, (eg. an assertion
+failure due to a hash table being destroyed when non-empty).</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Error-handling.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-status-t" role="enum" condition="since:1.0">
+<title>enum cairo_status_t</title>
+<indexterm zone="cairo-status-t" role="1.0"><primary sortas="status_t">cairo_status_t</primary></indexterm>
+<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>New entries may be added in future versions. Use <link linkend="cairo-status-to-string"><function>cairo_status_to_string()</function></link>
+to get a human-readable representation of an error message.</para>
+<refsect3 id="cairo-status-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-SUCCESS:CAPS">CAIRO_STATUS_SUCCESS</para></entry>
+<entry role="enum_member_description"><para>no error has occurred (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-NO-MEMORY:CAPS">CAIRO_STATUS_NO_MEMORY</para></entry>
+<entry role="enum_member_description"><para>out of memory (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-RESTORE:CAPS">CAIRO_STATUS_INVALID_RESTORE</para></entry>
+<entry role="enum_member_description"><para>cairo_restore() called without matching <link linkend="cairo-save"><function>cairo_save()</function></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-POP-GROUP:CAPS">CAIRO_STATUS_INVALID_POP_GROUP</para></entry>
+<entry role="enum_member_description"><para>no saved group to pop, i.e. <link linkend="cairo-pop-group"><function>cairo_pop_group()</function></link> without matching <link linkend="cairo-push-group"><function>cairo_push_group()</function></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-NO-CURRENT-POINT:CAPS">CAIRO_STATUS_NO_CURRENT_POINT</para></entry>
+<entry role="enum_member_description"><para>no current point defined (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-MATRIX:CAPS">CAIRO_STATUS_INVALID_MATRIX</para></entry>
+<entry role="enum_member_description"><para>invalid matrix (not invertible) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-STATUS:CAPS">CAIRO_STATUS_INVALID_STATUS</para></entry>
+<entry role="enum_member_description"><para>invalid value for an input <link linkend="cairo-status-t"><type>cairo_status_t</type></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-NULL-POINTER:CAPS">CAIRO_STATUS_NULL_POINTER</para></entry>
+<entry role="enum_member_description"><para><link linkend="NULL:CAPS"><literal>NULL</literal></link> pointer (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-STRING:CAPS">CAIRO_STATUS_INVALID_STRING</para></entry>
+<entry role="enum_member_description"><para>input string not valid UTF-8 (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-PATH-DATA:CAPS">CAIRO_STATUS_INVALID_PATH_DATA</para></entry>
+<entry role="enum_member_description"><para>input path data not valid (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-READ-ERROR:CAPS">CAIRO_STATUS_READ_ERROR</para></entry>
+<entry role="enum_member_description"><para>error while reading from input stream (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-WRITE-ERROR:CAPS">CAIRO_STATUS_WRITE_ERROR</para></entry>
+<entry role="enum_member_description"><para>error while writing to output stream (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-SURFACE-FINISHED:CAPS">CAIRO_STATUS_SURFACE_FINISHED</para></entry>
+<entry role="enum_member_description"><para>target surface has been finished (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-SURFACE-TYPE-MISMATCH:CAPS">CAIRO_STATUS_SURFACE_TYPE_MISMATCH</para></entry>
+<entry role="enum_member_description"><para>the surface type is not appropriate for the operation (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</para></entry>
+<entry role="enum_member_description"><para>the pattern type is not appropriate for the operation (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-CONTENT:CAPS">CAIRO_STATUS_INVALID_CONTENT</para></entry>
+<entry role="enum_member_description"><para>invalid value for an input <link linkend="cairo-content-t"><type>cairo_content_t</type></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-FORMAT:CAPS">CAIRO_STATUS_INVALID_FORMAT</para></entry>
+<entry role="enum_member_description"><para>invalid value for an input <link linkend="cairo-format-t"><type>cairo_format_t</type></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-VISUAL:CAPS">CAIRO_STATUS_INVALID_VISUAL</para></entry>
+<entry role="enum_member_description"><para>invalid value for an input Visual* (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-FILE-NOT-FOUND:CAPS">CAIRO_STATUS_FILE_NOT_FOUND</para></entry>
+<entry role="enum_member_description"><para>file not found (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-DASH:CAPS">CAIRO_STATUS_INVALID_DASH</para></entry>
+<entry role="enum_member_description"><para>invalid value for a dash setting (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-DSC-COMMENT:CAPS">CAIRO_STATUS_INVALID_DSC_COMMENT</para></entry>
+<entry role="enum_member_description"><para>invalid value for a DSC comment (Since 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-INDEX:CAPS">CAIRO_STATUS_INVALID_INDEX</para></entry>
+<entry role="enum_member_description"><para>invalid index passed to getter (Since 1.4)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-CLIP-NOT-REPRESENTABLE:CAPS">CAIRO_STATUS_CLIP_NOT_REPRESENTABLE</para></entry>
+<entry role="enum_member_description"><para>clip region not representable in desired format (Since 1.4)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-TEMP-FILE-ERROR:CAPS">CAIRO_STATUS_TEMP_FILE_ERROR</para></entry>
+<entry role="enum_member_description"><para>error creating or writing to a temporary file (Since 1.6)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-STRIDE:CAPS">CAIRO_STATUS_INVALID_STRIDE</para></entry>
+<entry role="enum_member_description"><para>invalid value for stride (Since 1.6)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-FONT-TYPE-MISMATCH:CAPS">CAIRO_STATUS_FONT_TYPE_MISMATCH</para></entry>
+<entry role="enum_member_description"><para>the font type is not appropriate for the operation (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-USER-FONT-IMMUTABLE:CAPS">CAIRO_STATUS_USER_FONT_IMMUTABLE</para></entry>
+<entry role="enum_member_description"><para>the user-font is immutable (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-USER-FONT-ERROR:CAPS">CAIRO_STATUS_USER_FONT_ERROR</para></entry>
+<entry role="enum_member_description"><para>error occurred in a user-font callback function (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-NEGATIVE-COUNT:CAPS">CAIRO_STATUS_NEGATIVE_COUNT</para></entry>
+<entry role="enum_member_description"><para>negative number used where it is not allowed (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-CLUSTERS:CAPS">CAIRO_STATUS_INVALID_CLUSTERS</para></entry>
+<entry role="enum_member_description"><para>input clusters do not represent the accompanying text and glyph array (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-SLANT:CAPS">CAIRO_STATUS_INVALID_SLANT</para></entry>
+<entry role="enum_member_description"><para>invalid value for an input <link linkend="cairo-font-slant-t"><type>cairo_font_slant_t</type></link> (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-WEIGHT:CAPS">CAIRO_STATUS_INVALID_WEIGHT</para></entry>
+<entry role="enum_member_description"><para>invalid value for an input <link linkend="cairo-font-weight-t"><type>cairo_font_weight_t</type></link> (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-SIZE:CAPS">CAIRO_STATUS_INVALID_SIZE</para></entry>
+<entry role="enum_member_description"><para>invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS">CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED</para></entry>
+<entry role="enum_member_description"><para>user-font method not implemented (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-DEVICE-TYPE-MISMATCH:CAPS">CAIRO_STATUS_DEVICE_TYPE_MISMATCH</para></entry>
+<entry role="enum_member_description"><para>the device type is not appropriate for the operation (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-DEVICE-ERROR:CAPS">CAIRO_STATUS_DEVICE_ERROR</para></entry>
+<entry role="enum_member_description"><para>an operation to the device caused an unspecified error (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</para></entry>
+<entry role="enum_member_description"><para>a mesh pattern
+ construction operation was used outside of a
+ <link linkend="cairo-mesh-pattern-begin-patch"><function>cairo_mesh_pattern_begin_patch()</function></link>/<link linkend="cairo-mesh-pattern-end-patch"><function>cairo_mesh_pattern_end_patch()</function></link>
+ pair (Since 1.12)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-DEVICE-FINISHED:CAPS">CAIRO_STATUS_DEVICE_FINISHED</para></entry>
+<entry role="enum_member_description"><para>target device has been finished (Since 1.12)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-JBIG2-GLOBAL-MISSING:CAPS">CAIRO_STATUS_JBIG2_GLOBAL_MISSING</para></entry>
+<entry role="enum_member_description"><para><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</literal></link> has been used on at least one image
+ but no image provided <link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL</literal></link> (Since 1.14)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-PNG-ERROR:CAPS">CAIRO_STATUS_PNG_ERROR</para></entry>
+<entry role="enum_member_description"><para>error occurred in libpng while reading from or writing to a PNG file (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-FREETYPE-ERROR:CAPS">CAIRO_STATUS_FREETYPE_ERROR</para></entry>
+<entry role="enum_member_description"><para>error occurred in libfreetype (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-WIN32-GDI-ERROR:CAPS">CAIRO_STATUS_WIN32_GDI_ERROR</para></entry>
+<entry role="enum_member_description"><para>error occurred in the Windows Graphics Device Interface (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-TAG-ERROR:CAPS">CAIRO_STATUS_TAG_ERROR</para></entry>
+<entry role="enum_member_description"><para>invalid tag name, attributes, or nesting (Since 1.16)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-STATUS-LAST-STATUS:CAPS">CAIRO_STATUS_LAST_STATUS</para></entry>
+<entry role="enum_member_description"><para>this is a special value indicating the number of
+ status values defined in this enumeration. When using this value, note
+ that the version of cairo at run-time may have additional status values
+ defined than the value of this symbol at compile-time. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Error-handling.see-also">
+<title>See Also</title>
+<para>cairo_status(), <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link>, <link linkend="cairo-pattern-status"><function>cairo_pattern_status()</function></link>,
+ <link linkend="cairo-font-face-status"><function>cairo_font_face_status()</function></link>, <link linkend="cairo-scaled-font-status"><function>cairo_scaled_font_status()</function></link>,
+ <link linkend="cairo-region-status"><function>cairo_region_status()</function></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-surface-observer.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-surface-observer.xml
new file mode 100644
index 0000000..b7e31b9
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-surface-observer.xml
@@ -0,0 +1,233 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-surface-observer">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-surface-observer.top_of_page">cairo-surface-observer</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo-surface-observer</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-surface-observer.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-create-observer">cairo_surface_create_observer</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-fill-callback">cairo_surface_observer_add_fill_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-finish-callback">cairo_surface_observer_add_finish_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-flush-callback">cairo_surface_observer_add_flush_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-glyphs-callback">cairo_surface_observer_add_glyphs_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-mask-callback">cairo_surface_observer_add_mask_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-paint-callback">cairo_surface_observer_add_paint_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-add-stroke-callback">cairo_surface_observer_add_stroke_callback</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-surface-observer-callback-t">*cairo_surface_observer_callback_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-elapsed">cairo_surface_observer_elapsed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-observer-print">cairo_surface_observer_print</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-surface-observer.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-OBSERVER-SURFACE:CAPS">CAIRO_HAS_OBSERVER_SURFACE</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-surface-observer-mode-t">cairo_surface_observer_mode_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-surface-observer.description" role="desc">
+<title role="desc.title">Description</title>
+
+</refsect1>
+<refsect1 id="cairo-cairo-surface-observer.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-surface-create-observer" role="function" condition="since:1.12">
+<title>cairo_surface_create_observer&#160;()</title>
+<indexterm zone="cairo-surface-create-observer" role="1.12"><primary sortas="surface_create_observer">cairo_surface_create_observer</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_surface_create_observer (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *target</parameter>,
+ <parameter><link linkend="cairo-surface-observer-mode-t"><type>cairo_surface_observer_mode_t</type></link> mode</parameter>);</programlisting>
+<para>Create a new surface that exists solely to watch another is doing. In
+the process it will log operations and times, which are fast, which are
+slow, which are frequent, etc.</para>
+<para>The <parameter>mode</parameter>
+ parameter can be set to either CAIRO_SURFACE_OBSERVER_NORMAL
+or CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS, to control whether or not
+the internal observer should record operations.</para>
+<refsect3 id="cairo-surface-create-observer.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>target</para></entry>
+<entry role="parameter_description"><para>an existing surface for which the observer will watch</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>mode</para></entry>
+<entry role="parameter_description"><para>sets the mode of operation (normal vs. record)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-create-observer.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly allocated surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if <parameter>other</parameter>
+is already in an error state
+or any other error occurs.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-surface-observer-add-fill-callback" role="function">
+<title>cairo_surface_observer_add_fill_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-fill-callback"><primary sortas="surface_observer_add_fill_callback">cairo_surface_observer_add_fill_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_fill_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-add-finish-callback" role="function">
+<title>cairo_surface_observer_add_finish_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-finish-callback"><primary sortas="surface_observer_add_finish_callback">cairo_surface_observer_add_finish_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_finish_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-add-flush-callback" role="function">
+<title>cairo_surface_observer_add_flush_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-flush-callback"><primary sortas="surface_observer_add_flush_callback">cairo_surface_observer_add_flush_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_flush_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-add-glyphs-callback" role="function">
+<title>cairo_surface_observer_add_glyphs_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-glyphs-callback"><primary sortas="surface_observer_add_glyphs_callback">cairo_surface_observer_add_glyphs_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_glyphs_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-add-mask-callback" role="function">
+<title>cairo_surface_observer_add_mask_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-mask-callback"><primary sortas="surface_observer_add_mask_callback">cairo_surface_observer_add_mask_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_mask_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-add-paint-callback" role="function">
+<title>cairo_surface_observer_add_paint_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-paint-callback"><primary sortas="surface_observer_add_paint_callback">cairo_surface_observer_add_paint_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_paint_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-add-stroke-callback" role="function">
+<title>cairo_surface_observer_add_stroke_callback&#160;()</title>
+<indexterm zone="cairo-surface-observer-add-stroke-callback"><primary sortas="surface_observer_add_stroke_callback">cairo_surface_observer_add_stroke_callback</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_add_stroke_callback
+ (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *abstract_surface</parameter>,
+ <parameter><link linkend="cairo-surface-observer-callback-t"><type>cairo_surface_observer_callback_t</type></link> func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-callback-t" role="function">
+<title>cairo_surface_observer_callback_t&#160;()</title>
+<indexterm zone="cairo-surface-observer-callback-t"><primary sortas="surface_observer_callback_t">cairo_surface_observer_callback_t</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_surface_observer_callback_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *observer</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *target</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *data</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-elapsed" role="function">
+<title>cairo_surface_observer_elapsed&#160;()</title>
+<indexterm zone="cairo-surface-observer-elapsed"><primary sortas="surface_observer_elapsed">cairo_surface_observer_elapsed</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_surface_observer_elapsed (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-print" role="function">
+<title>cairo_surface_observer_print&#160;()</title>
+<indexterm zone="cairo-surface-observer-print"><primary sortas="surface_observer_print">cairo_surface_observer_print</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_observer_print (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>);</programlisting>
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-surface-observer.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-OBSERVER-SURFACE:CAPS" role="macro">
+<title>CAIRO_HAS_OBSERVER_SURFACE</title>
+<indexterm zone="CAIRO-HAS-OBSERVER-SURFACE:CAPS"><primary sortas="HAS_OBSERVER_SURFACE">CAIRO_HAS_OBSERVER_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_OBSERVER_SURFACE 1
+</programlisting>
+</refsect2>
+<refsect2 id="cairo-surface-observer-mode-t" role="enum" condition="since:1.12">
+<title>enum cairo_surface_observer_mode_t</title>
+<indexterm zone="cairo-surface-observer-mode-t" role="1.12"><primary sortas="surface_observer_mode_t">cairo_surface_observer_mode_t</primary></indexterm>
+<para>Whether operations should be recorded.</para>
+<refsect3 id="cairo-surface-observer-mode-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-OBSERVER-NORMAL:CAPS">CAIRO_SURFACE_OBSERVER_NORMAL</para></entry>
+<entry role="enum_member_description"><para>no recording is done</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-OBSERVER-RECORD-OPERATIONS:CAPS">CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS</para></entry>
+<entry role="enum_member_description"><para>operations are recorded</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-surface.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-surface.xml
new file mode 100644
index 0000000..2b8e112
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-surface.xml
@@ -0,0 +1,1525 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-surface-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-surface-t.top_of_page">cairo_surface_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_surface_t</refname>
+<refpurpose>Base class for surfaces</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-surface-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-create-similar">cairo_surface_create_similar</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-create-similar-image">cairo_surface_create_similar_image</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-create-for-rectangle">cairo_surface_create_for_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-reference">cairo_surface_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-destroy">cairo_surface_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-status">cairo_surface_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-finish">cairo_surface_finish</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-flush">cairo_surface_flush</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-get-device">cairo_surface_get_device</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-font-options">cairo_surface_get_font_options</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-content-t"><returnvalue>cairo_content_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-content">cairo_surface_get_content</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-mark-dirty">cairo_surface_mark_dirty</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-mark-dirty-rectangle">cairo_surface_mark_dirty_rectangle</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-set-device-offset">cairo_surface_set_device_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-device-offset">cairo_surface_get_device_offset</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-device-scale">cairo_surface_get_device_scale</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-set-device-scale">cairo_surface_set_device_scale</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-set-fallback-resolution">cairo_surface_set_fallback_resolution</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-fallback-resolution">cairo_surface_get_fallback_resolution</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-type-t"><returnvalue>cairo_surface_type_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-type">cairo_surface_get_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-reference-count">cairo_surface_get_reference_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-set-user-data">cairo_surface_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-get-user-data">cairo_surface_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-copy-page">cairo_surface_copy_page</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-show-page">cairo_surface_show_page</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-has-show-text-glyphs">cairo_surface_has_show_text_glyphs</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-set-mime-data">cairo_surface_set_mime_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-get-mime-data">cairo_surface_get_mime_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-supports-mime-type">cairo_surface_supports_mime_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-surface-map-to-image">cairo_surface_map_to_image</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-surface-unmap-image">cairo_surface_unmap_image</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-surface-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-MIME-SURFACE:CAPS">CAIRO_HAS_MIME_SURFACE</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS">CAIRO_MIME_TYPE_CCITT_FAX</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS">CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-EPS:CAPS">CAIRO_MIME_TYPE_EPS</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS">CAIRO_MIME_TYPE_EPS_PARAMS</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-JBIG2:CAPS">CAIRO_MIME_TYPE_JBIG2</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS">CAIRO_MIME_TYPE_JBIG2_GLOBAL</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS">CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-JP2:CAPS">CAIRO_MIME_TYPE_JP2</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-JPEG:CAPS">CAIRO_MIME_TYPE_JPEG</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-PNG:CAPS">CAIRO_MIME_TYPE_PNG</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-URI:CAPS">CAIRO_MIME_TYPE_URI</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS">CAIRO_MIME_TYPE_UNIQUE_ID</link></entry></row>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-surface-t">cairo_surface_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-content-t">cairo_content_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-surface-type-t">cairo_surface_type_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-surface-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> is the abstract type representing all different drawing
+targets that cairo can render to. The actual drawings are
+performed using a cairo <firstterm>context</firstterm>.</para>
+<para>A cairo surface is created by using <firstterm>backend</firstterm>-specific
+constructors, typically of the form
+<function>cairo_<emphasis>backend</emphasis>_surface_create(<!-- -->)</function>.</para>
+<para>Most surface types allow accessing the surface without using Cairo
+functions. If you do this, keep in mind that it is mandatory that you call
+<link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> before reading from or writing to the surface and that
+you must use <link linkend="cairo-surface-mark-dirty"><function>cairo_surface_mark_dirty()</function></link> after modifying it.</para>
+<example>
+<title>Directly modifying an image surface</title>
+<programlisting>
+void
+modify_image_surface (cairo_surface_t *surface)
+{
+ unsigned char *data;
+ int width, height, stride;
+
+ // flush to ensure all writing to the image was done
+ cairo_surface_flush (surface);
+
+ // modify the image
+ data = cairo_image_surface_get_data (surface);
+ width = cairo_image_surface_get_width (surface);
+ height = cairo_image_surface_get_height (surface);
+ stride = cairo_image_surface_get_stride (surface);
+ modify_image_data (data, width, height, stride);
+
+ // mark the image dirty so Cairo clears its caches.
+ cairo_surface_mark_dirty (surface);
+}
+</programlisting>
+</example>
+<para>Note that for other surface types it might be necessary to acquire the
+surface's device first. See <link linkend="cairo-device-acquire"><function>cairo_device_acquire()</function></link> for a discussion of
+devices.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-surface-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-surface-create-similar" role="function" condition="since:1.0">
+<title>cairo_surface_create_similar&#160;()</title>
+<indexterm zone="cairo-surface-create-similar" role="1.0"><primary sortas="surface_create_similar">cairo_surface_create_similar</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_surface_create_similar (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *other</parameter>,
+ <parameter><link linkend="cairo-content-t"><type>cairo_content_t</type></link> content</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Create a new surface that is as compatible as possible with an
+existing surface. For example the new surface will have the same
+device scale, fallback resolution and font options as
+<parameter>other</parameter>
+. Generally, the new surface will also use the same backend
+as <parameter>other</parameter>
+, unless that is not possible for some reason. The type of
+the returned surface may be examined with
+<link linkend="cairo-surface-get-type"><function>cairo_surface_get_type()</function></link>.</para>
+<para>Initially the surface contents are all 0 (transparent if contents
+have transparency, black otherwise.)</para>
+<para>Use <link linkend="cairo-surface-create-similar-image"><function>cairo_surface_create_similar_image()</function></link> if you need an image surface
+which can be painted quickly to the target surface.</para>
+<refsect3 id="cairo-surface-create-similar.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>an existing surface used to select the backend of the new surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>content</para></entry>
+<entry role="parameter_description"><para>the content for the new surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the new surface, (in device-space units)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the new surface (in device-space units)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-create-similar.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly allocated surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if <parameter>other</parameter>
+is already in an error state
+or any other error occurs.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-create-similar-image" role="function" condition="since:1.12">
+<title>cairo_surface_create_similar_image&#160;()</title>
+<indexterm zone="cairo-surface-create-similar-image" role="1.12"><primary sortas="surface_create_similar_image">cairo_surface_create_similar_image</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_surface_create_similar_image (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *other</parameter>,
+ <parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Create a new image surface that is as compatible as possible for uploading
+to and the use in conjunction with an existing surface. However, this surface
+can still be used like any normal image surface. Unlike
+<link linkend="cairo-surface-create-similar"><function>cairo_surface_create_similar()</function></link> the new image surface won't inherit
+the device scale from <parameter>other</parameter>
+.</para>
+<para>Initially the surface contents are all 0 (transparent if contents
+have transparency, black otherwise.)</para>
+<para>Use <link linkend="cairo-surface-create-similar"><function>cairo_surface_create_similar()</function></link> if you don't need an image surface.</para>
+<refsect3 id="cairo-surface-create-similar-image.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>other</para></entry>
+<entry role="parameter_description"><para>an existing surface used to select the preference of the new surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>the format for the new surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the new surface, (in pixels)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the new surface (in pixels)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-create-similar-image.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly allocated image surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if <parameter>other</parameter>
+is already in an error state
+or any other error occurs.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-surface-create-for-rectangle" role="function" condition="since:1.10">
+<title>cairo_surface_create_for_rectangle&#160;()</title>
+<indexterm zone="cairo-surface-create-for-rectangle" role="1.10"><primary sortas="surface_create_for_rectangle">cairo_surface_create_for_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_surface_create_for_rectangle (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *target</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height</parameter>);</programlisting>
+<para>Create a new surface that is a rectangle within the target surface.
+All operations drawn to this surface are then clipped and translated
+onto the target surface. Nothing drawn via this sub-surface outside of
+its bounds is drawn onto the target surface, making this a useful method
+for passing constrained child surfaces to library routines that draw
+directly onto the parent surface, i.e. with no further backend allocations,
+double buffering or copies.</para>
+<note><para>The semantics of subsurfaces have not been finalized yet
+unless the rectangle is in full device units, is contained within
+the extents of the target surface, and the target or subsurface's
+device transforms are not changed.</para></note>
+<refsect3 id="cairo-surface-create-for-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>target</para></entry>
+<entry role="parameter_description"><para>an existing surface for which the sub-surface will point to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>the x-origin of the sub-surface from the top-left of the target surface (in device-space units)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>the y-origin of the sub-surface from the top-left of the target surface (in device-space units)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the sub-surface (in device-space units)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the sub-surface (in device-space units)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-create-for-rectangle.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly allocated surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if <parameter>other</parameter>
+is already in an error state
+or any other error occurs.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-surface-reference" role="function" condition="since:1.0">
+<title>cairo_surface_reference&#160;()</title>
+<indexterm zone="cairo-surface-reference" role="1.0"><primary sortas="surface_reference">cairo_surface_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_surface_reference (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Increases the reference count on <parameter>surface</parameter>
+ by one. This prevents
+<parameter>surface</parameter>
+ from being destroyed until a matching call to
+<link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> is made.</para>
+<para>Use <link linkend="cairo-surface-get-reference-count"><function>cairo_surface_get_reference_count()</function></link> to get the number of
+references to a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>.</para>
+<refsect3 id="cairo-surface-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-destroy" role="function" condition="since:1.0">
+<title>cairo_surface_destroy&#160;()</title>
+<indexterm zone="cairo-surface-destroy" role="1.0"><primary sortas="surface_destroy">cairo_surface_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_destroy (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Decreases the reference count on <parameter>surface</parameter>
+ by one. If the result is
+zero, then <parameter>surface</parameter>
+ and all associated resources are freed. See
+<link linkend="cairo-surface-reference"><function>cairo_surface_reference()</function></link>.</para>
+<refsect3 id="cairo-surface-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-status" role="function" condition="since:1.0">
+<title>cairo_surface_status&#160;()</title>
+<indexterm zone="cairo-surface-status" role="1.0"><primary sortas="surface_status">cairo_surface_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_status (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this
+surface.</para>
+<refsect3 id="cairo-surface-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-status.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>, <link linkend="CAIRO-STATUS-NULL-POINTER:CAPS"><literal>CAIRO_STATUS_NULL_POINTER</literal></link>,
+<link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>, <link linkend="CAIRO-STATUS-READ-ERROR:CAPS"><literal>CAIRO_STATUS_READ_ERROR</literal></link>,
+<link linkend="CAIRO-STATUS-INVALID-CONTENT:CAPS"><literal>CAIRO_STATUS_INVALID_CONTENT</literal></link>, <link linkend="CAIRO-STATUS-INVALID-FORMAT:CAPS"><literal>CAIRO_STATUS_INVALID_FORMAT</literal></link>, or
+<link linkend="CAIRO-STATUS-INVALID-VISUAL:CAPS"><literal>CAIRO_STATUS_INVALID_VISUAL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-finish" role="function" condition="since:1.0">
+<title>cairo_surface_finish&#160;()</title>
+<indexterm zone="cairo-surface-finish" role="1.0"><primary sortas="surface_finish">cairo_surface_finish</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_finish (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</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, referencing and
+destroying, and flushing and finishing it.
+Further drawing to the surface will not affect the
+surface but will instead trigger a <link linkend="CAIRO-STATUS-SURFACE-FINISHED:CAPS"><literal>CAIRO_STATUS_SURFACE_FINISHED</literal></link>
+error.</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>
+<refsect3 id="cairo-surface-finish.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>the <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> to finish</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-flush" role="function" condition="since:1.0">
+<title>cairo_surface_flush&#160;()</title>
+<indexterm zone="cairo-surface-flush" role="1.0"><primary sortas="surface_flush">cairo_surface_flush</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_flush (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Do any pending drawing for the surface and also restore any temporary
+modifications cairo has made to the surface's state. This function
+must be called before switching from drawing on the surface with
+cairo to drawing on it directly with native APIs, or accessing its
+memory outside of Cairo. If the surface doesn't support direct
+access, then this function does nothing.</para>
+<refsect3 id="cairo-surface-flush.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-get-device" role="function" condition="since:1.10">
+<title>cairo_surface_get_device&#160;()</title>
+<indexterm zone="cairo-surface-get-device" role="1.10"><primary sortas="surface_get_device">cairo_surface_get_device</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-device-t"><returnvalue>cairo_device_t</returnvalue></link>&#160;*
+cairo_surface_get_device (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>This function returns the device for a <parameter>surface</parameter>
+.
+See <link linkend="cairo-device-t"><type>cairo_device_t</type></link>.</para>
+<refsect3 id="cairo-surface-get-device.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-get-device.returns" role="returns">
+<title>Returns</title>
+<para> The device for <parameter>surface</parameter>
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the surface does
+not have an associated device.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-surface-get-font-options" role="function" condition="since:1.0">
+<title>cairo_surface_get_font_options&#160;()</title>
+<indexterm zone="cairo-surface-get-font-options" role="1.0"><primary sortas="surface_get_font_options">cairo_surface_get_font_options</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_get_font_options (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Retrieves the default font rendering options for the surface.
+This allows display surfaces to report the correct subpixel order
+for rendering on them, print surfaces to disable hinting of
+metrics and so forth. The result can then be used with
+<link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>.</para>
+<refsect3 id="cairo-surface-get-font-options.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> object into which to store
+the retrieved options. All existing values are overwritten</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-get-content" role="function" condition="since:1.2">
+<title>cairo_surface_get_content&#160;()</title>
+<indexterm zone="cairo-surface-get-content" role="1.2"><primary sortas="surface_get_content">cairo_surface_get_content</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-content-t"><returnvalue>cairo_content_t</returnvalue></link>
+cairo_surface_get_content (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>This function returns the content type of <parameter>surface</parameter>
+ which indicates
+whether the surface contains color and/or alpha information. See
+<link linkend="cairo-content-t"><type>cairo_content_t</type></link>.</para>
+<refsect3 id="cairo-surface-get-content.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-get-content.returns" role="returns">
+<title>Returns</title>
+<para> The content type of <parameter>surface</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-surface-mark-dirty" role="function" condition="since:1.0">
+<title>cairo_surface_mark_dirty&#160;()</title>
+<indexterm zone="cairo-surface-mark-dirty" role="1.0"><primary sortas="surface_mark_dirty">cairo_surface_mark_dirty</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_mark_dirty (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Tells cairo that drawing has been done to surface using means other
+than cairo, and that cairo should reread any cached areas. Note
+that you must call <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> before doing such drawing.</para>
+<refsect3 id="cairo-surface-mark-dirty.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-mark-dirty-rectangle" role="function" condition="since:1.0">
+<title>cairo_surface_mark_dirty_rectangle&#160;()</title>
+<indexterm zone="cairo-surface-mark-dirty-rectangle" role="1.0"><primary sortas="surface_mark_dirty_rectangle">cairo_surface_mark_dirty_rectangle</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_mark_dirty_rectangle (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> x</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> y</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Like <link linkend="cairo-surface-mark-dirty"><function>cairo_surface_mark_dirty()</function></link>, but drawing has been done only to
+the specified rectangle, so that cairo can retain cached contents
+for other parts of the surface.</para>
+<para>Any cached clip set on the surface will be reset by this function,
+to make sure that future cairo calls have the clip set that they
+expect.</para>
+<refsect3 id="cairo-surface-mark-dirty-rectangle.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X coordinate of dirty rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y coordinate of dirty rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of dirty rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of dirty rectangle</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-set-device-offset" role="function" condition="since:1.0">
+<title>cairo_surface_set_device_offset&#160;()</title>
+<indexterm zone="cairo-surface-set-device-offset" role="1.0"><primary sortas="surface_set_device_offset">cairo_surface_set_device_offset</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_set_device_offset (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x_offset</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y_offset</parameter>);</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 affects drawing to the surface as well as
+using the surface in a source pattern.</para>
+<refsect3 id="cairo-surface-set-device-offset.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x_offset</para></entry>
+<entry role="parameter_description"><para>the offset in the X direction, in device units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y_offset</para></entry>
+<entry role="parameter_description"><para>the offset in the Y direction, in device units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-get-device-offset" role="function" condition="since:1.2">
+<title>cairo_surface_get_device_offset&#160;()</title>
+<indexterm zone="cairo-surface-get-device-offset" role="1.2"><primary sortas="surface_get_device_offset">cairo_surface_get_device_offset</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_get_device_offset (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x_offset</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y_offset</parameter>);</programlisting>
+<para>This function returns the previous device offset set by
+<link linkend="cairo-surface-set-device-offset"><function>cairo_surface_set_device_offset()</function></link>.</para>
+<refsect3 id="cairo-surface-get-device-offset.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x_offset</para></entry>
+<entry role="parameter_description"><para>the offset in the X direction, in device units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y_offset</para></entry>
+<entry role="parameter_description"><para>the offset in the Y direction, in device units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-surface-get-device-scale" role="function" condition="since:1.14">
+<title>cairo_surface_get_device_scale&#160;()</title>
+<indexterm zone="cairo-surface-get-device-scale" role="1.14"><primary sortas="surface_get_device_scale">cairo_surface_get_device_scale</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_get_device_scale (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x_scale</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y_scale</parameter>);</programlisting>
+<para>This function returns the previous device offset set by
+<link linkend="cairo-surface-set-device-scale"><function>cairo_surface_set_device_scale()</function></link>.</para>
+<refsect3 id="cairo-surface-get-device-scale.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x_scale</para></entry>
+<entry role="parameter_description"><para>the scale in the X direction, in device units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y_scale</para></entry>
+<entry role="parameter_description"><para>the scale in the Y direction, in device units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.14">1.14</link></para></refsect2>
+<refsect2 id="cairo-surface-set-device-scale" role="function" condition="since:1.14">
+<title>cairo_surface_set_device_scale&#160;()</title>
+<indexterm zone="cairo-surface-set-device-scale" role="1.14"><primary sortas="surface_set_device_scale">cairo_surface_set_device_scale</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_set_device_scale (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x_scale</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y_scale</parameter>);</programlisting>
+<para>Sets a scale that is multiplied to the device coordinates determined
+by the CTM when drawing to <parameter>surface</parameter>
+. One common use for this is to
+render to very high resolution display devices at a scale factor, so
+that code that assumes 1 pixel will be a certain size will still work.
+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 scale.</para>
+<para>Note that the scale affects drawing to the surface as well as
+using the surface in a source pattern.</para>
+<refsect3 id="cairo-surface-set-device-scale.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x_scale</para></entry>
+<entry role="parameter_description"><para>a scale factor in the X direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y_scale</para></entry>
+<entry role="parameter_description"><para>a scale factor in the Y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.14">1.14</link></para></refsect2>
+<refsect2 id="cairo-surface-set-fallback-resolution" role="function" condition="since:1.2">
+<title>cairo_surface_set_fallback_resolution&#160;()</title>
+<indexterm zone="cairo-surface-set-fallback-resolution" role="1.2"><primary sortas="surface_set_fallback_resolution">cairo_surface_set_fallback_resolution</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_set_fallback_resolution (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x_pixels_per_inch</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y_pixels_per_inch</parameter>);</programlisting>
+<para>Set the horizontal and vertical resolution for image fallbacks.</para>
+<para>When certain operations aren't supported natively by a backend,
+cairo will fallback by rendering operations to an image and then
+overlaying that image onto the output. For backends that are
+natively vector-oriented, this function can be used to set the
+resolution used for these image fallbacks, (larger values will
+result in more detailed images, but also larger file sizes).</para>
+<para>Some examples of natively vector-oriented backends are the ps, pdf,
+and svg backends.</para>
+<para>For backends that are natively raster-oriented, image fallbacks are
+still possible, but they are always performed at the native
+device resolution. So this function has no effect on those
+backends.</para>
+<para>Note: The fallback resolution only takes effect at the time of
+completing a page (with <link linkend="cairo-show-page"><function>cairo_show_page()</function></link> or <link linkend="cairo-copy-page"><function>cairo_copy_page()</function></link>) so
+there is currently no way to have more than one fallback resolution
+in effect on a single page.</para>
+<para>The default fallback resoultion is 300 pixels per inch in both
+dimensions.</para>
+<refsect3 id="cairo-surface-set-fallback-resolution.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x_pixels_per_inch</para></entry>
+<entry role="parameter_description"><para>horizontal setting for pixels per inch</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y_pixels_per_inch</para></entry>
+<entry role="parameter_description"><para>vertical setting for pixels per inch</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-surface-get-fallback-resolution" role="function" condition="since:1.8">
+<title>cairo_surface_get_fallback_resolution&#160;()</title>
+<indexterm zone="cairo-surface-get-fallback-resolution" role="1.8"><primary sortas="surface_get_fallback_resolution">cairo_surface_get_fallback_resolution</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_get_fallback_resolution (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x_pixels_per_inch</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y_pixels_per_inch</parameter>);</programlisting>
+<para>This function returns the previous fallback resolution set by
+<link linkend="cairo-surface-set-fallback-resolution"><function>cairo_surface_set_fallback_resolution()</function></link>, or default fallback
+resolution if never set.</para>
+<refsect3 id="cairo-surface-get-fallback-resolution.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x_pixels_per_inch</para></entry>
+<entry role="parameter_description"><para>horizontal pixels per inch</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y_pixels_per_inch</para></entry>
+<entry role="parameter_description"><para>vertical pixels per inch</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-surface-get-type" role="function" condition="since:1.2">
+<title>cairo_surface_get_type&#160;()</title>
+<indexterm zone="cairo-surface-get-type" role="1.2"><primary sortas="surface_get_type">cairo_surface_get_type</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-type-t"><returnvalue>cairo_surface_type_t</returnvalue></link>
+cairo_surface_get_type (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>This function returns the type of the backend used to create
+a surface. See <link linkend="cairo-surface-type-t"><type>cairo_surface_type_t</type></link> for available types.</para>
+<refsect3 id="cairo-surface-get-type.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-get-type.returns" role="returns">
+<title>Returns</title>
+<para> The type of <parameter>surface</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-surface-get-reference-count" role="function" condition="since:1.4">
+<title>cairo_surface_get_reference_count&#160;()</title>
+<indexterm zone="cairo-surface-get-reference-count" role="1.4"><primary sortas="surface_get_reference_count">cairo_surface_get_reference_count</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_surface_get_reference_count (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Returns the current reference count of <parameter>surface</parameter>
+.</para>
+<refsect3 id="cairo-surface-get-reference-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-get-reference-count.returns" role="returns">
+<title>Returns</title>
+<para> the current reference count of <parameter>surface</parameter>
+. If the
+object is a nil object, 0 will be returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-surface-set-user-data" role="function" condition="since:1.0">
+<title>cairo_surface_set_user_data&#160;()</title>
+<indexterm zone="cairo-surface-set-user-data" role="1.0"><primary sortas="surface_set_user_data">cairo_surface_set_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_set_user_data (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>);</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 <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+for <parameter>data</parameter>
+.</para>
+<refsect3 id="cairo-surface-set-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to attach to the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-set-user-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-get-user-data" role="function" condition="since:1.0">
+<title>cairo_surface_get_user_data&#160;()</title>
+<indexterm zone="cairo-surface-get-user-data" role="1.0"><primary sortas="surface_get_user_data">cairo_surface_get_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_surface_get_user_data (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>);</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 <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-surface-get-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-get-user-data.returns" role="returns">
+<title>Returns</title>
+<para> the user data previously attached or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-copy-page" role="function" condition="since:1.6">
+<title>cairo_surface_copy_page&#160;()</title>
+<indexterm zone="cairo-surface-copy-page" role="1.6"><primary sortas="surface_copy_page">cairo_surface_copy_page</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_copy_page (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Emits the current page for backends that support multiple pages,
+but doesn't clear it, so that the contents of the current page will
+be retained for the next page. Use <link linkend="cairo-surface-show-page"><function>cairo_surface_show_page()</function></link> if you
+want to get an empty page after the emission.</para>
+<para>There is a convenience function for this that takes a <link linkend="cairo-t"><type>cairo_t</type></link>,
+namely <link linkend="cairo-copy-page"><function>cairo_copy_page()</function></link>.</para>
+<refsect3 id="cairo-surface-copy-page.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-surface-show-page" role="function" condition="since:1.6">
+<title>cairo_surface_show_page&#160;()</title>
+<indexterm zone="cairo-surface-show-page" role="1.6"><primary sortas="surface_show_page">cairo_surface_show_page</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_show_page (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Emits and clears the current page for backends that support multiple
+pages. Use <link linkend="cairo-surface-copy-page"><function>cairo_surface_copy_page()</function></link> if you don't want to clear the page.</para>
+<para>There is a convenience function for this that takes a <link linkend="cairo-t"><type>cairo_t</type></link>,
+namely <link linkend="cairo-show-page"><function>cairo_show_page()</function></link>.</para>
+<refsect3 id="cairo-surface-show-page.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-Surface-t"><type>cairo_Surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-surface-has-show-text-glyphs" role="function" condition="since:1.8">
+<title>cairo_surface_has_show_text_glyphs&#160;()</title>
+<indexterm zone="cairo-surface-has-show-text-glyphs" role="1.8"><primary sortas="surface_has_show_text_glyphs">cairo_surface_has_show_text_glyphs</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_surface_has_show_text_glyphs (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Returns whether the surface supports
+sophisticated <link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link> operations. That is,
+whether it actually uses the provided text and cluster data
+to a <link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link> call.</para>
+<para>Note: Even if this function returns <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>, a
+<link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link> operation targeted at <parameter>surface</parameter>
+ will
+still succeed. It just will
+act like a <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link> operation. Users can use this
+function to avoid computing UTF-8 text and cluster mapping if the
+target surface does not use it.</para>
+<refsect3 id="cairo-surface-has-show-text-glyphs.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-has-show-text-glyphs.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>surface</parameter>
+supports
+<link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link>, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-surface-set-mime-data" role="function" condition="since:1.10">
+<title>cairo_surface_set_mime_data&#160;()</title>
+<indexterm zone="cairo-surface-set-mime-data" role="1.10"><primary sortas="surface_set_mime_data">cairo_surface_set_mime_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_surface_set_mime_data (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *mime_type</parameter>,
+ <parameter>const unsigned <link linkend="char"><type>char</type></link> *data</parameter>,
+ <parameter><type>unsigned long </type> length</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>);</programlisting>
+<para>Attach an image in the format <parameter>mime_type</parameter>
+ to <parameter>surface</parameter>
+. To remove
+the data from a surface, call this function with same mime type
+and <link linkend="NULL:CAPS"><literal>NULL</literal></link> for <parameter>data</parameter>
+.</para>
+<para>The attached image (or filename) data can later be used by backends
+which support it (currently: PDF, PS, SVG and Win32 Printing
+surfaces) to emit this data instead of making a snapshot of the
+<parameter>surface</parameter>
+. This approach tends to be faster and requires less
+memory and disk space.</para>
+<para>The recognized MIME types are the following: <link linkend="CAIRO-MIME-TYPE-JPEG:CAPS"><literal>CAIRO_MIME_TYPE_JPEG</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-PNG:CAPS"><literal>CAIRO_MIME_TYPE_PNG</literal></link>, <link linkend="CAIRO-MIME-TYPE-JP2:CAPS"><literal>CAIRO_MIME_TYPE_JP2</literal></link>, <link linkend="CAIRO-MIME-TYPE-URI:CAPS"><literal>CAIRO_MIME_TYPE_URI</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><literal>CAIRO_MIME_TYPE_UNIQUE_ID</literal></link>, <link linkend="CAIRO-MIME-TYPE-JBIG2:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL</literal></link>, <link linkend="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS"><literal>CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-CCITT-FAX:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX</literal></link>, <link linkend="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS"><literal>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</literal></link>.</para>
+<para>See corresponding backend surface docs for details about which MIME
+types it can handle. Caution: the associated MIME data will be
+discarded if you draw on the surface afterwards. Use this function
+with care.</para>
+<para>Even if a backend supports a MIME type, that does not mean cairo
+will always be able to use the attached MIME data. For example, if
+the backend does not natively support the compositing operation used
+to apply the MIME data to the backend. In that case, the MIME data
+will be ignored. Therefore, to apply an image in all cases, it is best
+to create an image surface which contains the decoded image data and
+then attach the MIME data to that. This ensures the image will always
+be used while still allowing the MIME data to be used whenever
+possible.</para>
+<refsect3 id="cairo-surface-set-mime-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>mime_type</para></entry>
+<entry role="parameter_description"><para>the MIME type of the image data</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>the image data to attach to the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>length</para></entry>
+<entry role="parameter_description"><para>the length of the image data</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>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 image data is attached using the
+same mime type.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>the data to be passed to the <parameter>destroy</parameter>
+notifier</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-set-mime-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-surface-get-mime-data" role="function" condition="since:1.10">
+<title>cairo_surface_get_mime_data&#160;()</title>
+<indexterm zone="cairo-surface-get-mime-data" role="1.10"><primary sortas="surface_get_mime_data">cairo_surface_get_mime_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_get_mime_data (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *mime_type</parameter>,
+ <parameter>const unsigned <link linkend="char"><type>char</type></link> **data</parameter>,
+ <parameter>unsigned <link linkend="long"><type>long</type></link> *length</parameter>);</programlisting>
+<para>Return mime data previously attached to <parameter>surface</parameter>
+ using the
+specified mime type. If no data has been attached with the given
+mime type, <parameter>data</parameter>
+ is set <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-surface-get-mime-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>mime_type</para></entry>
+<entry role="parameter_description"><para>the mime type of the image data</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>the image data to attached to the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>length</para></entry>
+<entry role="parameter_description"><para>the length of the image data</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-surface-supports-mime-type" role="function" condition="since:1.12">
+<title>cairo_surface_supports_mime_type&#160;()</title>
+<indexterm zone="cairo-surface-supports-mime-type" role="1.12"><primary sortas="surface_supports_mime_type">cairo_surface_supports_mime_type</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_surface_supports_mime_type (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *mime_type</parameter>);</programlisting>
+<para>Return whether <parameter>surface</parameter>
+ supports <parameter>mime_type</parameter>
+.</para>
+<refsect3 id="cairo-surface-supports-mime-type.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>mime_type</para></entry>
+<entry role="parameter_description"><para>the mime type</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-supports-mime-type.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>surface</parameter>
+supports
+<parameter>mime_type</parameter>
+, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-surface-map-to-image" role="function" condition="since:1.12">
+<title>cairo_surface_map_to_image&#160;()</title>
+<indexterm zone="cairo-surface-map-to-image" role="1.12"><primary sortas="surface_map_to_image">cairo_surface_map_to_image</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_surface_map_to_image (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter>const <link linkend="cairo-rectangle-int-t"><type>cairo_rectangle_int_t</type></link> *extents</parameter>);</programlisting>
+<para>Returns an image surface that is the most efficient mechanism for
+modifying the backing store of the target surface. The region retrieved
+may be limited to the <parameter>extents</parameter>
+ or <link linkend="NULL:CAPS"><literal>NULL</literal></link> for the whole surface</para>
+<para>Note, the use of the original surface as a target or source whilst
+it is mapped is undefined. The result of mapping the surface
+multiple times is undefined. Calling <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> or
+<link linkend="cairo-surface-finish"><function>cairo_surface_finish()</function></link> on the resulting image surface results in
+undefined behavior. Changing the device transform of the image
+surface or of <parameter>surface</parameter>
+ before the image surface is unmapped results
+in undefined behavior.</para>
+<refsect3 id="cairo-surface-map-to-image.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>an existing surface used to extract the image from</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>limit the extraction to an rectangular region</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-surface-map-to-image.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly allocated image surface. The caller
+must use <link linkend="cairo-surface-unmap-image"><function>cairo_surface_unmap_image()</function></link> to destroy this image surface.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if <parameter>other</parameter>
+is already in an error state
+or any other error occurs. If the returned pointer does not have an
+error status, it is guaranteed to be an image surface whose format
+is not <link linkend="CAIRO-FORMAT-INVALID:CAPS"><literal>CAIRO_FORMAT_INVALID</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-surface-unmap-image" role="function" condition="since:1.12">
+<title>cairo_surface_unmap_image&#160;()</title>
+<indexterm zone="cairo-surface-unmap-image" role="1.12"><primary sortas="surface_unmap_image">cairo_surface_unmap_image</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_surface_unmap_image (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *image</parameter>);</programlisting>
+<para>Unmaps the image surface as returned from <link linkend="cairo-surface-map-to-image"><function><link linkend="cairo-surface-map-to-image"><function>cairo_surface_map_to_image()</function></link></function></link>.</para>
+<para>The content of the image will be uploaded to the target surface.
+Afterwards, the image is destroyed.</para>
+<para>Using an image surface which wasn't returned by <link linkend="cairo-surface-map-to-image"><function>cairo_surface_map_to_image()</function></link>
+results in undefined behavior.</para>
+<refsect3 id="cairo-surface-unmap-image.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>the surface passed to <link linkend="cairo-surface-map-to-image"><function>cairo_surface_map_to_image()</function></link>.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>image</para></entry>
+<entry role="parameter_description"><para>the currently mapped image</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-surface-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-MIME-SURFACE:CAPS" role="macro">
+<title>CAIRO_HAS_MIME_SURFACE</title>
+<indexterm zone="CAIRO-HAS-MIME-SURFACE:CAPS"><primary sortas="HAS_MIME_SURFACE">CAIRO_HAS_MIME_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_MIME_SURFACE 1
+</programlisting>
+</refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-CCITT-FAX:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_MIME_TYPE_CCITT_FAX</title>
+<indexterm zone="CAIRO-MIME-TYPE-CCITT-FAX:CAPS" role="1.16"><primary sortas="MIME_TYPE_CCITT_FAX">CAIRO_MIME_TYPE_CCITT_FAX</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_CCITT_FAX "image/g3fax"
+</programlisting>
+<para>Group 3 or Group 4 CCITT facsimile encoding (International
+Telecommunication Union, Recommendations T.4 and T.6.)</para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</title>
+<indexterm zone="CAIRO-MIME-TYPE-CCITT-FAX-PARAMS:CAPS" role="1.16"><primary sortas="MIME_TYPE_CCITT_FAX_PARAMS">CAIRO_MIME_TYPE_CCITT_FAX_PARAMS</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_CCITT_FAX_PARAMS "application/x-cairo.ccitt.params"
+</programlisting>
+<para>Decode parameters for Group 3 or Group 4 CCITT facsimile encoding.
+See <link linkend="ccitt">CCITT Fax Images</link>.</para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-EPS:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_MIME_TYPE_EPS</title>
+<indexterm zone="CAIRO-MIME-TYPE-EPS:CAPS" role="1.16"><primary sortas="MIME_TYPE_EPS">CAIRO_MIME_TYPE_EPS</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_EPS "application/postscript"
+</programlisting>
+<para>Encapsulated PostScript file.
+<ulink url="http://wwwimages.adobe.com/content/dam/Adobe/endevnet/postscript/pdfs/5002.EPSF_Spec.pdf">Encapsulated PostScript File Format Specification</ulink></para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_MIME_TYPE_EPS_PARAMS</title>
+<indexterm zone="CAIRO-MIME-TYPE-EPS-PARAMS:CAPS" role="1.16"><primary sortas="MIME_TYPE_EPS_PARAMS">CAIRO_MIME_TYPE_EPS_PARAMS</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_EPS_PARAMS "application/x-cairo.eps.params"
+</programlisting>
+<para>Embedding parameters Encapsulated PostScript data.
+See <link linkend="eps">Embedding EPS files</link>.</para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-JBIG2:CAPS" role="macro" condition="since:1.14">
+<title>CAIRO_MIME_TYPE_JBIG2</title>
+<indexterm zone="CAIRO-MIME-TYPE-JBIG2:CAPS" role="1.14"><primary sortas="MIME_TYPE_JBIG2">CAIRO_MIME_TYPE_JBIG2</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_JBIG2 "application/x-cairo.jbig2"
+</programlisting>
+<para>Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544).</para>
+<para role="since">Since: <link linkend="api-index-1.14">1.14</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS" role="macro" condition="since:1.14">
+<title>CAIRO_MIME_TYPE_JBIG2_GLOBAL</title>
+<indexterm zone="CAIRO-MIME-TYPE-JBIG2-GLOBAL:CAPS" role="1.14"><primary sortas="MIME_TYPE_JBIG2_GLOBAL">CAIRO_MIME_TYPE_JBIG2_GLOBAL</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_JBIG2_GLOBAL "application/x-cairo.jbig2-global"
+</programlisting>
+<para>Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544) global segment.</para>
+<para role="since">Since: <link linkend="api-index-1.14">1.14</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS" role="macro" condition="since:1.14">
+<title>CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</title>
+<indexterm zone="CAIRO-MIME-TYPE-JBIG2-GLOBAL-ID:CAPS" role="1.14"><primary sortas="MIME_TYPE_JBIG2_GLOBAL_ID">CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID "application/x-cairo.jbig2-global-id"
+</programlisting>
+<para>An unique identifier shared by a JBIG2 global segment and all JBIG2 images
+that depend on the global segment.</para>
+<para role="since">Since: <link linkend="api-index-1.14">1.14</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-JP2:CAPS" role="macro" condition="since:1.10">
+<title>CAIRO_MIME_TYPE_JP2</title>
+<indexterm zone="CAIRO-MIME-TYPE-JP2:CAPS" role="1.10"><primary sortas="MIME_TYPE_JP2">CAIRO_MIME_TYPE_JP2</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_JP2 "image/jp2"
+</programlisting>
+<para>The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1).</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-JPEG:CAPS" role="macro" condition="since:1.10">
+<title>CAIRO_MIME_TYPE_JPEG</title>
+<indexterm zone="CAIRO-MIME-TYPE-JPEG:CAPS" role="1.10"><primary sortas="MIME_TYPE_JPEG">CAIRO_MIME_TYPE_JPEG</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_JPEG "image/jpeg"
+</programlisting>
+<para>The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1).</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-PNG:CAPS" role="macro" condition="since:1.10">
+<title>CAIRO_MIME_TYPE_PNG</title>
+<indexterm zone="CAIRO-MIME-TYPE-PNG:CAPS" role="1.10"><primary sortas="MIME_TYPE_PNG">CAIRO_MIME_TYPE_PNG</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_PNG "image/png"
+</programlisting>
+<para>The Portable Network Graphics image file format (ISO/IEC 15948).</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-URI:CAPS" role="macro" condition="since:1.10">
+<title>CAIRO_MIME_TYPE_URI</title>
+<indexterm zone="CAIRO-MIME-TYPE-URI:CAPS" role="1.10"><primary sortas="MIME_TYPE_URI">CAIRO_MIME_TYPE_URI</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_URI "text/x-uri"
+</programlisting>
+<para>URI for an image file (unofficial MIME type).</para>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS" role="macro" condition="since:1.12">
+<title>CAIRO_MIME_TYPE_UNIQUE_ID</title>
+<indexterm zone="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS" role="1.12"><primary sortas="MIME_TYPE_UNIQUE_ID">CAIRO_MIME_TYPE_UNIQUE_ID</primary></indexterm>
+<programlisting language="C">#define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid"
+</programlisting>
+<para>Unique identifier for a surface (cairo specific MIME type). All surfaces with
+the same unique identifier will only be embedded once.</para>
+<para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-surface-t" role="typedef" condition="since:1.0">
+<title>cairo_surface_t</title>
+<indexterm zone="cairo-surface-t" role="1.0"><primary sortas="surface_t">cairo_surface_t</primary></indexterm>
+<programlisting language="C">typedef struct _cairo_surface cairo_surface_t;
+</programlisting>
+<para>A <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> represents an image, either as the destination
+of a drawing operation or as source when drawing onto another
+surface. To draw to a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>, create a cairo context
+with the surface as the target, using <link linkend="cairo-create"><function>cairo_create()</function></link>.</para>
+<para>There are different subtypes of <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for
+different drawing backends; for example, <link linkend="cairo-image-surface-create"><function>cairo_image_surface_create()</function></link>
+creates a bitmap image in memory.
+The type of a surface can be queried with <link linkend="cairo-surface-get-type"><function>cairo_surface_get_type()</function></link>.</para>
+<para>The initial contents of a surface after creation depend upon the manner
+of its creation. If cairo creates the surface and backing storage for
+the user, it will be initially cleared; for example,
+<link linkend="cairo-image-surface-create"><function>cairo_image_surface_create()</function></link> and <link linkend="cairo-surface-create-similar"><function>cairo_surface_create_similar()</function></link>.
+Alternatively, if the user passes in a reference to some backing storage
+and asks cairo to wrap that in a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>, then the contents are
+not modified; for example, <link linkend="cairo-image-surface-create-for-data"><function>cairo_image_surface_create_for_data()</function></link> and
+<link linkend="cairo-xlib-surface-create"><function>cairo_xlib_surface_create()</function></link>.</para>
+<para>Memory management of <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> is done with
+<link linkend="cairo-surface-reference"><function>cairo_surface_reference()</function></link> and <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-content-t" role="enum" condition="since:1.0">
+<title>enum cairo_content_t</title>
+<indexterm zone="cairo-content-t" role="1.0"><primary sortas="content_t">cairo_content_t</primary></indexterm>
+<para><link linkend="cairo-content-t"><type>cairo_content_t</type></link> is used to describe the content that a surface will
+contain, whether color information, alpha information (translucence
+vs. opacity), or both.</para>
+<para>Note: The large values here are designed to keep <link linkend="cairo-content-t"><type>cairo_content_t</type></link>
+values distinct from <link linkend="cairo-format-t"><type>cairo_format_t</type></link> values so that the
+implementation can detect the error if users confuse the two types.</para>
+<refsect3 id="cairo-content-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-CONTENT-COLOR:CAPS">CAIRO_CONTENT_COLOR</para></entry>
+<entry role="enum_member_description"><para>The surface will hold color content only. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-CONTENT-ALPHA:CAPS">CAIRO_CONTENT_ALPHA</para></entry>
+<entry role="enum_member_description"><para>The surface will hold alpha content only. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-CONTENT-COLOR-ALPHA:CAPS">CAIRO_CONTENT_COLOR_ALPHA</para></entry>
+<entry role="enum_member_description"><para>The surface will hold color and alpha content. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-surface-type-t" role="enum" condition="since:1.2">
+<title>enum cairo_surface_type_t</title>
+<indexterm zone="cairo-surface-type-t" role="1.2"><primary sortas="surface_type_t">cairo_surface_type_t</primary></indexterm>
+<para><link linkend="cairo-surface-type-t"><type>cairo_surface_type_t</type></link> is used to describe the type of a given
+surface. The surface types are also known as "backends" or "surface
+backends" within cairo.</para>
+<para>The type of a surface is determined by the function used to create
+it, which will generally be of the form
+<function>cairo_<emphasis>type</emphasis>_surface_create(<!-- -->)</function>,
+(though see <link linkend="cairo-surface-create-similar"><function>cairo_surface_create_similar()</function></link> as well).</para>
+<para>The surface type can be queried with <link linkend="cairo-surface-get-type"><function>cairo_surface_get_type()</function></link></para>
+<para>The various <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> functions can be used with surfaces of
+any type, but some backends also provide type-specific functions
+that must only be called with a surface of the appropriate
+type. These functions have names that begin with
+<literal>cairo_<emphasis>type</emphasis>_surface</literal> such as <link linkend="cairo-image-surface-get-width"><function>cairo_image_surface_get_width()</function></link>.</para>
+<para>The behavior of calling a type-specific function with a surface of
+the wrong type is undefined.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-surface-type-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-IMAGE:CAPS">CAIRO_SURFACE_TYPE_IMAGE</para></entry>
+<entry role="enum_member_description"><para>The surface is of type image, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-PDF:CAPS">CAIRO_SURFACE_TYPE_PDF</para></entry>
+<entry role="enum_member_description"><para>The surface is of type pdf, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-PS:CAPS">CAIRO_SURFACE_TYPE_PS</para></entry>
+<entry role="enum_member_description"><para>The surface is of type ps, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-XLIB:CAPS">CAIRO_SURFACE_TYPE_XLIB</para></entry>
+<entry role="enum_member_description"><para>The surface is of type xlib, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-XCB:CAPS">CAIRO_SURFACE_TYPE_XCB</para></entry>
+<entry role="enum_member_description"><para>The surface is of type xcb, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-GLITZ:CAPS">CAIRO_SURFACE_TYPE_GLITZ</para></entry>
+<entry role="enum_member_description"><para>The surface is of type glitz, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-QUARTZ:CAPS">CAIRO_SURFACE_TYPE_QUARTZ</para></entry>
+<entry role="enum_member_description"><para>The surface is of type quartz, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-WIN32:CAPS">CAIRO_SURFACE_TYPE_WIN32</para></entry>
+<entry role="enum_member_description"><para>The surface is of type win32, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-BEOS:CAPS">CAIRO_SURFACE_TYPE_BEOS</para></entry>
+<entry role="enum_member_description"><para>The surface is of type beos, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-DIRECTFB:CAPS">CAIRO_SURFACE_TYPE_DIRECTFB</para></entry>
+<entry role="enum_member_description"><para>The surface is of type directfb, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-SVG:CAPS">CAIRO_SURFACE_TYPE_SVG</para></entry>
+<entry role="enum_member_description"><para>The surface is of type svg, since 1.2</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-OS2:CAPS">CAIRO_SURFACE_TYPE_OS2</para></entry>
+<entry role="enum_member_description"><para>The surface is of type os2, since 1.4</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-WIN32-PRINTING:CAPS">CAIRO_SURFACE_TYPE_WIN32_PRINTING</para></entry>
+<entry role="enum_member_description"><para>The surface is a win32 printing surface, since 1.6</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-QUARTZ-IMAGE:CAPS">CAIRO_SURFACE_TYPE_QUARTZ_IMAGE</para></entry>
+<entry role="enum_member_description"><para>The surface is of type quartz_image, since 1.6</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-SCRIPT:CAPS">CAIRO_SURFACE_TYPE_SCRIPT</para></entry>
+<entry role="enum_member_description"><para>The surface is of type script, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-QT:CAPS">CAIRO_SURFACE_TYPE_QT</para></entry>
+<entry role="enum_member_description"><para>The surface is of type Qt, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-RECORDING:CAPS">CAIRO_SURFACE_TYPE_RECORDING</para></entry>
+<entry role="enum_member_description"><para>The surface is of type recording, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-VG:CAPS">CAIRO_SURFACE_TYPE_VG</para></entry>
+<entry role="enum_member_description"><para>The surface is a OpenVG surface, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-GL:CAPS">CAIRO_SURFACE_TYPE_GL</para></entry>
+<entry role="enum_member_description"><para>The surface is of type OpenGL, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-DRM:CAPS">CAIRO_SURFACE_TYPE_DRM</para></entry>
+<entry role="enum_member_description"><para>The surface is of type Direct Render Manager, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-TEE:CAPS">CAIRO_SURFACE_TYPE_TEE</para></entry>
+<entry role="enum_member_description"><para>The surface is of type 'tee' (a multiplexing surface), since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-XML:CAPS">CAIRO_SURFACE_TYPE_XML</para></entry>
+<entry role="enum_member_description"><para>The surface is of type XML (for debugging), since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-SKIA:CAPS">CAIRO_SURFACE_TYPE_SKIA</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-SUBSURFACE:CAPS">CAIRO_SURFACE_TYPE_SUBSURFACE</para></entry>
+<entry role="enum_member_description"><para>The surface is a subsurface created with
+ <link linkend="cairo-surface-create-for-rectangle"><function>cairo_surface_create_for_rectangle()</function></link>, since 1.10</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SURFACE-TYPE-COGL:CAPS">CAIRO_SURFACE_TYPE_COGL</para></entry>
+<entry role="enum_member_description"><para>This surface is of type Cogl, since 1.12</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-surface-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-t"><type>cairo_t</type></link>, <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-svg.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-svg.xml
new file mode 100644
index 0000000..60d81dd
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-svg.xml
@@ -0,0 +1,425 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-SVG-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-SVG-Surfaces.top_of_page">SVG Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>SVG Surfaces</refname>
+<refpurpose>Rendering SVG documents</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-SVG-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-svg-surface-create">cairo_svg_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-svg-surface-create-for-stream">cairo_svg_surface_create_for_stream</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-svg-unit-t"><returnvalue>cairo_svg_unit_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-svg-surface-get-document-unit">cairo_svg_surface_get_document_unit</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-svg-surface-set-document-unit">cairo_svg_surface_set_document_unit</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-svg-surface-restrict-to-version">cairo_svg_surface_restrict_to_version</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-svg-get-versions">cairo_svg_get_versions</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-svg-version-to-string">cairo_svg_version_to_string</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-SVG-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-SVG-SURFACE:CAPS">CAIRO_HAS_SVG_SURFACE</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-svg-version-t">cairo_svg_version_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-svg-unit-t">cairo_svg_unit_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-SVG-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The SVG surface is used to render cairo graphics to
+SVG files and is a multi-page vector surface backend.</para>
+
+</refsect1>
+<refsect1 id="cairo-SVG-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-svg-surface-create" role="function" condition="since:1.2">
+<title>cairo_svg_surface_create&#160;()</title>
+<indexterm zone="cairo-svg-surface-create" role="1.2"><primary sortas="svg_surface_create">cairo_svg_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_svg_surface_create (<parameter>const <link linkend="char"><type>char</type></link> *filename</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Creates a SVG surface of the specified size in points to be written
+to <parameter>filename</parameter>
+.</para>
+<para>The SVG surface backend recognizes the following MIME types for the
+data attached to a surface (see <link linkend="cairo-surface-set-mime-data"><function>cairo_surface_set_mime_data()</function></link>) when
+it is used as a source pattern for drawing on this surface:
+<link linkend="CAIRO-MIME-TYPE-JPEG:CAPS"><literal>CAIRO_MIME_TYPE_JPEG</literal></link>, <link linkend="CAIRO-MIME-TYPE-PNG:CAPS"><literal>CAIRO_MIME_TYPE_PNG</literal></link>,
+<link linkend="CAIRO-MIME-TYPE-URI:CAPS"><literal>CAIRO_MIME_TYPE_URI</literal></link>. If any of them is specified, the SVG backend
+emits a href with the content of MIME data instead of a surface
+snapshot (PNG, Base64-encoded) in the corresponding image tag.</para>
+<para>The unofficial MIME type <link linkend="CAIRO-MIME-TYPE-URI:CAPS"><literal>CAIRO_MIME_TYPE_URI</literal></link> is examined
+first. If present, the URI is emitted as is: assuring the
+correctness of URI is left to the client code.</para>
+<para>If <link linkend="CAIRO-MIME-TYPE-URI:CAPS"><literal>CAIRO_MIME_TYPE_URI</literal></link> is not present, but <link linkend="CAIRO-MIME-TYPE-JPEG:CAPS"><literal>CAIRO_MIME_TYPE_JPEG</literal></link>
+or <link linkend="CAIRO-MIME-TYPE-PNG:CAPS"><literal>CAIRO_MIME_TYPE_PNG</literal></link> is specified, the corresponding data is
+Base64-encoded and emitted.</para>
+<para>If <link linkend="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"><literal>CAIRO_MIME_TYPE_UNIQUE_ID</literal></link> is present, all surfaces with the same
+unique identifier will only be embedded once.</para>
+<refsect3 id="cairo-svg-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>filename</para></entry>
+<entry role="parameter_description"><para>a filename for the SVG output (must be writable), <link linkend="NULL:CAPS"><literal>NULL</literal></link> may be
+used to specify no output. This will generate a SVG surface that
+may be queried and used as a source, without generating a
+temporary file.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>width of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>height of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-svg-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-svg-surface-create-for-stream" role="function" condition="since:1.2">
+<title>cairo_svg_surface_create_for_stream&#160;()</title>
+<indexterm zone="cairo-svg-surface-create-for-stream" role="1.2"><primary sortas="svg_surface_create_for_stream">cairo_svg_surface_create_for_stream</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_svg_surface_create_for_stream (<parameter><link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> write_func</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *closure</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width_in_points</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> height_in_points</parameter>);</programlisting>
+<para>Creates a SVG surface of the specified size in points to be written
+incrementally to the stream represented by <parameter>write_func</parameter>
+ and <parameter>closure</parameter>
+.</para>
+<refsect3 id="cairo-svg-surface-create-for-stream.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>write_func</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-write-func-t"><type>cairo_write_func_t</type></link> to accept the output data, may be <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+to indicate a no-op <parameter>write_func</parameter>
+. With a no-op <parameter>write_func</parameter>
+,
+the surface may be queried or used as a source without
+generating any temporary files.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>closure</para></entry>
+<entry role="parameter_description"><para>the closure argument for <parameter>write_func</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width_in_points</para></entry>
+<entry role="parameter_description"><para>width of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height_in_points</para></entry>
+<entry role="parameter_description"><para>height of the surface, in points (1 point == 1/72.0 inch)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-svg-surface-create-for-stream.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-svg-surface-get-document-unit" role="function" condition="since:1.16">
+<title>cairo_svg_surface_get_document_unit&#160;()</title>
+<indexterm zone="cairo-svg-surface-get-document-unit" role="1.16"><primary sortas="svg_surface_get_document_unit">cairo_svg_surface_get_document_unit</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-svg-unit-t"><returnvalue>cairo_svg_unit_t</returnvalue></link>
+cairo_svg_surface_get_document_unit (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the unit of the SVG surface.</para>
+<para>If the surface passed as an argument is not a SVG surface, the function
+sets the error status to CAIRO_STATUS_SURFACE_TYPE_MISMATCH and returns
+CAIRO_SVG_UNIT_USER.</para>
+<refsect3 id="cairo-svg-surface-get-document-unit.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a SVG <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-svg-surface-get-document-unit.returns" role="returns">
+<title>Returns</title>
+<para> the SVG unit of the SVG surface.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-svg-surface-set-document-unit" role="function" condition="since:1.16">
+<title>cairo_svg_surface_set_document_unit&#160;()</title>
+<indexterm zone="cairo-svg-surface-set-document-unit" role="1.16"><primary sortas="svg_surface_set_document_unit">cairo_svg_surface_set_document_unit</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_svg_surface_set_document_unit (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-svg-unit-t"><type>cairo_svg_unit_t</type></link> unit</parameter>);</programlisting>
+<para>Use the specified unit for the width and height of the generated SVG file.
+See <link linkend="cairo-svg-unit-t"><type>cairo_svg_unit_t</type></link> for a list of available unit values that can be used
+here.</para>
+<para>This function can be called at any time before generating the SVG file.</para>
+<para>However to minimize the risk of ambiguities it's recommended to call it
+before any drawing operations have been performed on the given surface, to
+make it clearer what the unit used in the drawing operations is.</para>
+<para>The simplest way to do this is to call this function immediately after
+creating the SVG surface.</para>
+<para>Note if this function is never called, the default unit for SVG documents
+generated by cairo will be "pt". This is for historical reasons.</para>
+<refsect3 id="cairo-svg-surface-set-document-unit.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a SVG <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>unit</para></entry>
+<entry role="parameter_description"><para>SVG unit</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-svg-surface-restrict-to-version" role="function" condition="since:1.2">
+<title>cairo_svg_surface_restrict_to_version&#160;()</title>
+<indexterm zone="cairo-svg-surface-restrict-to-version" role="1.2"><primary sortas="svg_surface_restrict_to_version">cairo_svg_surface_restrict_to_version</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_svg_surface_restrict_to_version (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="cairo-svg-version-t"><type>cairo_svg_version_t</type></link> version</parameter>);</programlisting>
+<para>Restricts the generated SVG file to <parameter>version</parameter>
+. See <link linkend="cairo-svg-get-versions"><function>cairo_svg_get_versions()</function></link>
+for a list of available version values that can be used here.</para>
+<para>This function should only be called before any drawing operations
+have been performed on the given surface. The simplest way to do
+this is to call this function immediately after creating the
+surface.</para>
+<refsect3 id="cairo-svg-surface-restrict-to-version.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a SVG <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>version</para></entry>
+<entry role="parameter_description"><para>SVG version</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-svg-get-versions" role="function" condition="since:1.2">
+<title>cairo_svg_get_versions&#160;()</title>
+<indexterm zone="cairo-svg-get-versions" role="1.2"><primary sortas="svg_get_versions">cairo_svg_get_versions</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_svg_get_versions (<parameter><link linkend="cairo-svg-version-t"><type>cairo_svg_version_t</type></link> const **versions</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_versions</parameter>);</programlisting>
+<para>Used to retrieve the list of supported versions. See
+<link linkend="cairo-svg-surface-restrict-to-version"><function>cairo_svg_surface_restrict_to_version()</function></link>.</para>
+<refsect3 id="cairo-svg-get-versions.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>versions</para></entry>
+<entry role="parameter_description"><para>supported version list</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_versions</para></entry>
+<entry role="parameter_description"><para>list length</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-svg-version-to-string" role="function" condition="since:1.2">
+<title>cairo_svg_version_to_string&#160;()</title>
+<indexterm zone="cairo-svg-version-to-string" role="1.2"><primary sortas="svg_version_to_string">cairo_svg_version_to_string</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_svg_version_to_string (<parameter><link linkend="cairo-svg-version-t"><type>cairo_svg_version_t</type></link> version</parameter>);</programlisting>
+<para>Get the string representation of the given <parameter>version</parameter>
+ id. This function
+will return <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>version</parameter>
+ isn't valid. See <link linkend="cairo-svg-get-versions"><function>cairo_svg_get_versions()</function></link>
+for a way to get the list of valid version ids.</para>
+<refsect3 id="cairo-svg-version-to-string.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>version</para></entry>
+<entry role="parameter_description"><para>a version id</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-svg-version-to-string.returns" role="returns">
+<title>Returns</title>
+<para> the string associated to given version.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-SVG-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-SVG-SURFACE:CAPS" role="macro" condition="since:1.2">
+<title>CAIRO_HAS_SVG_SURFACE</title>
+<indexterm zone="CAIRO-HAS-SVG-SURFACE:CAPS" role="1.2"><primary sortas="HAS_SVG_SURFACE">CAIRO_HAS_SVG_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_SVG_SURFACE 1
+</programlisting>
+<para>Defined if the SVG surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-svg-version-t" role="enum" condition="since:1.2">
+<title>enum cairo_svg_version_t</title>
+<indexterm zone="cairo-svg-version-t" role="1.2"><primary sortas="svg_version_t">cairo_svg_version_t</primary></indexterm>
+<para><link linkend="cairo-svg-version-t"><type>cairo_svg_version_t</type></link> is used to describe the version number of the SVG
+specification that a generated SVG file will conform to.</para>
+<refsect3 id="cairo-svg-version-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-VERSION-1-1:CAPS">CAIRO_SVG_VERSION_1_1</para></entry>
+<entry role="enum_member_description"><para>The version 1.1 of the SVG specification. (Since 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-VERSION-1-2:CAPS">CAIRO_SVG_VERSION_1_2</para></entry>
+<entry role="enum_member_description"><para>The version 1.2 of the SVG specification. (Since 1.2)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-svg-unit-t" role="enum" condition="since:1.16">
+<title>enum cairo_svg_unit_t</title>
+<indexterm zone="cairo-svg-unit-t" role="1.16"><primary sortas="svg_unit_t">cairo_svg_unit_t</primary></indexterm>
+<para><parameter>CAIRO_SVG_UNIT_USER</parameter>
+: User unit, a value in the current coordinate system.
+ If used in the root element for the initial coordinate systems it
+ corresponds to pixels. (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_EM</parameter>
+: The size of the element's font. (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_EX</parameter>
+: The x-height of the element’s font. (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_PX</parameter>
+: Pixels (1px = 1/96th of 1in). (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_IN</parameter>
+: Inches (1in = 2.54cm = 96px). (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_CM</parameter>
+: Centimeters (1cm = 96px/2.54). (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_MM</parameter>
+: Millimeters (1mm = 1/10th of 1cm). (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_PT</parameter>
+: Points (1pt = 1/72th of 1in). (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_PC</parameter>
+: Picas (1pc = 1/6th of 1in). (Since 1.16)
+<parameter>CAIRO_SVG_UNIT_PERCENT</parameter>
+: Percent, a value that is some fraction of another
+ reference value. (Since 1.16)</para>
+<para><link linkend="cairo-svg-unit-t"><type>cairo_svg_unit_t</type></link> is used to describe the units valid for coordinates and
+lengths in the SVG specification.</para>
+<para>See also:
+https://www.w3.org/TR/SVG/coords.html<link linkend="Units"><type>Units</type></link>
+https://www.w3.org/TR/SVG/types.html<link linkend="DataTypeLength"><type>DataTypeLength</type></link>
+https://www.w3.org/TR/css-values-3/<link linkend="lengths"><type>lengths</type></link></para>
+<refsect3 id="cairo-svg-unit-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-USER:CAPS">CAIRO_SVG_UNIT_USER</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-EM:CAPS">CAIRO_SVG_UNIT_EM</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-EX:CAPS">CAIRO_SVG_UNIT_EX</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-PX:CAPS">CAIRO_SVG_UNIT_PX</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-IN:CAPS">CAIRO_SVG_UNIT_IN</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-CM:CAPS">CAIRO_SVG_UNIT_CM</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-MM:CAPS">CAIRO_SVG_UNIT_MM</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-PT:CAPS">CAIRO_SVG_UNIT_PT</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-PC:CAPS">CAIRO_SVG_UNIT_PC</para></entry>
+<entry /><entry />
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-SVG-UNIT-PERCENT:CAPS">CAIRO_SVG_UNIT_PERCENT</para></entry>
+<entry /><entry />
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-SVG-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-tag.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-tag.xml
new file mode 100644
index 0000000..bf2a8d0
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-tag.xml
@@ -0,0 +1,353 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Tags-and-Links">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Tags-and-Links.top_of_page">Tags and Links</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Tags and Links</refname>
+<refpurpose>Hyperlinks and document structure</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Tags-and-Links.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-tag-begin">cairo_tag_begin</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-tag-end">cairo_tag_end</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Tags-and-Links.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-TAG-DEST:CAPS">CAIRO_TAG_DEST</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-TAG-LINK:CAPS">CAIRO_TAG_LINK</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Tags-and-Links.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The tag functions provide the ability to specify hyperlinks and
+document logical structure on supported backends. The following tags are supported:</para>
+<itemizedlist>
+<listitem><para><link linkend="link">Link</link> - Create a hyperlink</para></listitem>
+<listitem><para><link linkend="dest">Destinations</link> - Create a hyperlink destination</para></listitem>
+<listitem>
+<para><link linkend="doc-struct">Document Structure Tags</link> - Create PDF Document Structure</para>
+</listitem>
+</itemizedlist>
+<refsect2 id="link"><title>Link Tags</title><para>A hyperlink is specified by enclosing the hyperlink text with the <link linkend="CAIRO-TAG-LINK:CAPS"><literal>CAIRO_TAG_LINK</literal></link> tag.</para>
+<para>For example:</para>
+<informalexample><programlisting>
+cairo_tag_begin (cr, CAIRO_TAG_LINK, "uri='https://cairographics.org'");
+cairo_move_to (cr, 50, 50);
+cairo_show_text (cr, "This is a link to the cairo website.");
+cairo_tag_end (cr, CAIRO_TAG_LINK);
+</programlisting></informalexample>
+<para>The PDF backend uses one or more rectangles to define the clickable
+area of the link. By default cairo will use the extents of the
+drawing operations enclosed by the begin/end link tags to define the
+clickable area. In some cases, such as a link split across two
+lines, the default rectangle is undesirable.</para>
+<para><parameter>rect</parameter>
+: [optional] The "rect" attribute allows the application to
+specify one or more rectangles that form the clickable region. The
+value of this attribute is an array of floats. Each rectangle is
+specified by four elements in the array: x, y, width, height. The
+array size must be a multiple of four.</para>
+<para>An example of creating a link with user specified clickable region:</para>
+<informalexample><programlisting>
+cairo_font_extents_t font_extents;
+cairo_text_extents_t text1_extents;
+cairo_text_extents_t text2_extents;
+char attribs[100];
+const char *text1 = "This link is split";
+const char *text2 = "across two lines";
+
+cairo_font_extents (cr, &amp;font_extents);
+cairo_move_to (cr, 450, 50);
+cairo_text_extents (cr, text1, &amp;text1_extents);
+cairo_move_to (cr, 50, 70);
+cairo_text_extents (cr, text2, &amp;text2_extents);
+sprintf (attribs,
+ "rect=[%f %f %f %f %f %f %f %f] uri='https://cairographics.org'",
+ text1_extents.x_bearing,
+ text1_extents.y_bearing,
+ text1_extents.width,
+ text1_extents.height,
+ text2_extents.x_bearing,
+ text2_extents.y_bearing,
+ text2_extents.width,
+ text2_extents.height);
+
+cairo_tag_begin (cr, CAIRO_TAG_LINK, attribs);
+cairo_show_text (cr, "This is a link to the cairo website");
+cairo_move_to (cr, 450, 50);
+cairo_show_text (cr, text1);
+cairo_move_to (cr, 50, 70);
+cairo_show_text (cr, text2);
+cairo_tag_end (cr, CAIRO_TAG_LINK);
+</programlisting></informalexample>
+<para>There are three types of links. Each type has its own attributes as detailed below.</para>
+<itemizedlist>
+<listitem><para><link linkend="internal-link">Internal Links</link> - A link to a location in the same document</para></listitem>
+<listitem><para><link linkend="uri-link">URI Links</link> - A link to a Uniform resource identifier</para></listitem>
+<listitem>
+<para><link linkend="file-link">File Links</link> - A link to a location in another document</para>
+</listitem>
+</itemizedlist>
+<refsect3 id="internal-link"><title>Internal Links</title><para>An internal link is a link to a location in the same document. The destination
+is specified with either:</para>
+<para><parameter>dest</parameter>
+: a UTF-8 string specifying the destination in the PDF file to link
+to. Destinations are created with the <link linkend="CAIRO-TAG-DEST:CAPS"><literal>CAIRO_TAG_DEST</literal></link> tag.</para>
+<para>or the two attributes:</para>
+<para><parameter>page</parameter>
+: An integer specifying the page number in the PDF file to link to.</para>
+<para><parameter>pos</parameter>
+: [optional] An array of two floats specifying the x,y position
+on the page.</para>
+<para>An example of the link attributes to link to a page and x,y position:</para>
+<programlisting>
+"page=3 pos=[3.1 6.2]"
+</programlisting>
+</refsect3>
+<refsect3 id="uri-link"><title>URI Links</title><para>A URI link is a link to a Uniform Resource Identifier (<ulink url="http://tools.ietf.org/html/rfc2396">RFC 2396</ulink>).</para>
+<para>A URI is specified with the following attribute:</para>
+<para><parameter>uri</parameter>
+: An ASCII string specifying the URI.</para>
+<para>An example of the link attributes to the cairo website:</para>
+<programlisting>
+"uri='https://cairographics.org'"
+</programlisting>
+</refsect3>
+<refsect3 id="file-link"><title>File Links</title><para>A file link is a link a location in another PDF file.</para>
+<para>The file attribute (required) specifies the name of the PDF file:</para>
+<para><parameter>file</parameter>
+: File name of PDF file to link to.</para>
+<para>The position is specified by either:</para>
+<para> <parameter>dest</parameter>
+: a UTF-8 string specifying the named destination in the PDF file.</para>
+<para>or</para>
+<para> <parameter>page</parameter>
+: An integer specifying the page number in the PDF file.</para>
+<para> <parameter>pos</parameter>
+: [optional] An array of two floats specifying the x,y
+ position on the page. Position coordinates in external files are in PDF
+ coordinates (0,0 at bottom left).</para>
+<para>An example of the link attributes to PDF file:</para>
+<programlisting>
+"file='document.pdf' page=16 pos=[25 40]"
+</programlisting>
+</refsect3>
+</refsect2>
+<refsect2 id="dest"><title>Destination Tags</title><para>A destination is specified by enclosing the destination drawing
+operations with the <link linkend="CAIRO-TAG-DEST:CAPS"><literal>CAIRO_TAG_DEST</literal></link> tag.</para>
+<para><parameter>name</parameter>
+: [required] A UTF-8 string specifying the name of this destination.</para>
+<para><parameter>x</parameter>
+: [optional] A float specifying the x coordinate of destination
+ position on this page. If not specified the default
+ x coordinate is the left side of the extents of the
+ operations enclosed by the <link linkend="CAIRO-TAG-DEST:CAPS"><literal>CAIRO_TAG_DEST</literal></link> begin/end tags. If
+ no operations are enclosed, the x coordidate is 0.</para>
+<para><parameter>y</parameter>
+: [optional] A float specifying the y coordinate of destination
+ position on this page. If not specified the default
+ y coordinate is the top of the extents of the
+ operations enclosed by the <link linkend="CAIRO-TAG-DEST:CAPS"><literal>CAIRO_TAG_DEST</literal></link> begin/end tags. If
+ no operations are enclosed, the y coordidate is 0.</para>
+<para><parameter>internal</parameter>
+: A boolean that if true, the destination name may be
+ omitted from PDF where possible. In this case, links
+ refer directly to the page and position instead of via
+ the named destination table. Note that if this
+ destination is referenced by another PDF (see <link linkend="file-link">File Links</link>),
+ this attribute must be false. Default is false.</para>
+<informalexample><programlisting>
+/&ast; Create a hyperlink &ast;/
+cairo_tag_begin (cr, CAIRO_TAG_LINK, "dest='mydest' internal");
+cairo_move_to (cr, 50, 50);
+cairo_show_text (cr, "This is a hyperlink.");
+cairo_tag_end (cr, CAIRO_TAG_LINK);
+
+/&ast; Create a destination &ast;/
+cairo_tag_begin (cr, CAIRO_TAG_DEST, "name='mydest'");
+cairo_move_to (cr, 50, 250);
+cairo_show_text (cr, "This paragraph is the destination of the above link.");
+cairo_tag_end (cr, CAIRO_TAG_DEST);
+</programlisting></informalexample>
+</refsect2>
+<refsect2 id="doc-struct"><title>Document Structure (PDF)</title><para>The document structure tags provide a means of specifying structural information
+such as headers, paragraphs, tables, and figures. The inclusion of structural information facilitates:</para>
+<itemizedlist>
+<listitem><para>Extraction of text and graphics for copy and paste</para></listitem>
+<listitem><para>Reflow of text and graphics in the viewer</para></listitem>
+<listitem><para>Processing text eg searching and indexing</para></listitem>
+<listitem><para>Conversion to other formats</para></listitem>
+<listitem>
+<para>Accessability support</para>
+</listitem>
+</itemizedlist>
+<para>The list of structure types is specified in section 14.8.4 of the
+<ulink url="http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf">PDF Reference</ulink>.</para>
+<para>Note the PDF "Link" structure tag is the same as the cairo <link linkend="CAIRO-TAG-LINK:CAPS"><literal>CAIRO_TAG_LINK</literal></link> tag.</para>
+<para>The following example creates a document structure for a document containing two section, each with
+a header and a paragraph.</para>
+<informalexample><programlisting>
+cairo_tag_begin (cr, "Document", NULL);
+
+cairo_tag_begin (cr, "Sect", NULL);
+cairo_tag_begin (cr, "H1", NULL);
+cairo_show_text (cr, "Heading 1");
+cairo_tag_end (cr, "H1");
+
+cairo_tag_begin (cr, "P", NULL);
+cairo_show_text (cr, "Paragraph 1");
+cairo_tag_end (cr, "P");
+cairo_tag_end (cr, "Sect");
+
+cairo_tag_begin (cr, "Sect", NULL);
+cairo_tag_begin (cr, "H1", NULL);
+cairo_show_text (cr, "Heading 2");
+cairo_tag_end (cr, "H1");
+
+cairo_tag_begin (cr, "P", NULL);
+cairo_show_text (cr, "Paragraph 2");
+cairo_tag_end (cr, "P");
+cairo_tag_end (cr, "Sect");
+
+cairo_tag_end (cr, "Document");
+</programlisting></informalexample>
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Tags-and-Links.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-tag-begin" role="function" condition="since:1.16">
+<title>cairo_tag_begin&#160;()</title>
+<indexterm zone="cairo-tag-begin" role="1.16"><primary sortas="tag_begin">cairo_tag_begin</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_tag_begin (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *tag_name</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *attributes</parameter>);</programlisting>
+<para>Marks the beginning of the <parameter>tag_name</parameter>
+ structure. Call
+<link linkend="cairo-tag-end"><function>cairo_tag_end()</function></link> with the same <parameter>tag_name</parameter>
+ to mark the end of the
+structure.</para>
+<para>The attributes string is of the form "key1=value2 key2=value2 ...".
+Values may be boolean (true/false or 1/0), integer, float, string,
+or an array.</para>
+<para>String values are enclosed in single quotes
+('). Single quotes and backslashes inside the string should be
+escaped with a backslash.</para>
+<para>Boolean values may be set to true by only
+specifying the key. eg the attribute string "key" is the equivalent
+to "key=true".</para>
+<para>Arrays are enclosed in '[]'. eg "rect=[1.2 4.3 2.0 3.0]".</para>
+<para>If no attributes are required, <parameter>attributes</parameter>
+ can be an empty string or NULL.</para>
+<para>See <link linkend="cairo-Tags-and-Links.description">Tags and Links Description</link>
+for the list of tags and attributes.</para>
+<para>Invalid nesting of tags or invalid attributes will cause <parameter>cr</parameter>
+ to
+shutdown with a status of <link linkend="CAIRO-STATUS-TAG-ERROR:CAPS"><literal>CAIRO_STATUS_TAG_ERROR</literal></link>.</para>
+<para>See <link linkend="cairo-tag-end"><function>cairo_tag_end()</function></link>.</para>
+<refsect3 id="cairo-tag-begin.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>tag_name</para></entry>
+<entry role="parameter_description"><para>tag name</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>attributes</para></entry>
+<entry role="parameter_description"><para>tag attributes</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="cairo-tag-end" role="function" condition="since:1.16">
+<title>cairo_tag_end&#160;()</title>
+<indexterm zone="cairo-tag-end" role="1.16"><primary sortas="tag_end">cairo_tag_end</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_tag_end (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *tag_name</parameter>);</programlisting>
+<para>Marks the end of the <parameter>tag_name</parameter>
+ structure.</para>
+<para>Invalid nesting of tags will cause <parameter>cr</parameter>
+ to shutdown with a status of
+<link linkend="CAIRO-STATUS-TAG-ERROR:CAPS"><literal>CAIRO_STATUS_TAG_ERROR</literal></link>.</para>
+<para>See <link linkend="cairo-tag-begin"><function>cairo_tag_begin()</function></link>.</para>
+<refsect3 id="cairo-tag-end.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>tag_name</para></entry>
+<entry role="parameter_description"><para>tag name</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Tags-and-Links.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-TAG-DEST:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_TAG_DEST</title>
+<indexterm zone="CAIRO-TAG-DEST:CAPS" role="1.16"><primary sortas="TAG_DEST">CAIRO_TAG_DEST</primary></indexterm>
+<programlisting language="C">#define CAIRO_TAG_DEST "cairo.dest"
+</programlisting>
+<para>Create a destination for a hyperlink. Destination tag attributes
+are detailed at <link linkend="dests">Destinations</link>.</para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+<refsect2 id="CAIRO-TAG-LINK:CAPS" role="macro" condition="since:1.16">
+<title>CAIRO_TAG_LINK</title>
+<indexterm zone="CAIRO-TAG-LINK:CAPS" role="1.16"><primary sortas="TAG_LINK">CAIRO_TAG_LINK</primary></indexterm>
+<programlisting language="C">#define CAIRO_TAG_LINK "Link"
+</programlisting>
+<para>Create hyperlink. Link tag attributes are detailed at
+<link linkend="links">Links</link>.</para>
+<para role="since">Since: <link linkend="api-index-1.16">1.16</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Tags-and-Links.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-pdf-surface-t"><type>cairo_pdf_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-text.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-text.xml
new file mode 100644
index 0000000..b62edec
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-text.xml
@@ -0,0 +1,1090 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-text">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-text.top_of_page">text</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>text</refname>
+<refpurpose>Rendering text and glyphs</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-text.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-select-font-face">cairo_select_font_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-font-size">cairo_set_font_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-font-matrix">cairo_set_font_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-font-matrix">cairo_get_font_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-font-options">cairo_set_font_options</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-font-options">cairo_get_font_options</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-font-face">cairo_set_font_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-get-font-face">cairo_get_font_face</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-scaled-font">cairo_set_scaled_font</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-scaled-font-t"><returnvalue>cairo_scaled_font_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-get-scaled-font">cairo_get_scaled_font</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-show-text">cairo_show_text</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-show-glyphs">cairo_show_glyphs</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-show-text-glyphs">cairo_show_text_glyphs</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-font-extents">cairo_font_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-text-extents">cairo_text_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-glyph-extents">cairo_glyph_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-toy-font-face-create">cairo_toy_font_face_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-toy-font-face-get-family">cairo_toy_font_face_get_family</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-slant-t"><returnvalue>cairo_font_slant_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-toy-font-face-get-slant">cairo_toy_font_face_get_slant</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-weight-t"><returnvalue>cairo_font_weight_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-toy-font-face-get-weight">cairo_toy_font_face_get_weight</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-glyph-t"><returnvalue>cairo_glyph_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-glyph-allocate">cairo_glyph_allocate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-glyph-free">cairo_glyph_free</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-text-cluster-t"><returnvalue>cairo_text_cluster_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-text-cluster-allocate">cairo_text_cluster_allocate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-text-cluster-free">cairo_text_cluster_free</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-text.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-glyph-t">cairo_glyph_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-font-slant-t">cairo_font_slant_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-font-weight-t">cairo_font_weight_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-text-cluster-t">cairo_text_cluster_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-text-cluster-flags-t">cairo_text_cluster_flags_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-text.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The functions with <emphasis>text</emphasis> in their name form cairo's
+<firstterm>toy</firstterm> text API. The toy API takes UTF-8 encoded
+text and is limited in its functionality to rendering simple
+left-to-right text with no advanced features. That means for example
+that most complex scripts like Hebrew, Arabic, and Indic scripts are
+out of question. No kerning or correct positioning of diacritical marks
+either. The font selection is pretty limited too and doesn't handle the
+case that the selected font does not cover the characters in the text.
+This set of functions are really that, a toy text API, for testing and
+demonstration purposes. Any serious application should avoid them.</para>
+<para>The functions with <emphasis>glyphs</emphasis> in their name form cairo's
+<firstterm>low-level</firstterm> text API. The low-level API relies on
+the user to convert text to a set of glyph indexes and positions. This
+is a very hard problem and is best handled by external libraries, like
+the pangocairo that is part of the Pango text layout and rendering library.
+Pango is available from <ulink
+url="http://www.pango.org/">http://www.pango.org/</ulink>.</para>
+
+</refsect1>
+<refsect1 id="cairo-text.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-select-font-face" role="function" condition="since:1.0">
+<title>cairo_select_font_face&#160;()</title>
+<indexterm zone="cairo-select-font-face" role="1.0"><primary sortas="select_font_face">cairo_select_font_face</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_select_font_face (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *family</parameter>,
+ <parameter><link linkend="cairo-font-slant-t"><type>cairo_font_slant_t</type></link> slant</parameter>,
+ <parameter><link linkend="cairo-font-weight-t"><type>cairo_font_weight_t</type></link> weight</parameter>);</programlisting>
+<para>Note: The <link linkend="cairo-select-font-face"><function>cairo_select_font_face()</function></link> function call is part of what
+the cairo designers call the "toy" text API. It is convenient for
+short demos and simple programs, but it is not expected to be
+adequate for serious text-using applications.</para>
+<para>Selects a family and style of font from a simplified description as
+a family name, slant and weight. Cairo provides no operation to
+list available family names on the system (this is a "toy",
+remember), but the standard CSS2 generic family names, ("serif",
+"sans-serif", "cursive", "fantasy", "monospace"), are likely to
+work as expected.</para>
+<para>If <parameter>family</parameter>
+ starts with the string "<parameter>cairo</parameter>
+:", or if no native font
+backends are compiled in, cairo will use an internal font family.
+The internal font family recognizes many modifiers in the <parameter>family</parameter>
+
+string, most notably, it recognizes the string "monospace". That is,
+the family name "<parameter>cairo</parameter>
+:monospace" will use the monospace version of
+the internal font family.</para>
+<para>For "real" font selection, see the font-backend-specific
+font_face_create functions for the font backend you are using. (For
+example, if you are using the freetype-based cairo-ft font backend,
+see <link linkend="cairo-ft-font-face-create-for-ft-face"><function>cairo_ft_font_face_create_for_ft_face()</function></link> or
+<link linkend="cairo-ft-font-face-create-for-pattern"><function>cairo_ft_font_face_create_for_pattern()</function></link>.) The resulting font face
+could then be used with <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link> and
+<link linkend="cairo-set-scaled-font"><function>cairo_set_scaled_font()</function></link>.</para>
+<para>Similarly, when using the "real" font support, you can call
+directly into the underlying font system, (such as fontconfig or
+freetype), for operations such as listing available fonts, etc.</para>
+<para>It is expected that most applications will need to use a more
+comprehensive font handling and text layout library, (for example,
+pango), in conjunction with cairo.</para>
+<para>If text is drawn without a call to <link linkend="cairo-select-font-face"><function>cairo_select_font_face()</function></link>, (nor
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> nor <link linkend="cairo-set-scaled-font"><function>cairo_set_scaled_font()</function></link>), the default
+family is platform-specific, but is essentially "sans-serif".
+Default slant is <link linkend="CAIRO-FONT-SLANT-NORMAL:CAPS"><literal>CAIRO_FONT_SLANT_NORMAL</literal></link>, and default weight is
+<link linkend="CAIRO-FONT-WEIGHT-NORMAL:CAPS"><literal>CAIRO_FONT_WEIGHT_NORMAL</literal></link>.</para>
+<para>This function is equivalent to a call to <link linkend="cairo-toy-font-face-create"><function>cairo_toy_font_face_create()</function></link>
+followed by <link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link>.</para>
+<refsect3 id="cairo-select-font-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>family</para></entry>
+<entry role="parameter_description"><para>a font family name, encoded in UTF-8</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>slant</para></entry>
+<entry role="parameter_description"><para>the slant for the font</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>weight</para></entry>
+<entry role="parameter_description"><para>the weight for the font</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-font-size" role="function" condition="since:1.0">
+<title>cairo_set_font_size&#160;()</title>
+<indexterm zone="cairo-set-font-size" role="1.0"><primary sortas="set_font_size">cairo_set_font_size</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_font_size (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> size</parameter>);</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>If text is drawn without a call to <link linkend="cairo-set-font-size"><function>cairo_set_font_size()</function></link>, (nor
+<link linkend="cairo-set-font-matrix"><function>cairo_set_font_matrix()</function></link> nor <link linkend="cairo-set-scaled-font"><function>cairo_set_scaled_font()</function></link>), the default
+font size is 10.0.</para>
+<refsect3 id="cairo-set-font-size.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>size</para></entry>
+<entry role="parameter_description"><para>the new font size, in user space units</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-font-matrix" role="function" condition="since:1.0">
+<title>cairo_set_font_matrix&#160;()</title>
+<indexterm zone="cairo-set-font-matrix" role="1.0"><primary sortas="set_font_matrix">cairo_set_font_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_font_matrix (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</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>
+<refsect3 id="cairo-set-font-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> describing a transform to be applied to
+the current font.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-font-matrix" role="function" condition="since:1.0">
+<title>cairo_get_font_matrix&#160;()</title>
+<indexterm zone="cairo-get-font-matrix" role="1.0"><primary sortas="get_font_matrix">cairo_get_font_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_get_font_matrix (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</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>
+<refsect3 id="cairo-get-font-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>return value for the matrix</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-font-options" role="function" condition="since:1.0">
+<title>cairo_set_font_options&#160;()</title>
+<indexterm zone="cairo-set-font-options" role="1.0"><primary sortas="set_font_options">cairo_set_font_options</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_font_options (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Sets a set of custom font rendering options for the <link linkend="cairo-t"><type>cairo_t</type></link>.
+Rendering options are derived by merging these options with the
+options derived from underlying surface; if the value in <parameter>options</parameter>
+
+has a default value (like <link linkend="CAIRO-ANTIALIAS-DEFAULT:CAPS"><literal>CAIRO_ANTIALIAS_DEFAULT</literal></link>), then the value
+from the surface is used.</para>
+<refsect3 id="cairo-set-font-options.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>font options to use</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-font-options" role="function" condition="since:1.0">
+<title>cairo_get_font_options&#160;()</title>
+<indexterm zone="cairo-get-font-options" role="1.0"><primary sortas="get_font_options">cairo_get_font_options</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_get_font_options (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> *options</parameter>);</programlisting>
+<para>Retrieves font rendering options set via <link linkend="cairo-set-font-options"><type>cairo_set_font_options</type></link>.
+Note that the returned options do not include any options derived
+from the underlying surface; they are literally the options
+passed to <link linkend="cairo-set-font-options"><function>cairo_set_font_options()</function></link>.</para>
+<refsect3 id="cairo-get-font-options.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>options</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-options-t"><type>cairo_font_options_t</type></link> object into which to store
+the retrieved options. All existing values are overwritten</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-font-face" role="function" condition="since:1.0">
+<title>cairo_set_font_face&#160;()</title>
+<indexterm zone="cairo-set-font-face" role="1.0"><primary sortas="set_font_face">cairo_set_font_face</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_font_face (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<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>
+<refsect3 id="cairo-set-font-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to restore to the default font</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-font-face" role="function" condition="since:1.0">
+<title>cairo_get_font_face&#160;()</title>
+<indexterm zone="cairo-get-font-face" role="1.0"><primary sortas="get_font_face">cairo_get_font_face</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_get_font_face (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current font face for a <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+<refsect3 id="cairo-get-font-face.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-font-face.returns" role="returns">
+<title>Returns</title>
+<para> the current font face. 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>.</para>
+<para>This function never returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If memory cannot be allocated, a
+special "nil" <link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> object will be returned on which
+<link linkend="cairo-font-face-status"><function>cairo_font_face_status()</function></link> returns <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>. Using
+this nil object will cause its error state to propagate to other
+objects it is passed to, (for example, calling
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> with a nil font will trigger an error that
+will shutdown the <link linkend="cairo-t"><type>cairo_t</type></link> object).</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-scaled-font" role="function" condition="since:1.2">
+<title>cairo_set_scaled_font&#160;()</title>
+<indexterm zone="cairo-set-scaled-font" role="1.2"><primary sortas="set_scaled_font">cairo_set_scaled_font</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_scaled_font (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Replaces the current font face, font matrix, and font options in
+the <link linkend="cairo-t"><type>cairo_t</type></link> with those of the <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>. Except for
+some translation, the current CTM of the <link linkend="cairo-t"><type>cairo_t</type></link> should be the
+same as that of the <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>, which can be accessed
+using <link linkend="cairo-scaled-font-get-ctm"><function>cairo_scaled_font_get_ctm()</function></link>.</para>
+<refsect3 id="cairo-set-scaled-font.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-get-scaled-font" role="function" condition="since:1.4">
+<title>cairo_get_scaled_font&#160;()</title>
+<indexterm zone="cairo-get-scaled-font" role="1.4"><primary sortas="get_scaled_font">cairo_get_scaled_font</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-scaled-font-t"><returnvalue>cairo_scaled_font_t</returnvalue></link>&#160;*
+cairo_get_scaled_font (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current scaled font for a <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+<refsect3 id="cairo-get-scaled-font.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-scaled-font.returns" role="returns">
+<title>Returns</title>
+<para> the current scaled font. This object is owned by
+cairo. To keep a reference to it, you must call
+<link linkend="cairo-scaled-font-reference"><function>cairo_scaled_font_reference()</function></link>.</para>
+<para>This function never returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>. If memory cannot be allocated, a
+special "nil" <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> object will be returned on which
+<link linkend="cairo-scaled-font-status"><function>cairo_scaled_font_status()</function></link> returns <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>. Using
+this nil object will cause its error state to propagate to other
+objects it is passed to, (for example, calling
+<link linkend="cairo-set-scaled-font"><function>cairo_set_scaled_font()</function></link> with a nil font will trigger an error that
+will shutdown the <link linkend="cairo-t"><type>cairo_t</type></link> object).</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-show-text" role="function" condition="since:1.0">
+<title>cairo_show_text&#160;()</title>
+<indexterm zone="cairo-show-text" role="1.0"><primary sortas="show_text">cairo_show_text</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_show_text (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>);</programlisting>
+<para>A drawing operator that generates the shape from a string of UTF-8
+characters, rendered according to the current font_face, font_size
+(font_matrix), and font_options.</para>
+<para>This function first computes a set of glyphs for the string of
+text. The first glyph is placed so that its origin is at the
+current point. The origin of each subsequent glyph is offset from
+that of the previous glyph by the advance values of the previous
+glyph.</para>
+<para>After this call the current point is moved to the origin of where
+the next glyph would be placed in this same progression. That is,
+the current point will be at the origin of the final glyph offset
+by its advance values. This allows for easy display of a single
+logical string with multiple calls to <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>.</para>
+<para>Note: The <link linkend="cairo-show-text"><function>cairo_show_text()</function></link> function call is part of what the cairo
+designers call the "toy" text API. It is convenient for short demos
+and simple programs, but it is not expected to be adequate for
+serious text-using applications. See <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link> for the
+"real" text display API in cairo.</para>
+<refsect3 id="cairo-show-text.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a NUL-terminated string of text encoded in UTF-8, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-show-glyphs" role="function" condition="since:1.0">
+<title>cairo_show_glyphs&#160;()</title>
+<indexterm zone="cairo-show-glyphs" role="1.0"><primary sortas="show_glyphs">cairo_show_glyphs</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_show_glyphs (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> *glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_glyphs</parameter>);</programlisting>
+<para>A drawing operator that generates the shape from an array of glyphs,
+rendered according to the current font face, font size
+(font matrix), and font options.</para>
+<refsect3 id="cairo-show-glyphs.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>array of glyphs to show</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>number of glyphs to show</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-show-text-glyphs" role="function" condition="since:1.8">
+<title>cairo_show_text_glyphs&#160;()</title>
+<indexterm zone="cairo-show-text-glyphs" role="1.8"><primary sortas="show_text_glyphs">cairo_show_text_glyphs</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_show_text_glyphs (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> utf8_len</parameter>,
+ <parameter>const <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> *glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_glyphs</parameter>,
+ <parameter>const <link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link> *clusters</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_clusters</parameter>,
+ <parameter><link linkend="cairo-text-cluster-flags-t"><type>cairo_text_cluster_flags_t</type></link> cluster_flags</parameter>);</programlisting>
+<para>This operation has rendering effects similar to <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link>
+but, if the target surface supports it, uses the provided text and
+cluster mapping to embed the text for the glyphs shown in the output.
+If the target does not support the extended attributes, this function
+acts like the basic <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link> as if it had been passed
+<parameter>glyphs</parameter>
+ and <parameter>num_glyphs</parameter>
+.</para>
+<para>The mapping between <parameter>utf8</parameter>
+ and <parameter>glyphs</parameter>
+ is provided by an array of
+<firstterm>clusters</firstterm>. Each cluster covers a number of
+text bytes and glyphs, and neighboring clusters cover neighboring
+areas of <parameter>utf8</parameter>
+ and <parameter>glyphs</parameter>
+. The clusters should collectively cover <parameter>utf8</parameter>
+
+and <parameter>glyphs</parameter>
+ in entirety.</para>
+<para>The first cluster always covers bytes from the beginning of <parameter>utf8</parameter>
+.
+If <parameter>cluster_flags</parameter>
+ do not have the <link linkend="CAIRO-TEXT-CLUSTER-FLAG-BACKWARD:CAPS"><literal>CAIRO_TEXT_CLUSTER_FLAG_BACKWARD</literal></link>
+set, the first cluster also covers the beginning
+of <parameter>glyphs</parameter>
+, otherwise it covers the end of the <parameter>glyphs</parameter>
+ array and
+following clusters move backward.</para>
+<para>See <link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link> for constraints on valid clusters.</para>
+<refsect3 id="cairo-show-text-glyphs.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a string of text encoded in UTF-8</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8_len</para></entry>
+<entry role="parameter_description"><para>length of <parameter>utf8</parameter>
+in bytes, or -1 if it is NUL-terminated</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>array of glyphs to show</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>number of glyphs to show</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>clusters</para></entry>
+<entry role="parameter_description"><para>array of cluster mapping information</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_clusters</para></entry>
+<entry role="parameter_description"><para>number of clusters in the mapping</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cluster_flags</para></entry>
+<entry role="parameter_description"><para>cluster mapping flags</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-font-extents" role="function" condition="since:1.0">
+<title>cairo_font_extents&#160;()</title>
+<indexterm zone="cairo-font-extents" role="1.0"><primary sortas="font_extents">cairo_font_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_font_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> *extents</parameter>);</programlisting>
+<para>Gets the font extents for the currently selected font.</para>
+<refsect3 id="cairo-font-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> object into which the results
+will be stored.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-text-extents" role="function" condition="since:1.0">
+<title>cairo_text_extents&#160;()</title>
+<indexterm zone="cairo-text-extents" role="1.0"><primary sortas="text_extents">cairo_text_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_text_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>,
+ <parameter><link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> *extents</parameter>);</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 <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>). Additionally, the
+x_advance and y_advance values indicate the amount by which the
+current point would be advanced by <link linkend="cairo-show-text"><function>cairo_show_text()</function></link>.</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>
+<refsect3 id="cairo-text-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a NUL-terminated string of text encoded in UTF-8, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> object into which the results
+will be stored</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-glyph-extents" role="function" condition="since:1.0">
+<title>cairo_glyph_extents&#160;()</title>
+<indexterm zone="cairo-glyph-extents" role="1.0"><primary sortas="glyph_extents">cairo_glyph_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_glyph_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> *glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_glyphs</parameter>,
+ <parameter><link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> *extents</parameter>);</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 <link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link>).
+Additionally, the x_advance and y_advance values indicate the
+amount by which the current point would be advanced by
+<link linkend="cairo-show-glyphs"><function>cairo_show_glyphs()</function></link>.</para>
+<para>Note that whitespace glyphs do not contribute to the size of the
+rectangle (extents.width and extents.height).</para>
+<refsect3 id="cairo-glyph-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>an array of <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> objects</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>the number of elements in <parameter>glyphs</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> object into which the results
+will be stored</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-toy-font-face-create" role="function" condition="since:1.8">
+<title>cairo_toy_font_face_create&#160;()</title>
+<indexterm zone="cairo-toy-font-face-create" role="1.8"><primary sortas="toy_font_face_create">cairo_toy_font_face_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_toy_font_face_create (<parameter>const <link linkend="char"><type>char</type></link> *family</parameter>,
+ <parameter><link linkend="cairo-font-slant-t"><type>cairo_font_slant_t</type></link> slant</parameter>,
+ <parameter><link linkend="cairo-font-weight-t"><type>cairo_font_weight_t</type></link> weight</parameter>);</programlisting>
+<para>Creates a font face from a triplet of family, slant, and weight.
+These font faces are used in implementation of the the <link linkend="cairo-t"><type>cairo_t</type></link> "toy"
+font API.</para>
+<para>If <parameter>family</parameter>
+ is the zero-length string "", the platform-specific default
+family is assumed. The default family then can be queried using
+<link linkend="cairo-toy-font-face-get-family"><function>cairo_toy_font_face_get_family()</function></link>.</para>
+<para>The <link linkend="cairo-select-font-face"><function>cairo_select_font_face()</function></link> function uses this to create font faces.
+See that function for limitations and other details of toy font faces.</para>
+<refsect3 id="cairo-toy-font-face-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>family</para></entry>
+<entry role="parameter_description"><para>a font family name, encoded in UTF-8</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>slant</para></entry>
+<entry role="parameter_description"><para>the slant for the font</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>weight</para></entry>
+<entry role="parameter_description"><para>the weight for the font</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-toy-font-face-create.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-toy-font-face-get-family" role="function" condition="since:1.8">
+<title>cairo_toy_font_face_get_family&#160;()</title>
+<indexterm zone="cairo-toy-font-face-get-family" role="1.8"><primary sortas="toy_font_face_get_family">cairo_toy_font_face_get_family</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_toy_font_face_get_family (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the familly name of a toy font.</para>
+<refsect3 id="cairo-toy-font-face-get-family.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A toy font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-toy-font-face-get-family.returns" role="returns">
+<title>Returns</title>
+<para> The family name. This string is owned by the font face
+and remains valid as long as the font face is alive (referenced).</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-toy-font-face-get-slant" role="function" condition="since:1.8">
+<title>cairo_toy_font_face_get_slant&#160;()</title>
+<indexterm zone="cairo-toy-font-face-get-slant" role="1.8"><primary sortas="toy_font_face_get_slant">cairo_toy_font_face_get_slant</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-slant-t"><returnvalue>cairo_font_slant_t</returnvalue></link>
+cairo_toy_font_face_get_slant (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the slant a toy font.</para>
+<refsect3 id="cairo-toy-font-face-get-slant.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A toy font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-toy-font-face-get-slant.returns" role="returns">
+<title>Returns</title>
+<para> The slant value</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-toy-font-face-get-weight" role="function" condition="since:1.8">
+<title>cairo_toy_font_face_get_weight&#160;()</title>
+<indexterm zone="cairo-toy-font-face-get-weight" role="1.8"><primary sortas="toy_font_face_get_weight">cairo_toy_font_face_get_weight</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-weight-t"><returnvalue>cairo_font_weight_t</returnvalue></link>
+cairo_toy_font_face_get_weight (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the weight a toy font.</para>
+<refsect3 id="cairo-toy-font-face-get-weight.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A toy font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-toy-font-face-get-weight.returns" role="returns">
+<title>Returns</title>
+<para> The weight value</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-glyph-allocate" role="function" condition="since:1.8">
+<title>cairo_glyph_allocate&#160;()</title>
+<indexterm zone="cairo-glyph-allocate" role="1.8"><primary sortas="glyph_allocate">cairo_glyph_allocate</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-glyph-t"><returnvalue>cairo_glyph_t</returnvalue></link>&#160;*
+cairo_glyph_allocate (<parameter><link linkend="int"><type>int</type></link> num_glyphs</parameter>);</programlisting>
+<para>Allocates an array of <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link>'s.
+This function is only useful in implementations of
+<link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><type>cairo_user_scaled_font_text_to_glyphs_func_t</type></link> where the user
+needs to allocate an array of glyphs that cairo will free.
+For all other uses, user can use their own allocation method
+for glyphs.</para>
+<para>This function returns <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>num_glyphs</parameter>
+ is not positive,
+or if out of memory. That means, the <link linkend="NULL:CAPS"><literal>NULL</literal></link> return value
+signals out-of-memory only if <parameter>num_glyphs</parameter>
+ was positive.</para>
+<refsect3 id="cairo-glyph-allocate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>number of glyphs to allocate</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-glyph-allocate.returns" role="returns">
+<title>Returns</title>
+<para> the newly allocated array of glyphs that should be
+freed using <link linkend="cairo-glyph-free"><function>cairo_glyph_free()</function></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-glyph-free" role="function" condition="since:1.8">
+<title>cairo_glyph_free&#160;()</title>
+<indexterm zone="cairo-glyph-free" role="1.8"><primary sortas="glyph_free">cairo_glyph_free</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_glyph_free (<parameter><link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> *glyphs</parameter>);</programlisting>
+<para>Frees an array of <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link>'s allocated using <link linkend="cairo-glyph-allocate"><function>cairo_glyph_allocate()</function></link>.
+This function is only useful to free glyph array returned
+by <link linkend="cairo-scaled-font-text-to-glyphs"><function>cairo_scaled_font_text_to_glyphs()</function></link> where cairo returns
+an array of glyphs that the user will free.
+For all other uses, user can use their own allocation method
+for glyphs.</para>
+<refsect3 id="cairo-glyph-free.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>array of glyphs to free, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-text-cluster-allocate" role="function" condition="since:1.8">
+<title>cairo_text_cluster_allocate&#160;()</title>
+<indexterm zone="cairo-text-cluster-allocate" role="1.8"><primary sortas="text_cluster_allocate">cairo_text_cluster_allocate</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-text-cluster-t"><returnvalue>cairo_text_cluster_t</returnvalue></link>&#160;*
+cairo_text_cluster_allocate (<parameter><link linkend="int"><type>int</type></link> num_clusters</parameter>);</programlisting>
+<para>Allocates an array of <link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link>'s.
+This function is only useful in implementations of
+<link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><type>cairo_user_scaled_font_text_to_glyphs_func_t</type></link> where the user
+needs to allocate an array of text clusters that cairo will free.
+For all other uses, user can use their own allocation method
+for text clusters.</para>
+<para>This function returns <link linkend="NULL:CAPS"><literal>NULL</literal></link> if <parameter>num_clusters</parameter>
+ is not positive,
+or if out of memory. That means, the <link linkend="NULL:CAPS"><literal>NULL</literal></link> return value
+signals out-of-memory only if <parameter>num_clusters</parameter>
+ was positive.</para>
+<refsect3 id="cairo-text-cluster-allocate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>num_clusters</para></entry>
+<entry role="parameter_description"><para>number of text_clusters to allocate</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-text-cluster-allocate.returns" role="returns">
+<title>Returns</title>
+<para> the newly allocated array of text clusters that should be
+freed using <link linkend="cairo-text-cluster-free"><function>cairo_text_cluster_free()</function></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-text-cluster-free" role="function" condition="since:1.8">
+<title>cairo_text_cluster_free&#160;()</title>
+<indexterm zone="cairo-text-cluster-free" role="1.8"><primary sortas="text_cluster_free">cairo_text_cluster_free</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_text_cluster_free (<parameter><link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link> *clusters</parameter>);</programlisting>
+<para>Frees an array of <link linkend="cairo-text-cluster"><type>cairo_text_cluster</type></link>'s allocated using <link linkend="cairo-text-cluster-allocate"><function>cairo_text_cluster_allocate()</function></link>.
+This function is only useful to free text cluster array returned
+by <link linkend="cairo-scaled-font-text-to-glyphs"><function>cairo_scaled_font_text_to_glyphs()</function></link> where cairo returns
+an array of text clusters that the user will free.
+For all other uses, user can use their own allocation method
+for text clusters.</para>
+<refsect3 id="cairo-text-cluster-free.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>clusters</para></entry>
+<entry role="parameter_description"><para>array of text clusters to free, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-text.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-glyph-t" role="struct" condition="since:1.0">
+<title>cairo_glyph_t</title>
+<indexterm zone="cairo-glyph-t" role="1.0"><primary sortas="glyph_t">cairo_glyph_t</primary></indexterm>
+<programlisting language="C">typedef struct {
+ unsigned long index;
+ double x;
+ double y;
+} cairo_glyph_t;
+</programlisting>
+<para>The <link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> 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
+shapes. There can be multiple glyphs for a single character
+(alternates to be used in different contexts, for example), or a
+glyph can be a <firstterm>ligature</firstterm> of multiple
+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.</para>
+<para>Note that the offsets given by <parameter>x</parameter>
+ and <parameter>y</parameter>
+ are not cumulative. When
+drawing or measuring text, each glyph is individually positioned
+with respect to the overall origin</para>
+<refsect3 id="cairo-glyph-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para>unsigned&#160;<link linkend="long"><type>long</type></link>&#160;<structfield id="cairo-glyph-t.index">index</structfield>;</para></entry>
+<entry role="struct_member_description"><para>glyph index in the font. The exact interpretation of the
+glyph index depends on the font technology being used.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-glyph-t.x">x</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the offset in the X direction between the origin used for
+drawing or measuring the string and the origin of this glyph.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-glyph-t.y">y</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the offset in the Y direction between the origin used for
+drawing or measuring the string and the origin of this glyph.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-slant-t" role="enum" condition="since:1.0">
+<title>enum cairo_font_slant_t</title>
+<indexterm zone="cairo-font-slant-t" role="1.0"><primary sortas="font_slant_t">cairo_font_slant_t</primary></indexterm>
+<para>Specifies variants of a font face based on their slant.</para>
+<refsect3 id="cairo-font-slant-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-SLANT-NORMAL:CAPS">CAIRO_FONT_SLANT_NORMAL</para></entry>
+<entry role="enum_member_description"><para>Upright font style, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-SLANT-ITALIC:CAPS">CAIRO_FONT_SLANT_ITALIC</para></entry>
+<entry role="enum_member_description"><para>Italic font style, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-SLANT-OBLIQUE:CAPS">CAIRO_FONT_SLANT_OBLIQUE</para></entry>
+<entry role="enum_member_description"><para>Oblique font style, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-font-weight-t" role="enum" condition="since:1.0">
+<title>enum cairo_font_weight_t</title>
+<indexterm zone="cairo-font-weight-t" role="1.0"><primary sortas="font_weight_t">cairo_font_weight_t</primary></indexterm>
+<para>Specifies variants of a font face based on their weight.</para>
+<refsect3 id="cairo-font-weight-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-WEIGHT-NORMAL:CAPS">CAIRO_FONT_WEIGHT_NORMAL</para></entry>
+<entry role="enum_member_description"><para>Normal font weight, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FONT-WEIGHT-BOLD:CAPS">CAIRO_FONT_WEIGHT_BOLD</para></entry>
+<entry role="enum_member_description"><para>Bold font weight, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-text-cluster-t" role="struct" condition="since:1.8">
+<title>cairo_text_cluster_t</title>
+<indexterm zone="cairo-text-cluster-t" role="1.8"><primary sortas="text_cluster_t">cairo_text_cluster_t</primary></indexterm>
+<programlisting language="C">typedef struct {
+ int num_bytes;
+ int num_glyphs;
+} cairo_text_cluster_t;
+</programlisting>
+<para>The <link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link> structure holds information about a single
+<firstterm>text cluster</firstterm>. A text cluster is a minimal
+mapping of some glyphs corresponding to some UTF-8 text.</para>
+<para>For a cluster to be valid, both <parameter>num_bytes</parameter>
+ and <parameter>num_glyphs</parameter>
+ should
+be non-negative, and at least one should be non-zero.
+Note that clusters with zero glyphs are not as well supported as
+normal clusters. For example, PDF rendering applications typically
+ignore those clusters when PDF text is being selected.</para>
+<para>See <link linkend="cairo-show-text-glyphs"><function>cairo_show_text_glyphs()</function></link> for how clusters are used in advanced
+text operations.</para>
+<refsect3 id="cairo-text-cluster-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-text-cluster-t.num-bytes">num_bytes</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the number of bytes of UTF-8 text covered by cluster</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-text-cluster-t.num-glyphs">num_glyphs</structfield>;</para></entry>
+<entry role="struct_member_description"><para>the number of glyphs covered by cluster</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-text-cluster-flags-t" role="enum" condition="since:1.8">
+<title>enum cairo_text_cluster_flags_t</title>
+<indexterm zone="cairo-text-cluster-flags-t" role="1.8"><primary sortas="text_cluster_flags_t">cairo_text_cluster_flags_t</primary></indexterm>
+<para>Specifies properties of a text cluster mapping.</para>
+<refsect3 id="cairo-text-cluster-flags-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-TEXT-CLUSTER-FLAG-BACKWARD:CAPS">CAIRO_TEXT_CLUSTER_FLAG_BACKWARD</para></entry>
+<entry role="enum_member_description"><para>The clusters in the cluster array
+map to glyphs in the glyph array from end to start. (Since 1.8)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-text.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link>, <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>, <link linkend="cairo-text-path"><function>cairo_text_path()</function></link>,
+ <link linkend="cairo-glyph-path"><function>cairo_glyph_path()</function></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-transforms.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-transforms.xml
new file mode 100644
index 0000000..22d38bb
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-transforms.xml
@@ -0,0 +1,389 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Transformations">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Transformations.top_of_page">Transformations</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Transformations</refname>
+<refpurpose>Manipulating the current transformation matrix</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Transformations.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-translate">cairo_translate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-scale">cairo_scale</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-rotate">cairo_rotate</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-transform">cairo_transform</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-matrix">cairo_set_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-matrix">cairo_get_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-identity-matrix">cairo_identity_matrix</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-to-device">cairo_user_to_device</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-to-device-distance">cairo_user_to_device_distance</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-to-user">cairo_device_to_user</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-device-to-user-distance">cairo_device_to_user_distance</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Transformations.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The current transformation matrix, <firstterm>ctm</firstterm>, is a
+two-dimensional affine transformation that maps all coordinates and other
+drawing instruments from the <firstterm>user space</firstterm> into the
+surface's canonical coordinate system, also known as the <firstterm>device
+space</firstterm>.</para>
+
+</refsect1>
+<refsect1 id="cairo-Transformations.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-translate" role="function" condition="since:1.0">
+<title>cairo_translate&#160;()</title>
+<indexterm zone="cairo-translate" role="1.0"><primary sortas="translate">cairo_translate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_translate (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> tx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> ty</parameter>);</programlisting>
+<para>Modifies the current transformation matrix (CTM) by translating 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 <link linkend="cairo-translate"><function>cairo_translate()</function></link>. In other words, the translation of the
+user-space origin takes place after any existing transformation.</para>
+<refsect3 id="cairo-translate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>tx</para></entry>
+<entry role="parameter_description"><para>amount to translate in the X direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>ty</para></entry>
+<entry role="parameter_description"><para>amount to translate in the Y direction</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-scale" role="function" condition="since:1.0">
+<title>cairo_scale&#160;()</title>
+<indexterm zone="cairo-scale" role="1.0"><primary sortas="scale">cairo_scale</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_scale (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> sx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> sy</parameter>);</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>
+<refsect3 id="cairo-scale.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>sx</para></entry>
+<entry role="parameter_description"><para>scale factor for the X dimension</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>sy</para></entry>
+<entry role="parameter_description"><para>scale factor for the Y dimension</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rotate" role="function" condition="since:1.0">
+<title>cairo_rotate&#160;()</title>
+<indexterm zone="cairo-rotate" role="1.0"><primary sortas="rotate">cairo_rotate</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_rotate (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> angle</parameter>);</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>
+<refsect3 id="cairo-rotate.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>angle</para></entry>
+<entry role="parameter_description"><para>angle (in radians) by which the user-space axes will be
+rotated</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-transform" role="function" condition="since:1.0">
+<title>cairo_transform&#160;()</title>
+<indexterm zone="cairo-transform" role="1.0"><primary sortas="transform">cairo_transform</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_transform (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</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>
+<refsect3 id="cairo-transform.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a transformation to be applied to the user-space axes</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-matrix" role="function" condition="since:1.0">
+<title>cairo_set_matrix&#160;()</title>
+<indexterm zone="cairo-set-matrix" role="1.0"><primary sortas="set_matrix">cairo_set_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_matrix (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</programlisting>
+<para>Modifies the current transformation matrix (CTM) by setting it
+equal to <parameter>matrix</parameter>
+.</para>
+<refsect3 id="cairo-set-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>a transformation matrix from user space to device space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-matrix" role="function" condition="since:1.0">
+<title>cairo_get_matrix&#160;()</title>
+<indexterm zone="cairo-get-matrix" role="1.0"><primary sortas="get_matrix">cairo_get_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_get_matrix (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *matrix</parameter>);</programlisting>
+<para>Stores the current transformation matrix (CTM) into <parameter>matrix</parameter>
+.</para>
+<refsect3 id="cairo-get-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>matrix</para></entry>
+<entry role="parameter_description"><para>return value for the matrix</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-identity-matrix" role="function" condition="since:1.0">
+<title>cairo_identity_matrix&#160;()</title>
+<indexterm zone="cairo-identity-matrix" role="1.0"><primary sortas="identity_matrix">cairo_identity_matrix</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_identity_matrix (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>
+<refsect3 id="cairo-identity-matrix.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-user-to-device" role="function" condition="since:1.0">
+<title>cairo_user_to_device&#160;()</title>
+<indexterm zone="cairo-user-to-device" role="1.0"><primary sortas="user_to_device">cairo_user_to_device</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_user_to_device (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y</parameter>);</programlisting>
+<para>Transform a coordinate from user space to device space by
+multiplying the given point by the current transformation matrix
+(CTM).</para>
+<refsect3 id="cairo-user-to-device.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X value of coordinate (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y value of coordinate (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-user-to-device-distance" role="function" condition="since:1.0">
+<title>cairo_user_to_device_distance&#160;()</title>
+<indexterm zone="cairo-user-to-device-distance" role="1.0"><primary sortas="user_to_device_distance">cairo_user_to_device_distance</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_user_to_device_distance (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dy</parameter>);</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>
+<refsect3 id="cairo-user-to-device-distance.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx</para></entry>
+<entry role="parameter_description"><para>X component of a distance vector (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy</para></entry>
+<entry role="parameter_description"><para>Y component of a distance vector (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-device-to-user" role="function" condition="since:1.0">
+<title>cairo_device_to_user&#160;()</title>
+<indexterm zone="cairo-device-to-user" role="1.0"><primary sortas="device_to_user">cairo_device_to_user</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_device_to_user (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y</parameter>);</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>
+<refsect3 id="cairo-device-to-user.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X value of coordinate (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y value of coordinate (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-device-to-user-distance" role="function" condition="since:1.0">
+<title>cairo_device_to_user_distance&#160;()</title>
+<indexterm zone="cairo-device-to-user-distance" role="1.0"><primary sortas="device_to_user_distance">cairo_device_to_user_distance</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_device_to_user_distance (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dx</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dy</parameter>);</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>
+<refsect3 id="cairo-device-to-user-distance.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dx</para></entry>
+<entry role="parameter_description"><para>X component of a distance vector (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dy</para></entry>
+<entry role="parameter_description"><para>Y component of a distance vector (in/out parameter)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Transformations.other_details" role="details">
+<title role="details.title">Types and Values</title>
+
+</refsect1>
+<refsect1 id="cairo-Transformations.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-types.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-types.xml
new file mode 100644
index 0000000..916e4f4
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-types.xml
@@ -0,0 +1,161 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Types">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Types.top_of_page">Types</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Types</refname>
+<refpurpose>Generic data types</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Types.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-destroy-func-t">*cairo_destroy_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Types.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-bool-t">cairo_bool_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-user-data-key-t">cairo_user_data_key_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-rectangle-int-t">cairo_rectangle_int_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Types.description" role="desc">
+<title role="desc.title">Description</title>
+<para>This section lists generic data types used in the cairo API.</para>
+
+</refsect1>
+<refsect1 id="cairo-Types.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-destroy-func-t" role="function" condition="since:1.0">
+<title>cairo_destroy_func_t&#160;()</title>
+<indexterm zone="cairo-destroy-func-t" role="1.0"><primary sortas="destroy_func_t">cairo_destroy_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_destroy_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="void"><type>void</type></link> *data</parameter>);</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>
+<refsect3 id="cairo-destroy-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>data</para></entry>
+<entry role="parameter_description"><para>The data element being destroyed.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Types.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-bool-t" role="typedef" condition="since:1.0">
+<title>cairo_bool_t</title>
+<indexterm zone="cairo-bool-t" role="1.0"><primary sortas="bool_t">cairo_bool_t</primary></indexterm>
+<programlisting language="C">typedef int cairo_bool_t;
+</programlisting>
+<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 explicitly is not encouraged; just use the
+value as a boolean condition.</para>
+<informalexample><programlisting>
+ if (cairo_in_stroke (cr, x, y)) {
+ /<!-- -->* do something *<!-- -->/
+ }
+</programlisting></informalexample>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-user-data-key-t" role="struct" condition="since:1.0">
+<title>cairo_user_data_key_t</title>
+<indexterm zone="cairo-user-data-key-t" role="1.0"><primary sortas="user_data_key_t">cairo_user_data_key_t</primary></indexterm>
+<programlisting language="C">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>
+<refsect3 id="cairo-user-data-key-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-user-data-key-t.unused">unused</structfield>;</para></entry>
+<entry role="struct_member_description"><para>not used; ignore.</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rectangle-int-t" role="struct" condition="since:1.10">
+<title>cairo_rectangle_int_t</title>
+<indexterm zone="cairo-rectangle-int-t" role="1.10"><primary sortas="rectangle_int_t">cairo_rectangle_int_t</primary></indexterm>
+<programlisting language="C">typedef struct {
+ int x, y;
+ int width, height;
+} cairo_rectangle_int_t;
+</programlisting>
+<para>A data structure for holding a rectangle with integer coordinates.</para>
+<refsect3 id="cairo-rectangle-int-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-rectangle-int-t.x">x</structfield>;</para></entry>
+<entry role="struct_member_description"><para>X coordinate of the left side of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-rectangle-int-t.y">y</structfield>;</para></entry>
+<entry role="struct_member_description"><para>Y coordinate of the the top side of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-rectangle-int-t.width">width</structfield>;</para></entry>
+<entry role="struct_member_description"><para>width of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-rectangle-int-t.height">height</structfield>;</para></entry>
+<entry role="struct_member_description"><para>height of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-user-fonts.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-user-fonts.xml
new file mode 100644
index 0000000..894fd7a
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-user-fonts.xml
@@ -0,0 +1,626 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-User-Fonts">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-User-Fonts.top_of_page">User Fonts</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>User Fonts</refname>
+<refpurpose>Font support with font data provided by the user</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-User-Fonts.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-user-scaled-font-init-func-t">*cairo_user_scaled_font_init_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-user-scaled-font-render-glyph-func-t">*cairo_user_scaled_font_render_glyph_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t">*cairo_user_scaled_font_text_to_glyphs_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><phrase role="c_punctuation">(</phrase><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t">*cairo_user_scaled_font_unicode_to_glyph_func_t</link><phrase role="c_punctuation">)</phrase>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-create">cairo_user_font_face_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-set-init-func">cairo_user_font_face_set_init_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-user-scaled-font-init-func-t"><returnvalue>cairo_user_scaled_font_init_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-get-init-func">cairo_user_font_face_get_init_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-set-render-glyph-func">cairo_user_font_face_set_render_glyph_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-user-scaled-font-render-glyph-func-t"><returnvalue>cairo_user_scaled_font_render_glyph_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-get-render-glyph-func">cairo_user_font_face_get_render_glyph_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-set-unicode-to-glyph-func">cairo_user_font_face_set_unicode_to_glyph_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t"><returnvalue>cairo_user_scaled_font_unicode_to_glyph_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-get-unicode-to-glyph-func">cairo_user_font_face_get_unicode_to_glyph_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-set-text-to-glyphs-func">cairo_user_font_face_set_text_to_glyphs_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><returnvalue>cairo_user_scaled_font_text_to_glyphs_func_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-user-font-face-get-text-to-glyphs-func">cairo_user_font_face_get_text_to_glyphs_func</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-User-Fonts.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-USER-FONT:CAPS">CAIRO_HAS_USER_FONT</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-User-Fonts.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The user-font feature allows the cairo user to provide drawings for glyphs
+in a font. This is most useful in implementing fonts in non-standard
+formats, like SVG fonts and Flash fonts, but can also be used by games and
+other application to draw "funky" fonts.</para>
+
+</refsect1>
+<refsect1 id="cairo-User-Fonts.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-user-scaled-font-init-func-t" role="function" condition="since:1.8">
+<title>cairo_user_scaled_font_init_func_t&#160;()</title>
+<indexterm zone="cairo-user-scaled-font-init-func-t" role="1.8"><primary sortas="user_scaled_font_init_func_t">cairo_user_scaled_font_init_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_user_scaled_font_init_func_t<phrase role="c_punctuation">)</phrase> (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-font-extents-t"><type>cairo_font_extents_t</type></link> *extents</parameter>);</programlisting>
+<para><link linkend="cairo-user-scaled-font-init-func-t"><type>cairo_user_scaled_font_init_func_t</type></link> is the type of function which is
+called when a scaled-font needs to be created for a user font-face.</para>
+<para>The cairo context <parameter>cr</parameter>
+ is not used by the caller, but is prepared in font
+space, similar to what the cairo contexts passed to the render_glyph
+method will look like. The callback can use this context for extents
+computation for example. After the callback is called, <parameter>cr</parameter>
+ is checked
+for any error status.</para>
+<para>The <parameter>extents</parameter>
+ argument is where the user font sets the font extents for
+<parameter>scaled_font</parameter>
+. It is in font space, which means that for most cases its
+ascent and descent members should add to 1.0. <parameter>extents</parameter>
+ is preset to
+hold a value of 1.0 for ascent, height, and max_x_advance, and 0.0 for
+descent and max_y_advance members.</para>
+<para>The callback is optional. If not set, default font extents as described
+in the previous paragraph will be used.</para>
+<para>Note that <parameter>scaled_font</parameter>
+ is not fully initialized at this
+point and trying to use it for text operations in the callback will result
+in deadlock.</para>
+<refsect3 id="cairo-user-scaled-font-init-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>the scaled-font being created</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context, in font space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>font extents to fill in, in font space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-scaled-font-init-func-t.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> upon success, or an error status on error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-scaled-font-render-glyph-func-t" role="function" condition="since:1.8">
+<title>cairo_user_scaled_font_render_glyph_func_t&#160;()</title>
+<indexterm zone="cairo-user-scaled-font-render-glyph-func-t" role="1.8"><primary sortas="user_scaled_font_render_glyph_func_t">cairo_user_scaled_font_render_glyph_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_user_scaled_font_render_glyph_func_t<phrase role="c_punctuation">)</phrase>
+ (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><type>unsigned long </type> glyph</parameter>,
+ <parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-text-extents-t"><type>cairo_text_extents_t</type></link> *extents</parameter>);</programlisting>
+<para><link linkend="cairo-user-scaled-font-render-glyph-func-t"><type>cairo_user_scaled_font_render_glyph_func_t</type></link> is the type of function which
+is called when a user scaled-font needs to render a glyph.</para>
+<para>The callback is mandatory, and expected to draw the glyph with code <parameter>glyph</parameter>
+ to
+the cairo context <parameter>cr</parameter>
+. <parameter>cr</parameter>
+ is prepared such that the glyph drawing is done in
+font space. That is, the matrix set on <parameter>cr</parameter>
+ is the scale matrix of <parameter>scaled_font</parameter>
+,
+The <parameter>extents</parameter>
+ argument is where the user font sets the font extents for
+<parameter>scaled_font</parameter>
+. However, if user prefers to draw in user space, they can
+achieve that by changing the matrix on <parameter>cr</parameter>
+. All cairo rendering operations
+to <parameter>cr</parameter>
+ are permitted, however, the result is undefined if any source other
+than the default source on <parameter>cr</parameter>
+ is used. That means, glyph bitmaps should
+be rendered using <link linkend="cairo-mask"><function>cairo_mask()</function></link> instead of <link linkend="cairo-paint"><function>cairo_paint()</function></link>.</para>
+<para>Other non-default settings on <parameter>cr</parameter>
+ include a font size of 1.0 (given that
+it is set up to be in font space), and font options corresponding to
+<parameter>scaled_font</parameter>
+.</para>
+<para>The <parameter>extents</parameter>
+ argument is preset to have <literal>x_bearing</literal>,
+<literal>width</literal>, and <literal>y_advance</literal> of zero,
+<literal>y_bearing</literal> set to <literal>-font_extents.ascent</literal>,
+<literal>height</literal> to <literal>font_extents.ascent+font_extents.descent</literal>,
+and <literal>x_advance</literal> to <literal>font_extents.max_x_advance</literal>.
+The only field user needs to set in majority of cases is
+<literal>x_advance</literal>.
+If the <literal>width</literal> field is zero upon the callback returning
+(which is its preset value), the glyph extents are automatically computed
+based on the drawings done to <parameter>cr</parameter>
+. This is in most cases exactly what the
+desired behavior is. However, if for any reason the callback sets the
+extents, it must be ink extents, and include the extents of all drawing
+done to <parameter>cr</parameter>
+ in the callback.</para>
+<refsect3 id="cairo-user-scaled-font-render-glyph-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>user scaled-font</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyph</para></entry>
+<entry role="parameter_description"><para>glyph code to render</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>cairo context to draw to, in font space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>extents</para></entry>
+<entry role="parameter_description"><para>glyph extents to fill in, in font space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-scaled-font-render-glyph-func-t.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> upon success, or
+<link linkend="CAIRO-STATUS-USER-FONT-ERROR:CAPS"><literal>CAIRO_STATUS_USER_FONT_ERROR</literal></link> or any other error status on error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-scaled-font-text-to-glyphs-func-t" role="function" condition="since:1.8">
+<title>cairo_user_scaled_font_text_to_glyphs_func_t&#160;()</title>
+<indexterm zone="cairo-user-scaled-font-text-to-glyphs-func-t" role="1.8"><primary sortas="user_scaled_font_text_to_glyphs_func_t">cairo_user_scaled_font_text_to_glyphs_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_user_scaled_font_text_to_glyphs_func_t<phrase role="c_punctuation">)</phrase>
+ (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter>const <link linkend="char"><type>char</type></link> *utf8</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> utf8_len</parameter>,
+ <parameter><link linkend="cairo-glyph-t"><type>cairo_glyph_t</type></link> **glyphs</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_glyphs</parameter>,
+ <parameter><link linkend="cairo-text-cluster-t"><type>cairo_text_cluster_t</type></link> **clusters</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> *num_clusters</parameter>,
+ <parameter><link linkend="cairo-text-cluster-flags-t"><type>cairo_text_cluster_flags_t</type></link> *cluster_flags</parameter>);</programlisting>
+<para><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><type>cairo_user_scaled_font_text_to_glyphs_func_t</type></link> is the type of function which
+is called to convert input text to an array of glyphs. This is used by the
+<link linkend="cairo-show-text"><function>cairo_show_text()</function></link> operation.</para>
+<para>Using this callback the user-font has full control on glyphs and their
+positions. That means, it allows for features like ligatures and kerning,
+as well as complex <firstterm>shaping</firstterm> required for scripts like
+Arabic and Indic.</para>
+<para>The <parameter>num_glyphs</parameter>
+ argument is preset to the number of glyph entries available
+in the <parameter>glyphs</parameter>
+ buffer. If the <parameter>glyphs</parameter>
+ buffer is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, the value of
+<parameter>num_glyphs</parameter>
+ will be zero. If the provided glyph array is too short for
+the conversion (or for convenience), a new glyph array may be allocated
+using <link linkend="cairo-glyph-allocate"><function>cairo_glyph_allocate()</function></link> and placed in <parameter>glyphs</parameter>
+. Upon return,
+<parameter>num_glyphs</parameter>
+ should contain the number of generated glyphs. If the value
+<parameter>glyphs</parameter>
+ points at has changed after the call, the caller will free the
+allocated glyph array using <link linkend="cairo-glyph-free"><function>cairo_glyph_free()</function></link>. The caller will also free
+the original value of <parameter>glyphs</parameter>
+, so the callback shouldn't do so.
+The callback should populate the glyph indices and positions (in font space)
+assuming that the text is to be shown at the origin.</para>
+<para>If <parameter>clusters</parameter>
+ is not <link linkend="NULL:CAPS"><literal>NULL</literal></link>, <parameter>num_clusters</parameter>
+ and <parameter>cluster_flags</parameter>
+ are also
+non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, and cluster mapping should be computed. The semantics of how
+cluster array allocation works is similar to the glyph array. That is,
+if <parameter>clusters</parameter>
+ initially points to a non-<link linkend="NULL:CAPS"><literal>NULL</literal></link> value, that array may be used
+as a cluster buffer, and <parameter>num_clusters</parameter>
+ points to the number of cluster
+entries available there. If the provided cluster array is too short for
+the conversion (or for convenience), a new cluster array may be allocated
+using <link linkend="cairo-text-cluster-allocate"><function>cairo_text_cluster_allocate()</function></link> and placed in <parameter>clusters</parameter>
+. In this case,
+the original value of <parameter>clusters</parameter>
+ will still be freed by the caller. Upon
+return, <parameter>num_clusters</parameter>
+ should contain the number of generated clusters.
+If the value <parameter>clusters</parameter>
+ points at has changed after the call, the caller
+will free the allocated cluster array using <link linkend="cairo-text-cluster-free"><function>cairo_text_cluster_free()</function></link>.</para>
+<para>The callback is optional. If <parameter>num_glyphs</parameter>
+ is negative upon
+the callback returning or if the return value
+is <link linkend="CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS"><literal>CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED</literal></link>, the unicode_to_glyph callback
+is tried. See <link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t"><type>cairo_user_scaled_font_unicode_to_glyph_func_t</type></link>.</para>
+<para>Note: While cairo does not impose any limitation on glyph indices,
+some applications may assume that a glyph index fits in a 16-bit
+unsigned integer. As such, it is advised that user-fonts keep their
+glyphs in the 0 to 65535 range. Furthermore, some applications may
+assume that glyph 0 is a special glyph-not-found glyph. User-fonts
+are advised to use glyph 0 for such purposes and do not use that
+glyph value for other purposes.</para>
+<refsect3 id="cairo-user-scaled-font-text-to-glyphs-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>the scaled-font being created</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8</para></entry>
+<entry role="parameter_description"><para>a string of text encoded in UTF-8</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>utf8_len</para></entry>
+<entry role="parameter_description"><para>length of <parameter>utf8</parameter>
+in bytes</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyphs</para></entry>
+<entry role="parameter_description"><para>pointer to array of glyphs to fill, in font space</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_glyphs</para></entry>
+<entry role="parameter_description"><para>pointer to number of glyphs</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>clusters</para></entry>
+<entry role="parameter_description"><para>pointer to array of cluster mapping information to fill, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_clusters</para></entry>
+<entry role="parameter_description"><para>pointer to number of clusters</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>cluster_flags</para></entry>
+<entry role="parameter_description"><para>pointer to location to store cluster flags corresponding to the
+output <parameter>clusters</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-scaled-font-text-to-glyphs-func-t.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> upon success,
+<link linkend="CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS"><literal>CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED</literal></link> if fallback options should be tried,
+or <link linkend="CAIRO-STATUS-USER-FONT-ERROR:CAPS"><literal>CAIRO_STATUS_USER_FONT_ERROR</literal></link> or any other error status on error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-scaled-font-unicode-to-glyph-func-t" role="function" condition="since:1.8">
+<title>cairo_user_scaled_font_unicode_to_glyph_func_t&#160;()</title>
+<indexterm zone="cairo-user-scaled-font-unicode-to-glyph-func-t" role="1.8"><primary sortas="user_scaled_font_unicode_to_glyph_func_t">cairo_user_scaled_font_unicode_to_glyph_func_t</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+<phrase role="c_punctuation">(</phrase>*cairo_user_scaled_font_unicode_to_glyph_func_t<phrase role="c_punctuation">)</phrase>
+ (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><type>unsigned long </type> unicode</parameter>,
+ <parameter>unsigned <link linkend="long"><type>long</type></link> *glyph_index</parameter>);</programlisting>
+<para><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t"><type>cairo_user_scaled_font_unicode_to_glyph_func_t</type></link> is the type of function which
+is called to convert an input Unicode character to a single glyph.
+This is used by the <link linkend="cairo-show-text"><function>cairo_show_text()</function></link> operation.</para>
+<para>This callback is used to provide the same functionality as the
+text_to_glyphs callback does (see <link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><type>cairo_user_scaled_font_text_to_glyphs_func_t</type></link>)
+but has much less control on the output,
+in exchange for increased ease of use. The inherent assumption to using
+this callback is that each character maps to one glyph, and that the
+mapping is context independent. It also assumes that glyphs are positioned
+according to their advance width. These mean no ligatures, kerning, or
+complex scripts can be implemented using this callback.</para>
+<para>The callback is optional, and only used if text_to_glyphs callback is not
+set or fails to return glyphs. If this callback is not set or if it returns
+<link linkend="CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS"><literal>CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED</literal></link>, an identity mapping from Unicode
+code-points to glyph indices is assumed.</para>
+<para>Note: While cairo does not impose any limitation on glyph indices,
+some applications may assume that a glyph index fits in a 16-bit
+unsigned integer. As such, it is advised that user-fonts keep their
+glyphs in the 0 to 65535 range. Furthermore, some applications may
+assume that glyph 0 is a special glyph-not-found glyph. User-fonts
+are advised to use glyph 0 for such purposes and do not use that
+glyph value for other purposes.</para>
+<refsect3 id="cairo-user-scaled-font-unicode-to-glyph-func-t.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>the scaled-font being created</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>unicode</para></entry>
+<entry role="parameter_description"><para>input unicode character code-point</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>glyph_index</para></entry>
+<entry role="parameter_description"><para>output glyph index</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-scaled-font-unicode-to-glyph-func-t.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> upon success,
+<link linkend="CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS"><literal>CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED</literal></link> if fallback options should be tried,
+or <link linkend="CAIRO-STATUS-USER-FONT-ERROR:CAPS"><literal>CAIRO_STATUS_USER_FONT_ERROR</literal></link> or any other error status on error.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-create" role="function" condition="since:1.8">
+<title>cairo_user_font_face_create&#160;()</title>
+<indexterm zone="cairo-user-font-face-create" role="1.8"><primary sortas="user_font_face_create">cairo_user_font_face_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_user_font_face_create (<parameter><type>void</type></parameter>);</programlisting>
+<para>Creates a new user font-face.</para>
+<para>Use the setter functions to associate callbacks with the returned
+user font. The only mandatory callback is render_glyph.</para>
+<para>After the font-face is created, the user can attach arbitrary data
+(the actual font data) to it using <link linkend="cairo-font-face-set-user-data"><function>cairo_font_face_set_user_data()</function></link>
+and access it from the user-font callbacks by using
+<link linkend="cairo-scaled-font-get-font-face"><function>cairo_scaled_font_get_font_face()</function></link> followed by
+<link linkend="cairo-font-face-get-user-data"><function>cairo_font_face_get_user_data()</function></link>.</para>
+<refsect3 id="cairo-user-font-face-create.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-set-init-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_set_init_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-set-init-func" role="1.8"><primary sortas="user_font_face_set_init_func">cairo_user_font_face_set_init_func</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_user_font_face_set_init_func (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter><link linkend="cairo-user-scaled-font-init-func-t"><type>cairo_user_scaled_font_init_func_t</type></link> init_func</parameter>);</programlisting>
+<para>Sets the scaled-font initialization function of a user-font.
+See <link linkend="cairo-user-scaled-font-init-func-t"><type>cairo_user_scaled_font_init_func_t</type></link> for details of how the callback
+works.</para>
+<para>The font-face should not be immutable or a <link linkend="CAIRO-STATUS-USER-FONT-IMMUTABLE:CAPS"><literal>CAIRO_STATUS_USER_FONT_IMMUTABLE</literal></link>
+error will occur. A user font-face is immutable as soon as a scaled-font
+is created from it.</para>
+<refsect3 id="cairo-user-font-face-set-init-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>init_func</para></entry>
+<entry role="parameter_description"><para>The init callback, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-get-init-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_get_init_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-get-init-func" role="1.8"><primary sortas="user_font_face_get_init_func">cairo_user_font_face_get_init_func</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-user-scaled-font-init-func-t"><returnvalue>cairo_user_scaled_font_init_func_t</returnvalue></link>
+cairo_user_font_face_get_init_func (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the scaled-font initialization function of a user-font.</para>
+<refsect3 id="cairo-user-font-face-get-init-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-font-face-get-init-func.returns" role="returns">
+<title>Returns</title>
+<para> The init callback of <parameter>font_face</parameter>
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if none set or an error has occurred.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-set-render-glyph-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_set_render_glyph_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-set-render-glyph-func" role="1.8"><primary sortas="user_font_face_set_render_glyph_func">cairo_user_font_face_set_render_glyph_func</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_user_font_face_set_render_glyph_func
+ (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter><link linkend="cairo-user-scaled-font-render-glyph-func-t"><type>cairo_user_scaled_font_render_glyph_func_t</type></link> render_glyph_func</parameter>);</programlisting>
+<para>Sets the glyph rendering function of a user-font.
+See <link linkend="cairo-user-scaled-font-render-glyph-func-t"><type>cairo_user_scaled_font_render_glyph_func_t</type></link> for details of how the callback
+works.</para>
+<para>The font-face should not be immutable or a <link linkend="CAIRO-STATUS-USER-FONT-IMMUTABLE:CAPS"><literal>CAIRO_STATUS_USER_FONT_IMMUTABLE</literal></link>
+error will occur. A user font-face is immutable as soon as a scaled-font
+is created from it.</para>
+<para>The render_glyph callback is the only mandatory callback of a user-font.
+If the callback is <link linkend="NULL:CAPS"><literal>NULL</literal></link> and a glyph is tried to be rendered using
+<parameter>font_face</parameter>
+, a <link linkend="CAIRO-STATUS-USER-FONT-ERROR:CAPS"><literal>CAIRO_STATUS_USER_FONT_ERROR</literal></link> will occur.</para>
+<refsect3 id="cairo-user-font-face-set-render-glyph-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>render_glyph_func</para></entry>
+<entry role="parameter_description"><para>The render_glyph callback, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-get-render-glyph-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_get_render_glyph_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-get-render-glyph-func" role="1.8"><primary sortas="user_font_face_get_render_glyph_func">cairo_user_font_face_get_render_glyph_func</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-user-scaled-font-render-glyph-func-t"><returnvalue>cairo_user_scaled_font_render_glyph_func_t</returnvalue></link>
+cairo_user_font_face_get_render_glyph_func
+ (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the glyph rendering function of a user-font.</para>
+<refsect3 id="cairo-user-font-face-get-render-glyph-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-font-face-get-render-glyph-func.returns" role="returns">
+<title>Returns</title>
+<para> The render_glyph callback of <parameter>font_face</parameter>
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if none set or an error has occurred.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-set-unicode-to-glyph-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_set_unicode_to_glyph_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-set-unicode-to-glyph-func" role="1.8"><primary sortas="user_font_face_set_unicode_to_glyph_func">cairo_user_font_face_set_unicode_to_glyph_func</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_user_font_face_set_unicode_to_glyph_func
+ (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t"><type>cairo_user_scaled_font_unicode_to_glyph_func_t</type></link> unicode_to_glyph_func</parameter>);</programlisting>
+<para>Sets the unicode-to-glyph conversion function of a user-font.
+See <link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t"><type>cairo_user_scaled_font_unicode_to_glyph_func_t</type></link> for details of how the callback
+works.</para>
+<para>The font-face should not be immutable or a <link linkend="CAIRO-STATUS-USER-FONT-IMMUTABLE:CAPS"><literal>CAIRO_STATUS_USER_FONT_IMMUTABLE</literal></link>
+error will occur. A user font-face is immutable as soon as a scaled-font
+is created from it.</para>
+<refsect3 id="cairo-user-font-face-set-unicode-to-glyph-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>unicode_to_glyph_func</para></entry>
+<entry role="parameter_description"><para>The unicode_to_glyph callback, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-get-unicode-to-glyph-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_get_unicode_to_glyph_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-get-unicode-to-glyph-func" role="1.8"><primary sortas="user_font_face_get_unicode_to_glyph_func">cairo_user_font_face_get_unicode_to_glyph_func</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-user-scaled-font-unicode-to-glyph-func-t"><returnvalue>cairo_user_scaled_font_unicode_to_glyph_func_t</returnvalue></link>
+cairo_user_font_face_get_unicode_to_glyph_func
+ (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the unicode-to-glyph conversion function of a user-font.</para>
+<refsect3 id="cairo-user-font-face-get-unicode-to-glyph-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-font-face-get-unicode-to-glyph-func.returns" role="returns">
+<title>Returns</title>
+<para> The unicode_to_glyph callback of <parameter>font_face</parameter>
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if none set or an error occurred.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-set-text-to-glyphs-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_set_text_to_glyphs_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-set-text-to-glyphs-func" role="1.8"><primary sortas="user_font_face_set_text_to_glyphs_func">cairo_user_font_face_set_text_to_glyphs_func</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_user_font_face_set_text_to_glyphs_func
+ (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>,
+ <parameter><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><type>cairo_user_scaled_font_text_to_glyphs_func_t</type></link> text_to_glyphs_func</parameter>);</programlisting>
+<para>Sets th text-to-glyphs conversion function of a user-font.
+See <link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><type>cairo_user_scaled_font_text_to_glyphs_func_t</type></link> for details of how the callback
+works.</para>
+<para>The font-face should not be immutable or a <link linkend="CAIRO-STATUS-USER-FONT-IMMUTABLE:CAPS"><literal>CAIRO_STATUS_USER_FONT_IMMUTABLE</literal></link>
+error will occur. A user font-face is immutable as soon as a scaled-font
+is created from it.</para>
+<refsect3 id="cairo-user-font-face-set-text-to-glyphs-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>text_to_glyphs_func</para></entry>
+<entry role="parameter_description"><para>The text_to_glyphs callback, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-user-font-face-get-text-to-glyphs-func" role="function" condition="since:1.8">
+<title>cairo_user_font_face_get_text_to_glyphs_func&#160;()</title>
+<indexterm zone="cairo-user-font-face-get-text-to-glyphs-func" role="1.8"><primary sortas="user_font_face_get_text_to_glyphs_func">cairo_user_font_face_get_text_to_glyphs_func</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-user-scaled-font-text-to-glyphs-func-t"><returnvalue>cairo_user_scaled_font_text_to_glyphs_func_t</returnvalue></link>
+cairo_user_font_face_get_text_to_glyphs_func
+ (<parameter><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link> *font_face</parameter>);</programlisting>
+<para>Gets the text-to-glyphs conversion function of a user-font.</para>
+<refsect3 id="cairo-user-font-face-get-text-to-glyphs-func.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font_face</para></entry>
+<entry role="parameter_description"><para>A user font face</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-user-font-face-get-text-to-glyphs-func.returns" role="returns">
+<title>Returns</title>
+<para> The text_to_glyphs callback of <parameter>font_face</parameter>
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if none set or an error occurred.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-User-Fonts.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-USER-FONT:CAPS" role="macro" condition="since:1.8">
+<title>CAIRO_HAS_USER_FONT</title>
+<indexterm zone="CAIRO-HAS-USER-FONT:CAPS" role="1.8"><primary sortas="HAS_USER_FONT">CAIRO_HAS_USER_FONT</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_USER_FONT 1
+</programlisting>
+<para>Defined if the user font backend is available.
+This macro can be used to conditionally compile backend-specific code.
+The user font backend is always built in versions of cairo that support
+this feature (1.8 and later).</para>
+<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-version.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-version.xml
new file mode 100644
index 0000000..7825ecd
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-version.xml
@@ -0,0 +1,278 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Version-Information">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Version-Information.top_of_page">Version Information</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Version Information</refname>
+<refpurpose>Compile-time and run-time version checks.</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Version-Information.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION-ENCODE:CAPS">CAIRO_VERSION_ENCODE</link><phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION-STRINGIZE:CAPS">CAIRO_VERSION_STRINGIZE</link><phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-version">cairo_version</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-version-string">cairo_version_string</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Version-Information.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION:CAPS">CAIRO_VERSION</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION-MAJOR:CAPS">CAIRO_VERSION_MAJOR</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION-MINOR:CAPS">CAIRO_VERSION_MINOR</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION-MICRO:CAPS">CAIRO_VERSION_MICRO</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-VERSION-STRING:CAPS">CAIRO_VERSION_STRING</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Version-Information.description" role="desc">
+<title role="desc.title">Description</title>
+<para>Cairo has a three-part version number scheme. In this scheme, we use
+even vs. odd numbers to distinguish fixed points in the software
+vs. in-progress development, (such as from git instead of a tar file,
+or as a "snapshot" tar file as opposed to a "release" tar file).</para>
+<informalexample><screen>
+ _____ Major. Always 1, until we invent a new scheme.
+/ ___ Minor. Even/Odd = Release/Snapshot (tar files) or Branch/Head (git)
+| / _ Micro. Even/Odd = Tar-file/git
+| | /
+1.0.0
+</screen></informalexample>
+<para>Here are a few examples of versions that one might see.</para>
+<informalexample><screen>
+Releases
+--------
+1.0.0 - A major release
+1.0.2 - A subsequent maintenance release
+1.2.0 - Another major release
+&nbsp;
+Snapshots
+---------
+1.1.2 - A snapshot (working toward the 1.2.0 release)
+&nbsp;
+In-progress development (eg. from git)
+--------------------------------------
+1.0.1 - Development on a maintenance branch (toward 1.0.2 release)
+1.1.1 - Development on head (toward 1.1.2 snapshot and 1.2.0 release)
+</screen></informalexample>
+<refsect2>
+<title>Compatibility</title>
+
+The API/ABI compatibility guarantees for various versions are as
+follows. First, let's assume some cairo-using application code that is
+successfully using the API/ABI "from" one version of cairo. Then let's
+ask the question whether this same code can be moved "to" the API/ABI
+of another version of cairo.
+
+Moving from a release to any later version (release, snapshot,
+development) is always guaranteed to provide compatibility.
+
+Moving from a snapshot to any later version is not guaranteed to
+provide compatibility, since snapshots may introduce new API that ends
+up being removed before the next release.
+
+Moving from an in-development version (odd micro component) to any
+later version is not guaranteed to provide compatibility. In fact,
+there's not even a guarantee that the code will even continue to work
+with the same in-development version number. This is because these
+numbers don't correspond to any fixed state of the software, but
+rather the many states between snapshots and releases.
+
+</refsect2>
+<refsect2>
+<title>Examining the version</title>
+
+Cairo provides the ability to examine the version at either
+compile-time or run-time and in both a human-readable form as well as
+an encoded form suitable for direct comparison. Cairo also provides the
+macro <link linkend="CAIRO-VERSION-ENCODE:CAPS"><function>CAIRO_VERSION_ENCODE()</function></link> to perform the encoding.
+
+<informalexample><screen>
+Compile-time
+------------
+<link linkend="CAIRO-VERSION-STRING:CAPS"><type>CAIRO_VERSION_STRING</type></link> Human-readable
+<link linkend="CAIRO-VERSION:CAPS"><type>CAIRO_VERSION</type></link> Encoded, suitable for comparison
+&nbsp;
+Run-time
+--------
+<link linkend="cairo-version-string"><function>cairo_version_string()</function></link> Human-readable
+<link linkend="cairo-version"><function>cairo_version()</function></link> Encoded, suitable for comparison
+</screen></informalexample>
+
+For example, checking that the cairo version is greater than or equal
+to 1.0.0 could be achieved at compile-time or run-time as follows:
+
+<informalexample><programlisting>
+##if CAIRO_VERSION &gt;= CAIRO_VERSION_ENCODE(1, 0, 0)
+printf ("Compiling with suitable cairo version: %s\n", %CAIRO_VERSION_STRING);
+##endif
+
+if (cairo_version() &gt;= CAIRO_VERSION_ENCODE(1, 0, 0))
+ printf ("Running with suitable cairo version: %s\n", cairo_version_string ());
+</programlisting></informalexample>
+
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Version-Information.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="CAIRO-VERSION-ENCODE:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_VERSION_ENCODE()</title>
+<indexterm zone="CAIRO-VERSION-ENCODE:CAPS" role="1.0"><primary sortas="VERSION_ENCODE">CAIRO_VERSION_ENCODE</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION_ENCODE(major, minor, micro)</programlisting>
+<para>This macro encodes the given cairo version into an integer. The numbers
+returned by <link linkend="CAIRO-VERSION:CAPS"><literal>CAIRO_VERSION</literal></link> and <link linkend="cairo-version"><function>cairo_version()</function></link> are encoded using this macro.
+Two encoded version numbers can be compared as integers. The encoding ensures
+that later versions compare greater than earlier versions.</para>
+<refsect3 id="CAIRO-VERSION-ENCODE.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>major</para></entry>
+<entry role="parameter_description"><para>the major component of the version number</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>minor</para></entry>
+<entry role="parameter_description"><para>the minor component of the version number</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>micro</para></entry>
+<entry role="parameter_description"><para>the micro component of the version number</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="CAIRO-VERSION-ENCODE.returns" role="returns">
+<title>Returns</title>
+<para> the encoded version.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="CAIRO-VERSION-STRINGIZE:CAPS" role="macro" condition="since:1.8">
+<title>CAIRO_VERSION_STRINGIZE()</title>
+<indexterm zone="CAIRO-VERSION-STRINGIZE:CAPS" role="1.8"><primary sortas="VERSION_STRINGIZE">CAIRO_VERSION_STRINGIZE</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION_STRINGIZE(major, minor, micro)</programlisting>
+<para>This macro encodes the given cairo version into an string. The numbers
+returned by <link linkend="CAIRO-VERSION-STRING:CAPS"><literal>CAIRO_VERSION_STRING</literal></link> and <link linkend="cairo-version-string"><function>cairo_version_string()</function></link> are encoded using this macro.
+The parameters to this macro must expand to numerical literals.</para>
+<refsect3 id="CAIRO-VERSION-STRINGIZE.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>major</para></entry>
+<entry role="parameter_description"><para>the major component of the version number</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>minor</para></entry>
+<entry role="parameter_description"><para>the minor component of the version number</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>micro</para></entry>
+<entry role="parameter_description"><para>the micro component of the version number</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="CAIRO-VERSION-STRINGIZE.returns" role="returns">
+<title>Returns</title>
+<para> a string literal containing the version.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+<refsect2 id="cairo-version" role="function" condition="since:1.0">
+<title>cairo_version&#160;()</title>
+<indexterm zone="cairo-version" role="1.0"><primary sortas="version">cairo_version</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_version (<parameter><type>void</type></parameter>);</programlisting>
+<para>Returns the version of the cairo library encoded in a single
+integer as per <link linkend="CAIRO-VERSION-ENCODE:CAPS"><literal>CAIRO_VERSION_ENCODE</literal></link>. The encoding ensures that
+later versions compare greater than earlier versions.</para>
+<para>A run-time comparison to check that cairo's version is greater than
+or equal to version X.Y.Z could be performed as follows:</para>
+<informalexample><programlisting>
+if (cairo_version() &gt;= CAIRO_VERSION_ENCODE(X,Y,Z)) {...}
+</programlisting></informalexample>
+<para>See also <link linkend="cairo-version-string"><function>cairo_version_string()</function></link> as well as the compile-time
+equivalents <link linkend="CAIRO-VERSION:CAPS"><literal>CAIRO_VERSION</literal></link> and <link linkend="CAIRO-VERSION-STRING:CAPS"><literal>CAIRO_VERSION_STRING</literal></link>.</para>
+<refsect3 id="cairo-version.returns" role="returns">
+<title>Returns</title>
+<para> the encoded version.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-version-string" role="function" condition="since:1.0">
+<title>cairo_version_string&#160;()</title>
+<indexterm zone="cairo-version-string" role="1.0"><primary sortas="version_string">cairo_version_string</primary></indexterm>
+<programlisting language="C">const <link linkend="char"><returnvalue>char</returnvalue></link>&#160;*
+cairo_version_string (<parameter><type>void</type></parameter>);</programlisting>
+<para>Returns the version of the cairo library as a human-readable string
+of the form "X.Y.Z".</para>
+<para>See also <link linkend="cairo-version"><function>cairo_version()</function></link> as well as the compile-time equivalents
+<link linkend="CAIRO-VERSION-STRING:CAPS"><literal>CAIRO_VERSION_STRING</literal></link> and <link linkend="CAIRO-VERSION:CAPS"><literal>CAIRO_VERSION</literal></link>.</para>
+<refsect3 id="cairo-version-string.returns" role="returns">
+<title>Returns</title>
+<para> a string containing the version.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Version-Information.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-VERSION:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_VERSION</title>
+<indexterm zone="CAIRO-VERSION:CAPS" role="1.0"><primary sortas="VERSION">CAIRO_VERSION</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION</programlisting>
+<para>The version of cairo available at compile-time, encoded using
+<link linkend="CAIRO-VERSION-ENCODE:CAPS"><function>CAIRO_VERSION_ENCODE()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="CAIRO-VERSION-MAJOR:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_VERSION_MAJOR</title>
+<indexterm zone="CAIRO-VERSION-MAJOR:CAPS" role="1.0"><primary sortas="VERSION_MAJOR">CAIRO_VERSION_MAJOR</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION_MAJOR USE_cairo_version_OR_cairo_version_string_INSTEAD
+</programlisting>
+<para>The major component of the version of cairo available at compile-time.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="CAIRO-VERSION-MINOR:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_VERSION_MINOR</title>
+<indexterm zone="CAIRO-VERSION-MINOR:CAPS" role="1.0"><primary sortas="VERSION_MINOR">CAIRO_VERSION_MINOR</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION_MINOR USE_cairo_version_OR_cairo_version_string_INSTEAD
+</programlisting>
+<para>The minor component of the version of cairo available at compile-time.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="CAIRO-VERSION-MICRO:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_VERSION_MICRO</title>
+<indexterm zone="CAIRO-VERSION-MICRO:CAPS" role="1.0"><primary sortas="VERSION_MICRO">CAIRO_VERSION_MICRO</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION_MICRO USE_cairo_version_OR_cairo_version_string_INSTEAD
+</programlisting>
+<para>The micro component of the version of cairo available at compile-time.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="CAIRO-VERSION-STRING:CAPS" role="macro" condition="since:1.8">
+<title>CAIRO_VERSION_STRING</title>
+<indexterm zone="CAIRO-VERSION-STRING:CAPS" role="1.8"><primary sortas="VERSION_STRING">CAIRO_VERSION_STRING</primary></indexterm>
+<programlisting language="C">#define CAIRO_VERSION_STRING</programlisting>
+<para>A human-readable string literal containing the version of cairo available
+at compile-time, in the form of "X.Y.Z".</para>
+<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-win32-fonts.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-win32-fonts.xml
new file mode 100644
index 0000000..2a2d0e1
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-win32-fonts.xml
@@ -0,0 +1,323 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Win32-Fonts">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Win32-Fonts.top_of_page">Win32 Fonts</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Win32 Fonts</refname>
+<refpurpose>Font support for Microsoft Windows</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Win32-Fonts.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-font-face-create-for-logfontw">cairo_win32_font_face_create_for_logfontw</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-font-face-create-for-hfont">cairo_win32_font_face_create_for_hfont</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-font-face-create-for-logfontw-hfont">cairo_win32_font_face_create_for_logfontw_hfont</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-win32-scaled-font-select-font">cairo_win32_scaled_font_select_font</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-win32-scaled-font-done-font">cairo_win32_scaled_font_done_font</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-win32-scaled-font-get-metrics-factor">cairo_win32_scaled_font_get_metrics_factor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-win32-scaled-font-get-logical-to-device">cairo_win32_scaled_font_get_logical_to_device</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-win32-scaled-font-get-device-to-logical">cairo_win32_scaled_font_get_device_to_logical</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Win32-Fonts.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-WIN32-FONT:CAPS">CAIRO_HAS_WIN32_FONT</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Win32-Fonts.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The Microsoft Windows font backend is primarily used to render text on
+Microsoft Windows systems.</para>
+
+</refsect1>
+<refsect1 id="cairo-Win32-Fonts.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-win32-font-face-create-for-logfontw" role="function" condition="since:1.0">
+<title>cairo_win32_font_face_create_for_logfontw&#160;()</title>
+<indexterm zone="cairo-win32-font-face-create-for-logfontw" role="1.0"><primary sortas="win32_font_face_create_for_logfontw">cairo_win32_font_face_create_for_logfontw</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_win32_font_face_create_for_logfontw
+ (<parameter><link linkend="LOGFONTW:CAPS"><type>LOGFONTW</type></link> *logfont</parameter>);</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-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>.
+The <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+returned from <link linkend="cairo-scaled-font-create"><function>cairo_scaled_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>
+<refsect3 id="cairo-win32-font-face-create-for-logfontw.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>logfont</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-font-face-create-for-logfontw.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-win32-font-face-create-for-hfont" role="function" condition="since:1.2">
+<title>cairo_win32_font_face_create_for_hfont&#160;()</title>
+<indexterm zone="cairo-win32-font-face-create-for-hfont" role="1.2"><primary sortas="win32_font_face_create_for_hfont">cairo_win32_font_face_create_for_hfont</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_win32_font_face_create_for_hfont
+ (<parameter><link linkend="HFONT:CAPS"><type>HFONT</type></link> font</parameter>);</programlisting>
+<para>Creates a new font for the Win32 font backend based on a
+<link linkend="HFONT:CAPS"><type>HFONT</type></link>. This font can then be used with
+<link linkend="cairo-set-font-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>.
+The <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+returned from <link linkend="cairo-scaled-font-create"><function>cairo_scaled_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>
+<refsect3 id="cairo-win32-font-face-create-for-hfont.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>font</para></entry>
+<entry role="parameter_description"><para>An <link linkend="HFONT:CAPS"><type>HFONT</type></link> structure specifying the font to use.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-font-face-create-for-hfont.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-win32-font-face-create-for-logfontw-hfont" role="function" condition="since:1.6">
+<title>cairo_win32_font_face_create_for_logfontw_hfont&#160;()</title>
+<indexterm zone="cairo-win32-font-face-create-for-logfontw-hfont" role="1.6"><primary sortas="win32_font_face_create_for_logfontw_hfont">cairo_win32_font_face_create_for_logfontw_hfont</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-font-face-t"><returnvalue>cairo_font_face_t</returnvalue></link>&#160;*
+cairo_win32_font_face_create_for_logfontw_hfont
+ (<parameter><link linkend="LOGFONTW:CAPS"><type>LOGFONTW</type></link> *logfont</parameter>,
+ <parameter><link linkend="HFONT:CAPS"><type>HFONT</type></link> font</parameter>);</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-face"><function>cairo_set_font_face()</function></link> or <link linkend="cairo-scaled-font-create"><function>cairo_scaled_font_create()</function></link>.
+The <link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link>
+returned from <link linkend="cairo-scaled-font-create"><function>cairo_scaled_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>
+<refsect3 id="cairo-win32-font-face-create-for-logfontw-hfont.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>logfont</para></entry>
+<entry role="parameter_description"><para>A <link linkend="LOGFONTW:CAPS"><type>LOGFONTW</type></link> structure specifying the font to use.
+If <parameter>font</parameter>
+is <link linkend="NULL:CAPS"><literal>NULL</literal></link> then the lfHeight, lfWidth, lfOrientation and lfEscapement
+fields of this structure are ignored. Otherwise lfWidth, lfOrientation and
+lfEscapement must be zero.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>font</para></entry>
+<entry role="parameter_description"><para>An <link linkend="HFONT:CAPS"><type>HFONT</type></link> that can be used when the font matrix is a scale by
+-lfHeight and the CTM is identity.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-font-face-create-for-logfontw-hfont.returns" role="returns">
+<title>Returns</title>
+<para> 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.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-win32-scaled-font-select-font" role="function" condition="since:1.0">
+<title>cairo_win32_scaled_font_select_font&#160;()</title>
+<indexterm zone="cairo-win32-scaled-font-select-font" role="1.0"><primary sortas="win32_scaled_font_select_font">cairo_win32_scaled_font_select_font</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_win32_scaled_font_select_font (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="HDC:CAPS"><type>HDC</type></link> hdc</parameter>);</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-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-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>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>
+<refsect3 id="cairo-win32-scaled-font-select-font.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>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-font-face-create-for-logfontw"><function>cairo_win32_font_face_create_for_logfontw()</function></link>.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>hdc</para></entry>
+<entry role="parameter_description"><para>a device context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-scaled-font-select-font.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> if the operation succeeded.
+otherwise an error such as <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> and
+the device context is unchanged.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-win32-scaled-font-done-font" role="function" condition="since:1.0">
+<title>cairo_win32_scaled_font_done_font&#160;()</title>
+<indexterm zone="cairo-win32-scaled-font-done-font" role="1.0"><primary sortas="win32_scaled_font_done_font">cairo_win32_scaled_font_done_font</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_win32_scaled_font_done_font (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Releases any resources allocated by <link linkend="cairo-win32-scaled-font-select-font"><function>cairo_win32_scaled_font_select_font()</function></link></para>
+<refsect3 id="cairo-win32-scaled-font-done-font.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>A scaled font from the Win32 font backend.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-win32-scaled-font-get-metrics-factor" role="function" condition="since:1.0">
+<title>cairo_win32_scaled_font_get_metrics_factor&#160;()</title>
+<indexterm zone="cairo-win32-scaled-font-get-metrics-factor" role="1.0"><primary sortas="win32_scaled_font_get_metrics_factor">cairo_win32_scaled_font_get_metrics_factor</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_win32_scaled_font_get_metrics_factor
+ (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>);</programlisting>
+<para>Gets a scale factor between logical coordinates in the coordinate
+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>
+<refsect3 id="cairo-win32-scaled-font-get-metrics-factor.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a scaled font from the Win32 font backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-scaled-font-get-metrics-factor.returns" role="returns">
+<title>Returns</title>
+<para> factor to multiply logical units by to get font space
+coordinates.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-win32-scaled-font-get-logical-to-device" role="function" condition="since:1.4">
+<title>cairo_win32_scaled_font_get_logical_to_device&#160;()</title>
+<indexterm zone="cairo-win32-scaled-font-get-logical-to-device" role="1.4"><primary sortas="win32_scaled_font_get_logical_to_device">cairo_win32_scaled_font_get_logical_to_device</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_win32_scaled_font_get_logical_to_device
+ (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *logical_to_device</parameter>);</programlisting>
+<para>Gets the transformation mapping the logical space used by <parameter>scaled_font</parameter>
+
+to device space.</para>
+<refsect3 id="cairo-win32-scaled-font-get-logical-to-device.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a scaled font from the Win32 font backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>logical_to_device</para></entry>
+<entry role="parameter_description"><para>matrix to return</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-win32-scaled-font-get-device-to-logical" role="function" condition="since:1.4">
+<title>cairo_win32_scaled_font_get_device_to_logical&#160;()</title>
+<indexterm zone="cairo-win32-scaled-font-get-device-to-logical" role="1.4"><primary sortas="win32_scaled_font_get_device_to_logical">cairo_win32_scaled_font_get_device_to_logical</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_win32_scaled_font_get_device_to_logical
+ (<parameter><link linkend="cairo-scaled-font-t"><type>cairo_scaled_font_t</type></link> *scaled_font</parameter>,
+ <parameter><link linkend="cairo-matrix-t"><type>cairo_matrix_t</type></link> *device_to_logical</parameter>);</programlisting>
+<para>Gets the transformation mapping device space to the logical space
+used by <parameter>scaled_font</parameter>
+.</para>
+<refsect3 id="cairo-win32-scaled-font-get-device-to-logical.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>scaled_font</para></entry>
+<entry role="parameter_description"><para>a scaled font from the Win32 font backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>device_to_logical</para></entry>
+<entry role="parameter_description"><para>matrix to return</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Win32-Fonts.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-WIN32-FONT:CAPS" role="macro" condition="since:1.8">
+<title>CAIRO_HAS_WIN32_FONT</title>
+<indexterm zone="CAIRO-HAS-WIN32-FONT:CAPS" role="1.8"><primary sortas="HAS_WIN32_FONT">CAIRO_HAS_WIN32_FONT</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_WIN32_FONT 1
+</programlisting>
+<para>Defined if the Microsoft Windows font backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.8">1.8</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Win32-Fonts.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-font-face-t"><type>cairo_font_face_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-win32.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-win32.xml
new file mode 100644
index 0000000..52b7a71
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-win32.xml
@@ -0,0 +1,306 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-Win32-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-Win32-Surfaces.top_of_page">Win32 Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>Win32 Surfaces</refname>
+<refpurpose>Microsoft Windows surface support</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-Win32-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-surface-create">cairo_win32_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-surface-create-with-dib">cairo_win32_surface_create_with_dib</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-surface-create-with-ddb">cairo_win32_surface_create_with_ddb</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-surface-create-with-format">cairo_win32_surface_create_with_format</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-printing-surface-create">cairo_win32_printing_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="HDC:CAPS"><returnvalue>HDC</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-win32-surface-get-dc">cairo_win32_surface_get_dc</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-win32-surface-get-image">cairo_win32_surface_get_image</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-Win32-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-WIN32-SURFACE:CAPS">CAIRO_HAS_WIN32_SURFACE</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-Win32-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The Microsoft Windows surface is used to render cairo graphics to
+Microsoft Windows windows, bitmaps, and printing device contexts.</para>
+<para>The surface returned by <link linkend="cairo-win32-printing-surface-create"><function>cairo_win32_printing_surface_create()</function></link> is of surface
+type <link linkend="CAIRO-SURFACE-TYPE-WIN32-PRINTING:CAPS"><literal>CAIRO_SURFACE_TYPE_WIN32_PRINTING</literal></link> and is a multi-page vector surface
+type.</para>
+<para>The surface returned by the other win32 constructors is of surface type
+<link linkend="CAIRO-SURFACE-TYPE-WIN32:CAPS"><literal>CAIRO_SURFACE_TYPE_WIN32</literal></link> and is a raster surface type.</para>
+
+</refsect1>
+<refsect1 id="cairo-Win32-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-win32-surface-create" role="function" condition="since:1.0">
+<title>cairo_win32_surface_create&#160;()</title>
+<indexterm zone="cairo-win32-surface-create" role="1.0"><primary sortas="win32_surface_create">cairo_win32_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_win32_surface_create (<parameter><link linkend="HDC:CAPS"><type>HDC</type></link> hdc</parameter>);</programlisting>
+<para>Creates a cairo surface that targets the given DC. The DC will be
+queried for its initial clip extents, and this will be used as the
+size of the cairo surface. The resulting surface will always be of
+format <link linkend="CAIRO-FORMAT-RGB24:CAPS"><literal>CAIRO_FORMAT_RGB24</literal></link>; should you need another surface format,
+you will need to create one through
+<link linkend="cairo-win32-surface-create-with-format"><function>cairo_win32_surface_create_with_format()</function></link> or
+<link linkend="cairo-win32-surface-create-with-dib"><function>cairo_win32_surface_create_with_dib()</function></link>.</para>
+<refsect3 id="cairo-win32-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>hdc</para></entry>
+<entry role="parameter_description"><para>the DC to create a surface for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface, NULL on failure</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-win32-surface-create-with-dib" role="function" condition="since:1.2">
+<title>cairo_win32_surface_create_with_dib&#160;()</title>
+<indexterm zone="cairo-win32-surface-create-with-dib" role="1.2"><primary sortas="win32_surface_create_with_dib">cairo_win32_surface_create_with_dib</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_win32_surface_create_with_dib (<parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates a device-independent-bitmap surface not associated with
+any particular existing surface or device context. The created
+bitmap will be uninitialized.</para>
+<refsect3 id="cairo-win32-surface-create-with-dib.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>format of pixels in the surface to create</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-surface-create-with-dib.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-win32-surface-create-with-ddb" role="function" condition="since:1.4">
+<title>cairo_win32_surface_create_with_ddb&#160;()</title>
+<indexterm zone="cairo-win32-surface-create-with-ddb" role="1.4"><primary sortas="win32_surface_create_with_ddb">cairo_win32_surface_create_with_ddb</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_win32_surface_create_with_ddb (<parameter><link linkend="HDC:CAPS"><type>HDC</type></link> hdc</parameter>,
+ <parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates a device-dependent-bitmap surface not associated with
+any particular existing surface or device context. The created
+bitmap will be uninitialized.</para>
+<refsect3 id="cairo-win32-surface-create-with-ddb.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>hdc</para></entry>
+<entry role="parameter_description"><para>a DC compatible with the surface to create</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>format of pixels in the surface to create</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-surface-create-with-ddb.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-win32-surface-create-with-format" role="function" condition="since:1.14">
+<title>cairo_win32_surface_create_with_format&#160;()</title>
+<indexterm zone="cairo-win32-surface-create-with-format" role="1.14"><primary sortas="win32_surface_create_with_format">cairo_win32_surface_create_with_format</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_win32_surface_create_with_format
+ (<parameter><link linkend="HDC:CAPS"><type>HDC</type></link> hdc</parameter>,
+ <parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>);</programlisting>
+<para>Creates a cairo surface that targets the given DC. The DC will be
+queried for its initial clip extents, and this will be used as the
+size of the cairo surface.</para>
+<para>Supported formats are:
+<link linkend="CAIRO-FORMAT-ARGB32:CAPS"><literal>CAIRO_FORMAT_ARGB32</literal></link>
+<link linkend="CAIRO-FORMAT-RGB24:CAPS"><literal>CAIRO_FORMAT_RGB24</literal></link></para>
+<para>Note: <parameter>format</parameter>
+ only tells cairo how to draw on the surface, not what
+the format of the surface is. Namely, cairo does not (and cannot)
+check that <parameter>hdc</parameter>
+ actually supports alpha-transparency.</para>
+<refsect3 id="cairo-win32-surface-create-with-format.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>hdc</para></entry>
+<entry role="parameter_description"><para>the DC to create a surface for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>format of pixels in the surface to create</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-surface-create-with-format.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface, NULL on failure</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.14">1.14</link></para></refsect2>
+<refsect2 id="cairo-win32-printing-surface-create" role="function" condition="since:1.6">
+<title>cairo_win32_printing_surface_create&#160;()</title>
+<indexterm zone="cairo-win32-printing-surface-create" role="1.6"><primary sortas="win32_printing_surface_create">cairo_win32_printing_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_win32_printing_surface_create (<parameter><link linkend="HDC:CAPS"><type>HDC</type></link> hdc</parameter>);</programlisting>
+<para>Creates a cairo surface that targets the given DC. The DC will be
+queried for its initial clip extents, and this will be used as the
+size of the cairo surface. The DC should be a printing DC;
+antialiasing will be ignored, and GDI will be used as much as
+possible to draw to the surface.</para>
+<para>The returned surface will be wrapped using the paginated surface to
+provide correct complex rendering behaviour; <link linkend="cairo-surface-show-page"><function>cairo_surface_show_page()</function></link> and
+associated methods must be used for correct output.</para>
+<refsect3 id="cairo-win32-printing-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>hdc</para></entry>
+<entry role="parameter_description"><para>the DC to create a surface for</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-printing-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+<refsect2 id="cairo-win32-surface-get-dc" role="function" condition="since:1.2">
+<title>cairo_win32_surface_get_dc&#160;()</title>
+<indexterm zone="cairo-win32-surface-get-dc" role="1.2"><primary sortas="win32_surface_get_dc">cairo_win32_surface_get_dc</primary></indexterm>
+<programlisting language="C"><link linkend="HDC:CAPS"><returnvalue>HDC</returnvalue></link>
+cairo_win32_surface_get_dc (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Returns the HDC associated with this surface, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if none.
+Also returns <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the surface is not a win32 surface.</para>
+<para>A call to <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> is required before using the HDC to
+ensure that all pending drawing operations are finished and to
+restore any temporary modification cairo has made to its state. A
+call to <link linkend="cairo-surface-mark-dirty"><function>cairo_surface_mark_dirty()</function></link> is required after the state or
+the content of the HDC has been modified.</para>
+<refsect3 id="cairo-win32-surface-get-dc.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-surface-get-dc.returns" role="returns">
+<title>Returns</title>
+<para> HDC or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if no HDC available.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-win32-surface-get-image" role="function" condition="since:1.4">
+<title>cairo_win32_surface_get_image&#160;()</title>
+<indexterm zone="cairo-win32-surface-get-image" role="1.4"><primary sortas="win32_surface_get_image">cairo_win32_surface_get_image</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_win32_surface_get_image (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Returns a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> image surface that refers to the same bits
+as the DIB of the Win32 surface. If the passed-in win32 surface
+is not a DIB surface, <link linkend="NULL:CAPS"><literal>NULL</literal></link> is returned.</para>
+<refsect3 id="cairo-win32-surface-get-image.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-win32-surface-get-image.returns" role="returns">
+<title>Returns</title>
+<para> a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> (owned by the win32 <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link>),
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the win32 surface is not a DIB.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Win32-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-WIN32-SURFACE:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_HAS_WIN32_SURFACE</title>
+<indexterm zone="CAIRO-HAS-WIN32-SURFACE:CAPS" role="1.0"><primary sortas="HAS_WIN32_SURFACE">CAIRO_HAS_WIN32_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_WIN32_SURFACE 1
+</programlisting>
+<para>Defined if the Microsoft Windows surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-Win32-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-xcb.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-xcb.xml
new file mode 100644
index 0000000..5c23f62
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-xcb.xml
@@ -0,0 +1,474 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-XCB-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-XCB-Surfaces.top_of_page">XCB Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XCB Surfaces</refname>
+<refpurpose>X Window System rendering using the XCB library</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-XCB-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xcb-surface-create">cairo_xcb_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xcb-surface-create-for-bitmap">cairo_xcb_surface_create_for_bitmap</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xcb-surface-create-with-xrender-format">cairo_xcb_surface_create_with_xrender_format</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xcb-surface-set-size">cairo_xcb_surface_set_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xcb-surface-set-drawable">cairo_xcb_surface_set_drawable</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="xcb-connection-t"><returnvalue>xcb_connection_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xcb-device-get-connection">cairo_xcb_device_get_connection</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xcb-device-debug-cap-xrender-version">cairo_xcb_device_debug_cap_xrender_version</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xcb-device-debug-cap-xshm-version">cairo_xcb_device_debug_cap_xshm_version</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xcb-device-debug-get-precision">cairo_xcb_device_debug_get_precision</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xcb-device-debug-set-precision">cairo_xcb_device_debug_set_precision</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-XCB-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-XCB-SURFACE:CAPS">CAIRO_HAS_XCB_SURFACE</link></entry></row>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-XCB-SHM-FUNCTIONS:CAPS">CAIRO_HAS_XCB_SHM_FUNCTIONS</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-XCB-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The XCB surface is used to render cairo graphics to X Window System
+windows and pixmaps using the XCB library.</para>
+<para>Note that the XCB surface automatically takes advantage of the X render
+extension if it is available.</para>
+
+</refsect1>
+<refsect1 id="cairo-XCB-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-xcb-surface-create" role="function" condition="since:1.12">
+<title>cairo_xcb_surface_create&#160;()</title>
+<indexterm zone="cairo-xcb-surface-create" role="1.12"><primary sortas="xcb_surface_create">cairo_xcb_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_xcb_surface_create (<parameter><link linkend="xcb-connection-t"><type>xcb_connection_t</type></link> *connection</parameter>,
+ <parameter><link linkend="xcb-drawable-t"><type>xcb_drawable_t</type></link> drawable</parameter>,
+ <parameter><link linkend="xcb-visualtype-t"><type>xcb_visualtype_t</type></link> *visual</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</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
+<link linkend="cairo-xcb-surface-set-size"><function>cairo_xcb_surface_set_size()</function></link> must be called whenever the size of the
+window changes.</para>
+<para>When <parameter>drawable</parameter>
+ is a Window containing child windows then drawing to
+the created surface will be clipped by those child windows. When
+the created surface is used as a source, the contents of the
+children will be included.</para>
+<refsect3 id="cairo-xcb-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>connection</para></entry>
+<entry role="parameter_description"><para>an XCB connection</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>drawable</para></entry>
+<entry role="parameter_description"><para>an XCB drawable</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>visual</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the current width of <parameter>drawable</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the current height of <parameter>drawable</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xcb-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-surface-create-for-bitmap" role="function" condition="since:1.12">
+<title>cairo_xcb_surface_create_for_bitmap&#160;()</title>
+<indexterm zone="cairo-xcb-surface-create-for-bitmap" role="1.12"><primary sortas="xcb_surface_create_for_bitmap">cairo_xcb_surface_create_for_bitmap</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_xcb_surface_create_for_bitmap (<parameter><link linkend="xcb-connection-t"><type>xcb_connection_t</type></link> *connection</parameter>,
+ <parameter><link linkend="xcb-screen-t"><type>xcb_screen_t</type></link> *screen</parameter>,
+ <parameter><link linkend="xcb-pixmap-t"><type>xcb_pixmap_t</type></link> bitmap</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates an XCB surface that draws to the given bitmap.
+This will be drawn to as a <link linkend="CAIRO-FORMAT-A1:CAPS"><literal>CAIRO_FORMAT_A1</literal></link> object.</para>
+<refsect3 id="cairo-xcb-surface-create-for-bitmap.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>connection</para></entry>
+<entry role="parameter_description"><para>an XCB connection</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>screen</para></entry>
+<entry role="parameter_description"><para>the XCB screen associated with <parameter>bitmap</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>bitmap</para></entry>
+<entry role="parameter_description"><para>an XCB drawable (a Pixmap with depth 1)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the current width of <parameter>bitmap</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the current height of <parameter>bitmap</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xcb-surface-create-for-bitmap.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-surface-create-with-xrender-format" role="function" condition="since:1.12">
+<title>cairo_xcb_surface_create_with_xrender_format&#160;()</title>
+<indexterm zone="cairo-xcb-surface-create-with-xrender-format" role="1.12"><primary sortas="xcb_surface_create_with_xrender_format">cairo_xcb_surface_create_with_xrender_format</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_xcb_surface_create_with_xrender_format
+ (<parameter><link linkend="xcb-connection-t"><type>xcb_connection_t</type></link> *connection</parameter>,
+ <parameter><link linkend="xcb-screen-t"><type>xcb_screen_t</type></link> *screen</parameter>,
+ <parameter><link linkend="xcb-drawable-t"><type>xcb_drawable_t</type></link> drawable</parameter>,
+ <parameter><link linkend="xcb-render-pictforminfo-t"><type>xcb_render_pictforminfo_t</type></link> *format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</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
+<link linkend="cairo-xcb-surface-set-size"><function>cairo_xcb_surface_set_size()</function></link> must be called whenever the size of the
+window changes.</para>
+<para>When <parameter>drawable</parameter>
+ is a Window containing child windows then drawing to
+the created surface will be clipped by those child windows. When
+the created surface is used as a source, the contents of the
+children will be included.</para>
+<refsect3 id="cairo-xcb-surface-create-with-xrender-format.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>connection</para></entry>
+<entry role="parameter_description"><para>an XCB connection</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>drawable</para></entry>
+<entry role="parameter_description"><para>an XCB drawable</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>screen</para></entry>
+<entry role="parameter_description"><para>the XCB screen associated with <parameter>drawable</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>the picture format to use for drawing to <parameter>drawable</parameter>
+. The
+depth of <parameter>format</parameter>
+mush match the depth of the drawable.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the current width of <parameter>drawable</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the current height of <parameter>drawable</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xcb-surface-create-with-xrender-format.returns" role="returns">
+<title>Returns</title>
+<para> a pointer to the newly created surface. The caller
+owns the surface and should call <link linkend="cairo-surface-destroy"><function>cairo_surface_destroy()</function></link> when done
+with it.</para>
+<para>This function always returns a valid pointer, but it will return a
+pointer to a "nil" surface if an error such as out of memory
+occurs. You can use <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link> to check for this.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-surface-set-size" role="function" condition="since:1.12">
+<title>cairo_xcb_surface_set_size&#160;()</title>
+<indexterm zone="cairo-xcb-surface-set-size" role="1.12"><primary sortas="xcb_surface_set_size">cairo_xcb_surface_set_size</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xcb_surface_set_size (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</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>If <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> wasn't called, some pending operations
+might be discarded.</para>
+<refsect3 id="cairo-xcb-surface-set-size.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the new width of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the new height of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-surface-set-drawable" role="function" condition="since:1.12">
+<title>cairo_xcb_surface_set_drawable&#160;()</title>
+<indexterm zone="cairo-xcb-surface-set-drawable" role="1.12"><primary sortas="xcb_surface_set_drawable">cairo_xcb_surface_set_drawable</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xcb_surface_set_drawable (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="xcb-drawable-t"><type>xcb_drawable_t</type></link> drawable</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Informs cairo of the new drawable and size of the XCB drawable underlying the
+surface.</para>
+<para>If <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> wasn't called, some pending operations
+might be discarded.</para>
+<refsect3 id="cairo-xcb-surface-set-drawable.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>drawable</para></entry>
+<entry role="parameter_description"><para>the new drawable of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the new width of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the new height of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-device-get-connection" role="function" condition="since:1.12">
+<title>cairo_xcb_device_get_connection&#160;()</title>
+<indexterm zone="cairo-xcb-device-get-connection" role="1.12"><primary sortas="xcb_device_get_connection">cairo_xcb_device_get_connection</primary></indexterm>
+<programlisting language="C"><link linkend="xcb-connection-t"><returnvalue>xcb_connection_t</returnvalue></link>&#160;*
+cairo_xcb_device_get_connection (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Get the connection for the XCB device.</para>
+<refsect3 id="cairo-xcb-device-get-connection.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xcb-device-get-connection.returns" role="returns">
+<title>Returns</title>
+<para> the <link linkend="xcb-connection-t"><type>xcb_connection_t</type></link> for the connection</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-device-debug-cap-xrender-version" role="function" condition="since:1.12">
+<title>cairo_xcb_device_debug_cap_xrender_version&#160;()</title>
+<indexterm zone="cairo-xcb-device-debug-cap-xrender-version" role="1.12"><primary sortas="xcb_device_debug_cap_xrender_version">cairo_xcb_device_debug_cap_xrender_version</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xcb_device_debug_cap_xrender_version
+ (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> major_version</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> minor_version</parameter>);</programlisting>
+<para>Restricts all future XCB surfaces for this devices to the specified version
+of the RENDER extension. This function exists solely for debugging purpose.
+It let's you find out how cairo would behave with an older version of
+the RENDER extension.</para>
+<para>Use the special values -1 and -1 for disabling the RENDER extension.</para>
+<refsect3 id="cairo-xcb-device-debug-cap-xrender-version.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>major_version</para></entry>
+<entry role="parameter_description"><para>major version to restrict to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>minor_version</para></entry>
+<entry role="parameter_description"><para>minor version to restrict to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-device-debug-cap-xshm-version" role="function" condition="since:1.12">
+<title>cairo_xcb_device_debug_cap_xshm_version&#160;()</title>
+<indexterm zone="cairo-xcb-device-debug-cap-xshm-version" role="1.12"><primary sortas="xcb_device_debug_cap_xshm_version">cairo_xcb_device_debug_cap_xshm_version</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xcb_device_debug_cap_xshm_version
+ (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> major_version</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> minor_version</parameter>);</programlisting>
+<para>Restricts all future XCB surfaces for this devices to the specified version
+of the SHM extension. This function exists solely for debugging purpose.
+It let's you find out how cairo would behave with an older version of
+the SHM extension.</para>
+<para>Use the special values -1 and -1 for disabling the SHM extension.</para>
+<refsect3 id="cairo-xcb-device-debug-cap-xshm-version.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>major_version</para></entry>
+<entry role="parameter_description"><para>major version to restrict to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>minor_version</para></entry>
+<entry role="parameter_description"><para>minor version to restrict to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-device-debug-get-precision" role="function" condition="since:1.12">
+<title>cairo_xcb_device_debug_get_precision&#160;()</title>
+<indexterm zone="cairo-xcb-device-debug-get-precision" role="1.12"><primary sortas="xcb_device_debug_get_precision">cairo_xcb_device_debug_get_precision</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_xcb_device_debug_get_precision (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Get the Xrender precision mode.</para>
+<refsect3 id="cairo-xcb-device-debug-get-precision.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xcb-device-debug-get-precision.returns" role="returns">
+<title>Returns</title>
+<para> the render precision mode</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xcb-device-debug-set-precision" role="function" condition="since:1.12">
+<title>cairo_xcb_device_debug_set_precision&#160;()</title>
+<indexterm zone="cairo-xcb-device-debug-set-precision" role="1.12"><primary sortas="xcb_device_debug_set_precision">cairo_xcb_device_debug_set_precision</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xcb_device_debug_set_precision (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> precision</parameter>);</programlisting>
+<para>Render supports two modes of precision when rendering trapezoids. Set
+the precision to the desired mode.</para>
+<refsect3 id="cairo-xcb-device-debug-set-precision.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the XCB backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>precision</para></entry>
+<entry role="parameter_description"><para>the precision to use</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-XCB-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-XCB-SURFACE:CAPS" role="macro" condition="since:1.12">
+<title>CAIRO_HAS_XCB_SURFACE</title>
+<indexterm zone="CAIRO-HAS-XCB-SURFACE:CAPS" role="1.12"><primary sortas="HAS_XCB_SURFACE">CAIRO_HAS_XCB_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_XCB_SURFACE 1
+</programlisting>
+<para>Defined if the xcb surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="CAIRO-HAS-XCB-SHM-FUNCTIONS:CAPS" role="macro">
+<title>CAIRO_HAS_XCB_SHM_FUNCTIONS</title>
+<indexterm zone="CAIRO-HAS-XCB-SHM-FUNCTIONS:CAPS"><primary sortas="HAS_XCB_SHM_FUNCTIONS">CAIRO_HAS_XCB_SHM_FUNCTIONS</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_XCB_SHM_FUNCTIONS 1
+</programlisting>
+</refsect2>
+
+</refsect1>
+<refsect1 id="cairo-XCB-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-xlib-xrender.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-xlib-xrender.xml
new file mode 100644
index 0000000..2f7c6ce
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-xlib-xrender.xml
@@ -0,0 +1,162 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-XLib-XRender-Backend">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-XLib-XRender-Backend.top_of_page">XLib-XRender Backend</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XLib-XRender Backend</refname>
+<refpurpose>X Window System rendering using XLib and the X Render extension</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-XLib-XRender-Backend.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-create-with-xrender-format">cairo_xlib_surface_create_with_xrender_format</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="XRenderPictFormat"><returnvalue>XRenderPictFormat</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-xrender-format">cairo_xlib_surface_get_xrender_format</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-XLib-XRender-Backend.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS">CAIRO_HAS_XLIB_XRENDER_SURFACE</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-XLib-XRender-Backend.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The XLib surface is used to render cairo graphics to X Window System
+windows and pixmaps using the XLib and Xrender libraries.</para>
+<para>Note that the XLib surface automatically takes advantage of X Render extension
+if it is available.</para>
+
+</refsect1>
+<refsect1 id="cairo-XLib-XRender-Backend.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-xlib-surface-create-with-xrender-format" role="function" condition="since:1.0">
+<title>cairo_xlib_surface_create_with_xrender_format&#160;()</title>
+<indexterm zone="cairo-xlib-surface-create-with-xrender-format" role="1.0"><primary sortas="xlib_surface_create_with_xrender_format">cairo_xlib_surface_create_with_xrender_format</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_xlib_surface_create_with_xrender_format
+ (<parameter><link linkend="Display"><type>Display</type></link> *dpy</parameter>,
+ <parameter><link linkend="Drawable"><type>Drawable</type></link> drawable</parameter>,
+ <parameter><link linkend="Screen"><type>Screen</type></link> *screen</parameter>,
+ <parameter><link linkend="XRenderPictFormat"><type>XRenderPictFormat</type></link> *format</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</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
+<link linkend="cairo-xlib-surface-set-size"><function>cairo_xlib_surface_set_size()</function></link> must be called whenever the size of the
+window changes.</para>
+<refsect3 id="cairo-xlib-surface-create-with-xrender-format.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dpy</para></entry>
+<entry role="parameter_description"><para>an X Display</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>drawable</para></entry>
+<entry role="parameter_description"><para>an X Drawable, (a Pixmap or a Window)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>screen</para></entry>
+<entry role="parameter_description"><para>the X Screen associated with <parameter>drawable</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>format</para></entry>
+<entry role="parameter_description"><para>the picture format to use for drawing to <parameter>drawable</parameter>
+. The depth
+of <parameter>format</parameter>
+must match the depth of the drawable.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the current width of <parameter>drawable</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the current height of <parameter>drawable</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-create-with-xrender-format.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-xrender-format" role="function" condition="since:1.6">
+<title>cairo_xlib_surface_get_xrender_format&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-xrender-format" role="1.6"><primary sortas="xlib_surface_get_xrender_format">cairo_xlib_surface_get_xrender_format</primary></indexterm>
+<programlisting language="C"><link linkend="XRenderPictFormat"><returnvalue>XRenderPictFormat</returnvalue></link>&#160;*
+cairo_xlib_surface_get_xrender_format (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Gets the X Render picture format that <parameter>surface</parameter>
+ uses for rendering with the
+X Render extension. If the surface was created by
+<link linkend="cairo-xlib-surface-create-with-xrender-format"><function>cairo_xlib_surface_create_with_xrender_format()</function></link> originally, the return
+value is the format passed to that constructor.</para>
+<refsect3 id="cairo-xlib-surface-get-xrender-format.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>an xlib surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-xrender-format.returns" role="returns">
+<title>Returns</title>
+<para> the XRenderPictFormat* associated with <parameter>surface</parameter>
+,
+or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the surface is not an xlib surface
+or if the X Render extension is not available.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-XLib-XRender-Backend.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS" role="macro" condition="since:1.6">
+<title>CAIRO_HAS_XLIB_XRENDER_SURFACE</title>
+<indexterm zone="CAIRO-HAS-XLIB-XRENDER-SURFACE:CAPS" role="1.6"><primary sortas="HAS_XLIB_XRENDER_SURFACE">CAIRO_HAS_XLIB_XRENDER_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1
+</programlisting>
+<para>Defined if the XLib/XRender surface functions are available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-XLib-XRender-Backend.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo-xlib.xml b/libs/cairo-1.16.0/doc/public/xml/cairo-xlib.xml
new file mode 100644
index 0000000..77d0702
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo-xlib.xml
@@ -0,0 +1,507 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-XLib-Surfaces">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-XLib-Surfaces.top_of_page">XLib Surfaces</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>XLib Surfaces</refname>
+<refpurpose>X Window System rendering using XLib</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-XLib-Surfaces.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-create">cairo_xlib_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-create-for-bitmap">cairo_xlib_surface_create_for_bitmap</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-set-size">cairo_xlib_surface_set_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="Display"><returnvalue>Display</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-display">cairo_xlib_surface_get_display</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="Screen"><returnvalue>Screen</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-screen">cairo_xlib_surface_get_screen</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-set-drawable">cairo_xlib_surface_set_drawable</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="Drawable"><returnvalue>Drawable</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-drawable">cairo_xlib_surface_get_drawable</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="Visual"><returnvalue>Visual</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-visual">cairo_xlib_surface_get_visual</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-width">cairo_xlib_surface_get_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-height">cairo_xlib_surface_get_height</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-surface-get-depth">cairo_xlib_surface_get_depth</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-device-debug-cap-xrender-version">cairo_xlib_device_debug_cap_xrender_version</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-device-debug-get-precision">cairo_xlib_device_debug_get_precision</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-xlib-device-debug-set-precision">cairo_xlib_device_debug_set_precision</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-XLib-Surfaces.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-XLIB-SURFACE:CAPS">CAIRO_HAS_XLIB_SURFACE</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-XLib-Surfaces.description" role="desc">
+<title role="desc.title">Description</title>
+<para>The XLib surface is used to render cairo graphics to X Window System
+windows and pixmaps using the XLib library.</para>
+<para>Note that the XLib surface automatically takes advantage of X render extension
+if it is available.</para>
+
+</refsect1>
+<refsect1 id="cairo-XLib-Surfaces.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-xlib-surface-create" role="function" condition="since:1.0">
+<title>cairo_xlib_surface_create&#160;()</title>
+<indexterm zone="cairo-xlib-surface-create" role="1.0"><primary sortas="xlib_surface_create">cairo_xlib_surface_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_xlib_surface_create (<parameter><link linkend="Display"><type>Display</type></link> *dpy</parameter>,
+ <parameter><link linkend="Drawable"><type>Drawable</type></link> drawable</parameter>,
+ <parameter><link linkend="Visual"><type>Visual</type></link> *visual</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</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 visual.</para>
+<para>Note: If <parameter>drawable</parameter>
+ is a Window, then the function
+<link linkend="cairo-xlib-surface-set-size"><function>cairo_xlib_surface_set_size()</function></link> must be called whenever the size of the
+window changes.</para>
+<para>When <parameter>drawable</parameter>
+ is a Window containing child windows then drawing to
+the created surface will be clipped by those child windows. When
+the created surface is used as a source, the contents of the
+children will be included.</para>
+<refsect3 id="cairo-xlib-surface-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dpy</para></entry>
+<entry role="parameter_description"><para>an X Display</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>drawable</para></entry>
+<entry role="parameter_description"><para>an X Drawable, (a Pixmap or a Window)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>visual</para></entry>
+<entry role="parameter_description"><para>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.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the current width of <parameter>drawable</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the current height of <parameter>drawable</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-create.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-create-for-bitmap" role="function" condition="since:1.0">
+<title>cairo_xlib_surface_create_for_bitmap&#160;()</title>
+<indexterm zone="cairo-xlib-surface-create-for-bitmap" role="1.0"><primary sortas="xlib_surface_create_for_bitmap">cairo_xlib_surface_create_for_bitmap</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_xlib_surface_create_for_bitmap (<parameter><link linkend="Display"><type>Display</type></link> *dpy</parameter>,
+ <parameter><link linkend="Pixmap"><type>Pixmap</type></link> bitmap</parameter>,
+ <parameter><link linkend="Screen"><type>Screen</type></link> *screen</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Creates an Xlib surface that draws to the given bitmap.
+This will be drawn to as a <link linkend="CAIRO-FORMAT-A1:CAPS"><literal>CAIRO_FORMAT_A1</literal></link> object.</para>
+<refsect3 id="cairo-xlib-surface-create-for-bitmap.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>dpy</para></entry>
+<entry role="parameter_description"><para>an X Display</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>bitmap</para></entry>
+<entry role="parameter_description"><para>an X Drawable, (a depth-1 Pixmap)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>screen</para></entry>
+<entry role="parameter_description"><para>the X Screen associated with <parameter>bitmap</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the current width of <parameter>bitmap</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the current height of <parameter>bitmap</parameter>
+.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-create-for-bitmap.returns" role="returns">
+<title>Returns</title>
+<para> the newly created surface</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-set-size" role="function" condition="since:1.0">
+<title>cairo_xlib_surface_set_size&#160;()</title>
+<indexterm zone="cairo-xlib-surface-set-size" role="1.0"><primary sortas="xlib_surface_set_size">cairo_xlib_surface_set_size</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xlib_surface_set_size (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</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>
+<refsect3 id="cairo-xlib-surface-set-size.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for the XLib backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the new width of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the new height of the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-display" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_display&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-display" role="1.2"><primary sortas="xlib_surface_get_display">cairo_xlib_surface_get_display</primary></indexterm>
+<programlisting language="C"><link linkend="Display"><returnvalue>Display</returnvalue></link>&#160;*
+cairo_xlib_surface_get_display (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the X Display for the underlying X Drawable.</para>
+<refsect3 id="cairo-xlib-surface-get-display.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-display.returns" role="returns">
+<title>Returns</title>
+<para> the display.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-screen" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_screen&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-screen" role="1.2"><primary sortas="xlib_surface_get_screen">cairo_xlib_surface_get_screen</primary></indexterm>
+<programlisting language="C"><link linkend="Screen"><returnvalue>Screen</returnvalue></link>&#160;*
+cairo_xlib_surface_get_screen (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the X Screen for the underlying X Drawable.</para>
+<refsect3 id="cairo-xlib-surface-get-screen.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-screen.returns" role="returns">
+<title>Returns</title>
+<para> the screen.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-set-drawable" role="function" condition="since:1.0">
+<title>cairo_xlib_surface_set_drawable&#160;()</title>
+<indexterm zone="cairo-xlib-surface-set-drawable" role="1.0"><primary sortas="xlib_surface_set_drawable">cairo_xlib_surface_set_drawable</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xlib_surface_set_drawable (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="Drawable"><type>Drawable</type></link> drawable</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> width</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
+<para>Informs cairo of a new X Drawable underlying the
+surface. The drawable must match the display, screen
+and format of the existing drawable or the application
+will get X protocol errors and will probably terminate.
+No checks are done by this function to ensure this
+compatibility.</para>
+<refsect3 id="cairo-xlib-surface-set-drawable.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> for the XLib backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>drawable</para></entry>
+<entry role="parameter_description"><para>the new drawable for the surface</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>the width of the new drawable</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>height</para></entry>
+<entry role="parameter_description"><para>the height of the new drawable</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-drawable" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_drawable&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-drawable" role="1.2"><primary sortas="xlib_surface_get_drawable">cairo_xlib_surface_get_drawable</primary></indexterm>
+<programlisting language="C"><link linkend="Drawable"><returnvalue>Drawable</returnvalue></link>
+cairo_xlib_surface_get_drawable (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the underlying X Drawable used for the surface.</para>
+<refsect3 id="cairo-xlib-surface-get-drawable.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-drawable.returns" role="returns">
+<title>Returns</title>
+<para> the drawable.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-visual" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_visual&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-visual" role="1.2"><primary sortas="xlib_surface_get_visual">cairo_xlib_surface_get_visual</primary></indexterm>
+<programlisting language="C"><link linkend="Visual"><returnvalue>Visual</returnvalue></link>&#160;*
+cairo_xlib_surface_get_visual (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Gets the X Visual associated with <parameter>surface</parameter>
+, suitable for use with the
+underlying X Drawable. If <parameter>surface</parameter>
+ was created by
+<link linkend="cairo-xlib-surface-create"><function>cairo_xlib_surface_create()</function></link>, the return value is the Visual passed to that
+constructor.</para>
+<refsect3 id="cairo-xlib-surface-get-visual.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-visual.returns" role="returns">
+<title>Returns</title>
+<para> the Visual or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if there is no appropriate Visual for
+<parameter>surface</parameter>
+.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-width" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_width&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-width" role="1.2"><primary sortas="xlib_surface_get_width">cairo_xlib_surface_get_width</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_xlib_surface_get_width (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the width of the X Drawable underlying the surface in pixels.</para>
+<refsect3 id="cairo-xlib-surface-get-width.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-width.returns" role="returns">
+<title>Returns</title>
+<para> the width of the surface in pixels.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-height" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_height&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-height" role="1.2"><primary sortas="xlib_surface_get_height">cairo_xlib_surface_get_height</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_xlib_surface_get_height (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the height of the X Drawable underlying the surface in pixels.</para>
+<refsect3 id="cairo-xlib-surface-get-height.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-height.returns" role="returns">
+<title>Returns</title>
+<para> the height of the surface in pixels.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-surface-get-depth" role="function" condition="since:1.2">
+<title>cairo_xlib_surface_get_depth&#160;()</title>
+<indexterm zone="cairo-xlib-surface-get-depth" role="1.2"><primary sortas="xlib_surface_get_depth">cairo_xlib_surface_get_depth</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_xlib_surface_get_depth (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
+<para>Get the number of bits used to represent each pixel value.</para>
+<refsect3 id="cairo-xlib-surface-get-depth.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-xlib-surface-t"><type>cairo_xlib_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-surface-get-depth.returns" role="returns">
+<title>Returns</title>
+<para> the depth of the surface in bits.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-xlib-device-debug-cap-xrender-version" role="function" condition="since:1.12">
+<title>cairo_xlib_device_debug_cap_xrender_version&#160;()</title>
+<indexterm zone="cairo-xlib-device-debug-cap-xrender-version" role="1.12"><primary sortas="xlib_device_debug_cap_xrender_version">cairo_xlib_device_debug_cap_xrender_version</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xlib_device_debug_cap_xrender_version
+ (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> major_version</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> minor_version</parameter>);</programlisting>
+<para>Restricts all future Xlib surfaces for this devices to the specified version
+of the RENDER extension. This function exists solely for debugging purpose.
+It lets you find out how cairo would behave with an older version of
+the RENDER extension.</para>
+<para>Use the special values -1 and -1 for disabling the RENDER extension.</para>
+<refsect3 id="cairo-xlib-device-debug-cap-xrender-version.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the Xlib backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>major_version</para></entry>
+<entry role="parameter_description"><para>major version to restrict to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>minor_version</para></entry>
+<entry role="parameter_description"><para>minor version to restrict to</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xlib-device-debug-get-precision" role="function" condition="since:1.12">
+<title>cairo_xlib_device_debug_get_precision&#160;()</title>
+<indexterm zone="cairo-xlib-device-debug-get-precision" role="1.12"><primary sortas="xlib_device_debug_get_precision">cairo_xlib_device_debug_get_precision</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_xlib_device_debug_get_precision (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>);</programlisting>
+<para>Get the Xrender precision mode.</para>
+<refsect3 id="cairo-xlib-device-debug-get-precision.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the Xlib backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-xlib-device-debug-get-precision.returns" role="returns">
+<title>Returns</title>
+<para> the render precision mode</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+<refsect2 id="cairo-xlib-device-debug-set-precision" role="function" condition="since:1.12">
+<title>cairo_xlib_device_debug_set_precision&#160;()</title>
+<indexterm zone="cairo-xlib-device-debug-set-precision" role="1.12"><primary sortas="xlib_device_debug_set_precision">cairo_xlib_device_debug_set_precision</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_xlib_device_debug_set_precision (<parameter><link linkend="cairo-device-t"><type>cairo_device_t</type></link> *device</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> precision</parameter>);</programlisting>
+<para>Render supports two modes of precision when rendering trapezoids. Set
+the precision to the desired mode.</para>
+<refsect3 id="cairo-xlib-device-debug-set-precision.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>device</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-device-t"><type>cairo_device_t</type></link> for the Xlib backend</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>precision</para></entry>
+<entry role="parameter_description"><para>the precision to use</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.12">1.12</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-XLib-Surfaces.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="CAIRO-HAS-XLIB-SURFACE:CAPS" role="macro" condition="since:1.0">
+<title>CAIRO_HAS_XLIB_SURFACE</title>
+<indexterm zone="CAIRO-HAS-XLIB-SURFACE:CAPS" role="1.0"><primary sortas="HAS_XLIB_SURFACE">CAIRO_HAS_XLIB_SURFACE</primary></indexterm>
+<programlisting language="C">#define CAIRO_HAS_XLIB_SURFACE 1
+</programlisting>
+<para>Defined if the Xlib surface backend is available.
+This macro can be used to conditionally compile backend-specific code.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-XLib-Surfaces.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>
diff --git a/libs/cairo-1.16.0/doc/public/xml/cairo.xml b/libs/cairo-1.16.0/doc/public/xml/cairo.xml
new file mode 100644
index 0000000..c4b546f
--- /dev/null
+++ b/libs/cairo-1.16.0/doc/public/xml/cairo.xml
@@ -0,0 +1,2538 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<refentry id="cairo-cairo-t">
+<refmeta>
+<refentrytitle role="top_of_page" id="cairo-cairo-t.top_of_page">cairo_t</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>CAIRO Library</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>cairo_t</refname>
+<refpurpose>The cairo drawing context</refpurpose>
+</refnamediv>
+
+<refsect1 id="cairo-cairo-t.functions" role="functions_proto">
+<title role="functions_proto.title">Functions</title>
+<informaltable pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="functions_return" colwidth="150px"/>
+<colspec colname="functions_name"/>
+<tbody>
+<row><entry role="function_type"><link linkend="cairo-t"><returnvalue>cairo_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-create">cairo_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-t"><returnvalue>cairo_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-reference">cairo_reference</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-destroy">cairo_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-status">cairo_status</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-save">cairo_save</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-restore">cairo_restore</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-get-target">cairo_get_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-push-group">cairo_push_group</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-push-group-with-content">cairo_push_group_with_content</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-pop-group">cairo_pop_group</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-pop-group-to-source">cairo_pop_group_to_source</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-get-group-target">cairo_get_group_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-source-rgb">cairo_set_source_rgb</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-source-rgba">cairo_set_source_rgba</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-source">cairo_set_source</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-source-surface">cairo_set_source_surface</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-get-source">cairo_get_source</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-antialias">cairo_set_antialias</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-antialias-t"><returnvalue>cairo_antialias_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-antialias">cairo_get_antialias</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-dash">cairo_set_dash</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-dash-count">cairo_get_dash_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-dash">cairo_get_dash</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-fill-rule">cairo_set_fill_rule</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-fill-rule-t"><returnvalue>cairo_fill_rule_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-fill-rule">cairo_get_fill_rule</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-line-cap">cairo_set_line_cap</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-line-cap-t"><returnvalue>cairo_line_cap_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-line-cap">cairo_get_line_cap</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-line-join">cairo_set_line_join</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-line-join-t"><returnvalue>cairo_line_join_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-line-join">cairo_get_line_join</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-line-width">cairo_set_line_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-line-width">cairo_get_line_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-miter-limit">cairo_set_miter_limit</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-miter-limit">cairo_get_miter_limit</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-operator">cairo_set_operator</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-operator-t"><returnvalue>cairo_operator_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-operator">cairo_get_operator</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-tolerance">cairo_set_tolerance</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="double"><returnvalue>double</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-tolerance">cairo_get_tolerance</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-clip">cairo_clip</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-clip-preserve">cairo_clip_preserve</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-clip-extents">cairo_clip_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-in-clip">cairo_in_clip</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-reset-clip">cairo_reset_clip</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-rectangle-list-destroy">cairo_rectangle_list_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-rectangle-list-t"><returnvalue>cairo_rectangle_list_t</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-copy-clip-rectangle-list">cairo_copy_clip_rectangle_list</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-fill">cairo_fill</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-fill-preserve">cairo_fill_preserve</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-fill-extents">cairo_fill_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-in-fill">cairo_in_fill</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mask">cairo_mask</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-mask-surface">cairo_mask_surface</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-paint">cairo_paint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-paint-with-alpha">cairo_paint_with_alpha</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-stroke">cairo_stroke</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-stroke-preserve">cairo_stroke_preserve</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-stroke-extents">cairo_stroke_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-in-stroke">cairo_in_stroke</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-copy-page">cairo_copy_page</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-show-page">cairo_show_page</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-get-reference-count">cairo_get_reference_count</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+</entry><entry role="function_name"><link linkend="cairo-set-user-data">cairo_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+</entry><entry role="function_name"><link linkend="cairo-get-user-data">cairo_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+<refsect1 id="cairo-cairo-t.other" role="other_proto">
+<title role="other_proto.title">Types and Values</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="2">
+<colspec colname="name" colwidth="150px"/>
+<colspec colname="description"/>
+<tbody>
+<row><entry role="typedef_keyword">typedef</entry><entry role="function_name"><link linkend="cairo-t">cairo_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-antialias-t">cairo_antialias_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-fill-rule-t">cairo_fill_rule_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-line-cap-t">cairo_line_cap_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-line-join-t">cairo_line_join_t</link></entry></row>
+<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="cairo-operator-t">cairo_operator_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-rectangle-t">cairo_rectangle_t</link></entry></row>
+<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="cairo-rectangle-list-t">cairo_rectangle_list_t</link></entry></row>
+
+</tbody>
+</tgroup>
+</informaltable>
+</refsect1>
+
+
+<refsect1 id="cairo-cairo-t.description" role="desc">
+<title role="desc.title">Description</title>
+<para><link linkend="cairo-t"><type>cairo_t</type></link> is the main object used when drawing with cairo. To
+draw with cairo, you create a <link linkend="cairo-t"><type>cairo_t</type></link>, set the target surface,
+and drawing options for the <link linkend="cairo-t"><type>cairo_t</type></link>, create shapes with
+functions like <link linkend="cairo-move-to"><function>cairo_move_to()</function></link> and <link linkend="cairo-line-to"><function>cairo_line_to()</function></link>, and then
+draw shapes with <link linkend="cairo-stroke"><function>cairo_stroke()</function></link> or <link linkend="cairo-fill"><function>cairo_fill()</function></link>.</para>
+<para><link linkend="cairo-t"><type>cairo_t</type></link><!-- -->'s can be pushed to a stack via <link linkend="cairo-save"><function>cairo_save()</function></link>.
+They may then safely be changed, without losing the current state.
+Use <link linkend="cairo-restore"><function>cairo_restore()</function></link> to restore to the saved state.</para>
+
+</refsect1>
+<refsect1 id="cairo-cairo-t.functions_details" role="details">
+<title role="details.title">Functions</title>
+<refsect2 id="cairo-create" role="function" condition="since:1.0">
+<title>cairo_create&#160;()</title>
+<indexterm zone="cairo-create" role="1.0"><primary sortas="create">cairo_create</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-t"><returnvalue>cairo_t</returnvalue></link>&#160;*
+cairo_create (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *target</parameter>);</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 <link linkend="cairo-image-surface-create"><function>cairo_image_surface_create()</function></link> (or any other
+<function>cairo_<emphasis>backend</emphasis>_surface_create(<!-- -->)</function>
+variant).</para>
+<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>
+<refsect3 id="cairo-create.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>target</para></entry>
+<entry role="parameter_description"><para>target surface for the context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-create.returns" role="returns">
+<title>Returns</title>
+<para> 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 <link linkend="NULL:CAPS"><literal>NULL</literal></link>. 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 <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link>. If
+you attempt to target a surface which does not support
+writing (such as <link linkend="cairo-mime-surface-t"><type>cairo_mime_surface_t</type></link>) then a
+<link linkend="CAIRO-STATUS-WRITE-ERROR:CAPS"><literal>CAIRO_STATUS_WRITE_ERROR</literal></link> will be raised. You can use this
+object normally, but no drawing will be done.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-reference" role="function" condition="since:1.0">
+<title>cairo_reference&#160;()</title>
+<indexterm zone="cairo-reference" role="1.0"><primary sortas="reference">cairo_reference</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-t"><returnvalue>cairo_t</returnvalue></link>&#160;*
+cairo_reference (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Increases the reference count on <parameter>cr</parameter>
+ by one. This prevents
+<parameter>cr</parameter>
+ from being destroyed until a matching call to <link linkend="cairo-destroy"><function>cairo_destroy()</function></link>
+is made.</para>
+<para>Use <link linkend="cairo-get-reference-count"><function>cairo_get_reference_count()</function></link> to get the number of references to
+a <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+<refsect3 id="cairo-reference.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-reference.returns" role="returns">
+<title>Returns</title>
+<para> the referenced <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-destroy" role="function" condition="since:1.0">
+<title>cairo_destroy&#160;()</title>
+<indexterm zone="cairo-destroy" role="1.0"><primary sortas="destroy">cairo_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_destroy (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<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-reference"><function>cairo_reference()</function></link>.</para>
+<refsect3 id="cairo-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-status" role="function" condition="since:1.0">
+<title>cairo_status&#160;()</title>
+<indexterm zone="cairo-status" role="1.0"><primary sortas="status">cairo_status</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_status (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Checks whether an error has previously occurred for this context.</para>
+<refsect3 id="cairo-status.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-status.returns" role="returns">
+<title>Returns</title>
+<para> the current status of this context, see <link linkend="cairo-status-t"><type>cairo_status_t</type></link></para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-save" role="function" condition="since:1.0">
+<title>cairo_save&#160;()</title>
+<indexterm zone="cairo-save" role="1.0"><primary sortas="save">cairo_save</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_save (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Makes a copy of the current state of <parameter>cr</parameter>
+ and saves it
+on an internal stack of saved states for <parameter>cr</parameter>
+. When
+<link linkend="cairo-restore"><function>cairo_restore()</function></link> is called, <parameter>cr</parameter>
+ will be restored to
+the saved state. Multiple calls to <link linkend="cairo-save"><function>cairo_save()</function></link> and
+<link linkend="cairo-restore"><function>cairo_restore()</function></link> can be nested; each call to <link linkend="cairo-restore"><function>cairo_restore()</function></link>
+restores the state from the matching paired <link linkend="cairo-save"><function>cairo_save()</function></link>.</para>
+<para>It isn't necessary to clear all saved states before
+a <link linkend="cairo-t"><type>cairo_t</type></link> is freed. If the reference count of a <link linkend="cairo-t"><type>cairo_t</type></link>
+drops to zero in response to a call to <link linkend="cairo-destroy"><function>cairo_destroy()</function></link>,
+any saved states will be freed along with the <link linkend="cairo-t"><type>cairo_t</type></link>.</para>
+<refsect3 id="cairo-save.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-restore" role="function" condition="since:1.0">
+<title>cairo_restore&#160;()</title>
+<indexterm zone="cairo-restore" role="1.0"><primary sortas="restore">cairo_restore</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_restore (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Restores <parameter>cr</parameter>
+ to the state saved by a preceding call to
+<link linkend="cairo-save"><function>cairo_save()</function></link> and removes that state from the stack of
+saved states.</para>
+<refsect3 id="cairo-restore.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-target" role="function" condition="since:1.0">
+<title>cairo_get_target&#160;()</title>
+<indexterm zone="cairo-get-target" role="1.0"><primary sortas="get_target">cairo_get_target</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_get_target (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the target surface for the cairo context as passed to
+<link linkend="cairo-create"><function>cairo_create()</function></link>.</para>
+<para>This function will always return a valid pointer, but the result
+can be a "nil" surface if <parameter>cr</parameter>
+ is already in an error state,
+(ie. <link linkend="cairo-status"><function>cairo_status()</function></link> <literal>!=</literal> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>).
+A nil surface is indicated by <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link>
+<literal>!=</literal> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>.</para>
+<refsect3 id="cairo-get-target.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-target.returns" role="returns">
+<title>Returns</title>
+<para> the target surface. 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>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-push-group" role="function" condition="since:1.2">
+<title>cairo_push_group&#160;()</title>
+<indexterm zone="cairo-push-group" role="1.2"><primary sortas="push_group">cairo_push_group</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_push_group (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Temporarily redirects drawing to an intermediate surface known as a
+group. The redirection lasts until the group is completed by a call
+to <link linkend="cairo-pop-group"><function>cairo_pop_group()</function></link> or <link linkend="cairo-pop-group-to-source"><function>cairo_pop_group_to_source()</function></link>. These calls
+provide the result of any drawing to the group as a pattern,
+(either as an explicit object, or set as the source pattern).</para>
+<para>This group functionality can be convenient for performing
+intermediate compositing. One common use of a group is to render
+objects as opaque within the group, (so that they occlude each
+other), and then blend the result with translucence onto the
+destination.</para>
+<para>Groups can be nested arbitrarily deep by making balanced calls to
+<link linkend="cairo-push-group"><function>cairo_push_group()</function></link>/<link linkend="cairo-pop-group"><function>cairo_pop_group()</function></link>. Each call pushes/pops the new
+target group onto/from a stack.</para>
+<para>The <link linkend="cairo-push-group"><function>cairo_push_group()</function></link> function calls <link linkend="cairo-save"><function>cairo_save()</function></link> so that any
+changes to the graphics state will not be visible outside the
+group, (the pop_group functions call <link linkend="cairo-restore"><function>cairo_restore()</function></link>).</para>
+<para>By default the intermediate group will have a content type of
+<link linkend="CAIRO-CONTENT-COLOR-ALPHA:CAPS"><literal>CAIRO_CONTENT_COLOR_ALPHA</literal></link>. Other content types can be chosen for
+the group by using <link linkend="cairo-push-group-with-content"><function>cairo_push_group_with_content()</function></link> instead.</para>
+<para>As an example, here is how one might fill and stroke a path with
+translucence, but without any portion of the fill being visible
+under the stroke:</para>
+<informalexample><programlisting>
+cairo_push_group (cr);
+cairo_set_source (cr, fill_pattern);
+cairo_fill_preserve (cr);
+cairo_set_source (cr, stroke_pattern);
+cairo_stroke (cr);
+cairo_pop_group_to_source (cr);
+cairo_paint_with_alpha (cr, alpha);
+</programlisting></informalexample>
+<refsect3 id="cairo-push-group.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-push-group-with-content" role="function" condition="since:1.2">
+<title>cairo_push_group_with_content&#160;()</title>
+<indexterm zone="cairo-push-group-with-content" role="1.2"><primary sortas="push_group_with_content">cairo_push_group_with_content</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_push_group_with_content (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-content-t"><type>cairo_content_t</type></link> content</parameter>);</programlisting>
+<para>Temporarily redirects drawing to an intermediate surface known as a
+group. The redirection lasts until the group is completed by a call
+to <link linkend="cairo-pop-group"><function>cairo_pop_group()</function></link> or <link linkend="cairo-pop-group-to-source"><function>cairo_pop_group_to_source()</function></link>. These calls
+provide the result of any drawing to the group as a pattern,
+(either as an explicit object, or set as the source pattern).</para>
+<para>The group will have a content type of <parameter>content</parameter>
+. The ability to
+control this content type is the only distinction between this
+function and <link linkend="cairo-push-group"><function>cairo_push_group()</function></link> which you should see for a more
+detailed description of group rendering.</para>
+<refsect3 id="cairo-push-group-with-content.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>content</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-content-t"><type>cairo_content_t</type></link> indicating the type of group that
+will be created</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-pop-group" role="function" condition="since:1.2">
+<title>cairo_pop_group&#160;()</title>
+<indexterm zone="cairo-pop-group" role="1.2"><primary sortas="pop_group">cairo_pop_group</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_pop_group (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Terminates the redirection begun by a call to <link linkend="cairo-push-group"><function>cairo_push_group()</function></link> or
+<link linkend="cairo-push-group-with-content"><function>cairo_push_group_with_content()</function></link> and returns a new pattern
+containing the results of all drawing operations performed to the
+group.</para>
+<para>The <link linkend="cairo-pop-group"><function>cairo_pop_group()</function></link> function calls <link linkend="cairo-restore"><function>cairo_restore()</function></link>, (balancing a
+call to <link linkend="cairo-save"><function>cairo_save()</function></link> by the push_group function), so that any
+changes to the graphics state will not be visible outside the
+group.</para>
+<refsect3 id="cairo-pop-group.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-pop-group.returns" role="returns">
+<title>Returns</title>
+<para> a newly created (surface) pattern containing the
+results of all drawing operations performed to the group. The
+caller owns the returned object and should call
+<link linkend="cairo-pattern-destroy"><function>cairo_pattern_destroy()</function></link> when finished with it.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-pop-group-to-source" role="function" condition="since:1.2">
+<title>cairo_pop_group_to_source&#160;()</title>
+<indexterm zone="cairo-pop-group-to-source" role="1.2"><primary sortas="pop_group_to_source">cairo_pop_group_to_source</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_pop_group_to_source (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Terminates the redirection begun by a call to <link linkend="cairo-push-group"><function>cairo_push_group()</function></link> or
+<link linkend="cairo-push-group-with-content"><function>cairo_push_group_with_content()</function></link> and installs the resulting pattern
+as the source pattern in the given cairo context.</para>
+<para>The behavior of this function is equivalent to the sequence of
+operations:</para>
+<informalexample><programlisting>
+cairo_pattern_t *group = cairo_pop_group (cr);
+cairo_set_source (cr, group);
+cairo_pattern_destroy (group);
+</programlisting></informalexample>
+<para>but is more convenient as their is no need for a variable to store
+the short-lived pointer to the pattern.</para>
+<para>The <link linkend="cairo-pop-group"><function>cairo_pop_group()</function></link> function calls <link linkend="cairo-restore"><function>cairo_restore()</function></link>, (balancing a
+call to <link linkend="cairo-save"><function>cairo_save()</function></link> by the push_group function), so that any
+changes to the graphics state will not be visible outside the
+group.</para>
+<refsect3 id="cairo-pop-group-to-source.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-get-group-target" role="function" condition="since:1.2">
+<title>cairo_get_group_target&#160;()</title>
+<indexterm zone="cairo-get-group-target" role="1.2"><primary sortas="get_group_target">cairo_get_group_target</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
+cairo_get_group_target (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current destination surface for the context. This is either
+the original target surface as passed to <link linkend="cairo-create"><function>cairo_create()</function></link> or the target
+surface for the current group as started by the most recent call to
+<link linkend="cairo-push-group"><function>cairo_push_group()</function></link> or <link linkend="cairo-push-group-with-content"><function>cairo_push_group_with_content()</function></link>.</para>
+<para>This function will always return a valid pointer, but the result
+can be a "nil" surface if <parameter>cr</parameter>
+ is already in an error state,
+(ie. <link linkend="cairo-status"><function>cairo_status()</function></link> <literal>!=</literal> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>).
+A nil surface is indicated by <link linkend="cairo-surface-status"><function>cairo_surface_status()</function></link>
+<literal>!=</literal> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link>.</para>
+<refsect3 id="cairo-get-group-target.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-group-target.returns" role="returns">
+<title>Returns</title>
+<para> the target surface. 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>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.2">1.2</link></para></refsect2>
+<refsect2 id="cairo-set-source-rgb" role="function" condition="since:1.0">
+<title>cairo_set_source_rgb&#160;()</title>
+<indexterm zone="cairo-set-source-rgb" role="1.0"><primary sortas="set_source_rgb">cairo_set_source_rgb</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_source_rgb (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>);</programlisting>
+<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</para>
+<orderedlist>
+<listitem>
+<para>If the values passed in are outside that range, they will be
+clamped.</para>
+</listitem>
+</orderedlist>
+<para>The default source pattern is opaque black, (that is, it is
+equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)).</para>
+<refsect3 id="cairo-set-source-rgb.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-source-rgba" role="function" condition="since:1.0">
+<title>cairo_set_source_rgba&#160;()</title>
+<indexterm zone="cairo-set-source-rgba" role="1.0"><primary sortas="set_source_rgba">cairo_set_source_rgba</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_source_rgba (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> red</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> green</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> blue</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> alpha</parameter>);</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>The default source pattern is opaque black, (that is, it is
+equivalent to cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0)).</para>
+<refsect3 id="cairo-set-source-rgba.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>red</para></entry>
+<entry role="parameter_description"><para>red component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>green</para></entry>
+<entry role="parameter_description"><para>green component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>blue</para></entry>
+<entry role="parameter_description"><para>blue component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>alpha component of color</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-source" role="function" condition="since:1.0">
+<title>cairo_set_source&#160;()</title>
+<indexterm zone="cairo-set-source" role="1.0"><primary sortas="set_source">cairo_set_source</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_source (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *source</parameter>);</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>Note: The pattern's transformation matrix will be locked to the
+user space in effect at the time of <link linkend="cairo-set-source"><function>cairo_set_source()</function></link>. This means
+that further modifications of the current transformation matrix
+will not affect the source pattern. See <link linkend="cairo-pattern-set-matrix"><function>cairo_pattern_set_matrix()</function></link>.</para>
+<para>The default source pattern is a solid pattern that is opaque black,
+(that is, it is equivalent to cairo_set_source_rgb(cr, 0.0, 0.0,
+0.0)).</para>
+<refsect3 id="cairo-set-source.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>source</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> to be used as the source for
+subsequent drawing operations.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-source-surface" role="function" condition="since:1.0">
+<title>cairo_set_source_surface&#160;()</title>
+<indexterm zone="cairo-set-source-surface" role="1.0"><primary sortas="set_source_surface">cairo_set_source_surface</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_source_surface (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>This is a convenience function for creating a pattern from <parameter>surface</parameter>
+
+and setting it as the source in <parameter>cr</parameter>
+ with <link linkend="cairo-set-source"><function>cairo_set_source()</function></link>.</para>
+<para>The <parameter>x</parameter>
+ and <parameter>y</parameter>
+ parameters give the user-space coordinate at which
+the surface origin should appear. (The surface origin is its
+upper-left corner before any transformation has been applied.) The
+<parameter>x</parameter>
+ and <parameter>y</parameter>
+ parameters are negated and then set as translation values
+in the pattern matrix.</para>
+<para>Other than the initial translation pattern matrix, as described
+above, all other pattern attributes, (such as its extend mode), are
+set to the default values as in <link linkend="cairo-pattern-create-for-surface"><function>cairo_pattern_create_for_surface()</function></link>.
+The resulting pattern can be queried with <link linkend="cairo-get-source"><function>cairo_get_source()</function></link> so
+that these attributes can be modified if desired, (eg. to create a
+repeating pattern with <link linkend="cairo-pattern-set-extend"><function>cairo_pattern_set_extend()</function></link>).</para>
+<refsect3 id="cairo-set-source-surface.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a surface to be used to set the source pattern</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>User-space X coordinate for surface origin</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>User-space Y coordinate for surface origin</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-source" role="function" condition="since:1.0">
+<title>cairo_get_source&#160;()</title>
+<indexterm zone="cairo-get-source" role="1.0"><primary sortas="get_source">cairo_get_source</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-pattern-t"><returnvalue>cairo_pattern_t</returnvalue></link>&#160;*
+cairo_get_source (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current source pattern for <parameter>cr</parameter>
+.</para>
+<refsect3 id="cairo-get-source.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-source.returns" role="returns">
+<title>Returns</title>
+<para> 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>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-antialias" role="function" condition="since:1.0">
+<title>cairo_set_antialias&#160;()</title>
+<indexterm zone="cairo-set-antialias" role="1.0"><primary sortas="set_antialias">cairo_set_antialias</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_antialias (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-antialias-t"><type>cairo_antialias_t</type></link> antialias</parameter>);</programlisting>
+<para>Set the antialiasing mode of the rasterizer used for drawing shapes.
+This value is a hint, and a particular backend may or may not support
+a particular value. At the current time, no backend supports
+<link linkend="CAIRO-ANTIALIAS-SUBPIXEL:CAPS"><literal>CAIRO_ANTIALIAS_SUBPIXEL</literal></link> when drawing shapes.</para>
+<para>Note that this option does not affect text rendering, instead see
+<link linkend="cairo-font-options-set-antialias"><function>cairo_font_options_set_antialias()</function></link>.</para>
+<refsect3 id="cairo-set-antialias.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>antialias</para></entry>
+<entry role="parameter_description"><para>the new antialiasing mode</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-antialias" role="function" condition="since:1.0">
+<title>cairo_get_antialias&#160;()</title>
+<indexterm zone="cairo-get-antialias" role="1.0"><primary sortas="get_antialias">cairo_get_antialias</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-antialias-t"><returnvalue>cairo_antialias_t</returnvalue></link>
+cairo_get_antialias (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current shape antialiasing mode, as set by
+<link linkend="cairo-set-antialias"><function>cairo_set_antialias()</function></link>.</para>
+<refsect3 id="cairo-get-antialias.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-antialias.returns" role="returns">
+<title>Returns</title>
+<para> the current shape antialiasing mode.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-dash" role="function" condition="since:1.0">
+<title>cairo_set_dash&#160;()</title>
+<indexterm zone="cairo-set-dash" role="1.0"><primary sortas="set_dash">cairo_set_dash</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_dash (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="double"><type>double</type></link> *dashes</parameter>,
+ <parameter><link linkend="int"><type>int</type></link> num_dashes</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> offset</parameter>);</programlisting>
+<para>Sets the dash pattern to be used by <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>. A dash pattern
+is specified by <parameter>dashes</parameter>
+, an array of positive values. Each value
+provides the length of alternate "on" and "off" portions of the
+stroke. The <parameter>offset</parameter>
+ specifies an offset into the pattern at which
+the stroke begins.</para>
+<para>Each "on" segment will have caps applied as if the segment were a
+separate sub-path. In particular, it is valid to use an "on" length
+of 0.0 with <link linkend="CAIRO-LINE-CAP-ROUND:CAPS"><literal>CAIRO_LINE_CAP_ROUND</literal></link> or <link linkend="CAIRO-LINE-CAP-SQUARE:CAPS"><literal>CAIRO_LINE_CAP_SQUARE</literal></link> in order
+to distributed dots or squares along a path.</para>
+<para>Note: The length values are in user-space units as evaluated at the
+time of stroking. This is not necessarily the same as the user
+space at the time of <link linkend="cairo-set-dash"><function>cairo_set_dash()</function></link>.</para>
+<para>If <parameter>num_dashes</parameter>
+ is 0 dashing is disabled.</para>
+<para>If <parameter>num_dashes</parameter>
+ is 1 a symmetric pattern is assumed with alternating
+on and off portions of the size specified by the single value in
+<parameter>dashes</parameter>
+.</para>
+<para>If any value in <parameter>dashes</parameter>
+ is negative, or if all values are 0, then
+<parameter>cr</parameter>
+ will be put into an error state with a status of
+<link linkend="CAIRO-STATUS-INVALID-DASH:CAPS"><literal>CAIRO_STATUS_INVALID_DASH</literal></link>.</para>
+<refsect3 id="cairo-set-dash.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dashes</para></entry>
+<entry role="parameter_description"><para>an array specifying alternate lengths of on and off stroke portions</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>num_dashes</para></entry>
+<entry role="parameter_description"><para>the length of the dashes array</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>offset</para></entry>
+<entry role="parameter_description"><para>an offset into the dash pattern at which the stroke should start</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-dash-count" role="function" condition="since:1.4">
+<title>cairo_get_dash_count&#160;()</title>
+<indexterm zone="cairo-get-dash-count" role="1.4"><primary sortas="get_dash_count">cairo_get_dash_count</primary></indexterm>
+<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_get_dash_count (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>This function returns the length of the dash array in <parameter>cr</parameter>
+ (0 if dashing
+is not currently in effect).</para>
+<para>See also <link linkend="cairo-set-dash"><function>cairo_set_dash()</function></link> and <link linkend="cairo-get-dash"><function>cairo_get_dash()</function></link>.</para>
+<refsect3 id="cairo-get-dash-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-dash-count.returns" role="returns">
+<title>Returns</title>
+<para> the length of the dash array, or 0 if no dash array set.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-get-dash" role="function" condition="since:1.4">
+<title>cairo_get_dash&#160;()</title>
+<indexterm zone="cairo-get-dash" role="1.4"><primary sortas="get_dash">cairo_get_dash</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_get_dash (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *dashes</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *offset</parameter>);</programlisting>
+<para>Gets the current dash array. If not <link linkend="NULL:CAPS"><literal>NULL</literal></link>, <parameter>dashes</parameter>
+ should be big
+enough to hold at least the number of values returned by
+<link linkend="cairo-get-dash-count"><function>cairo_get_dash_count()</function></link>.</para>
+<refsect3 id="cairo-get-dash.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>dashes</para></entry>
+<entry role="parameter_description"><para>return value for the dash array, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>offset</para></entry>
+<entry role="parameter_description"><para>return value for the current dash offset, or <link linkend="NULL:CAPS"><literal>NULL</literal></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-set-fill-rule" role="function" condition="since:1.0">
+<title>cairo_set_fill_rule&#160;()</title>
+<indexterm zone="cairo-set-fill-rule" role="1.0"><primary sortas="set_fill_rule">cairo_set_fill_rule</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_fill_rule (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-fill-rule-t"><type>cairo_fill_rule_t</type></link> fill_rule</parameter>);</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 <link linkend="cairo-fill"><function>cairo_fill()</function></link> and <link linkend="cairo-clip"><function>cairo_clip()</function></link>. 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>The default fill rule is <link linkend="CAIRO-FILL-RULE-WINDING:CAPS"><literal>CAIRO_FILL_RULE_WINDING</literal></link>.</para>
+<refsect3 id="cairo-set-fill-rule.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>fill_rule</para></entry>
+<entry role="parameter_description"><para>a fill rule, specified as a <link linkend="cairo-fill-rule-t"><type>cairo_fill_rule_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-fill-rule" role="function" condition="since:1.0">
+<title>cairo_get_fill_rule&#160;()</title>
+<indexterm zone="cairo-get-fill-rule" role="1.0"><primary sortas="get_fill_rule">cairo_get_fill_rule</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-fill-rule-t"><returnvalue>cairo_fill_rule_t</returnvalue></link>
+cairo_get_fill_rule (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current fill rule, as set by <link linkend="cairo-set-fill-rule"><function>cairo_set_fill_rule()</function></link>.</para>
+<refsect3 id="cairo-get-fill-rule.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-fill-rule.returns" role="returns">
+<title>Returns</title>
+<para> the current fill rule.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-line-cap" role="function" condition="since:1.0">
+<title>cairo_set_line_cap&#160;()</title>
+<indexterm zone="cairo-set-line-cap" role="1.0"><primary sortas="set_line_cap">cairo_set_line_cap</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_line_cap (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-line-cap-t"><type>cairo_line_cap_t</type></link> line_cap</parameter>);</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>The default line cap style is <link linkend="CAIRO-LINE-CAP-BUTT:CAPS"><literal>CAIRO_LINE_CAP_BUTT</literal></link>.</para>
+<refsect3 id="cairo-set-line-cap.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>line_cap</para></entry>
+<entry role="parameter_description"><para>a line cap style</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-line-cap" role="function" condition="since:1.0">
+<title>cairo_get_line_cap&#160;()</title>
+<indexterm zone="cairo-get-line-cap" role="1.0"><primary sortas="get_line_cap">cairo_get_line_cap</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-line-cap-t"><returnvalue>cairo_line_cap_t</returnvalue></link>
+cairo_get_line_cap (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>
+<refsect3 id="cairo-get-line-cap.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-line-cap.returns" role="returns">
+<title>Returns</title>
+<para> the current line cap style.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-line-join" role="function" condition="since:1.0">
+<title>cairo_set_line_join&#160;()</title>
+<indexterm zone="cairo-set-line-join" role="1.0"><primary sortas="set_line_join">cairo_set_line_join</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_line_join (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-line-join-t"><type>cairo_line_join_t</type></link> line_join</parameter>);</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>The default line join style is <link linkend="CAIRO-LINE-JOIN-MITER:CAPS"><literal>CAIRO_LINE_JOIN_MITER</literal></link>.</para>
+<refsect3 id="cairo-set-line-join.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>line_join</para></entry>
+<entry role="parameter_description"><para>a line join style</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-line-join" role="function" condition="since:1.0">
+<title>cairo_get_line_join&#160;()</title>
+<indexterm zone="cairo-get-line-join" role="1.0"><primary sortas="get_line_join">cairo_get_line_join</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-line-join-t"><returnvalue>cairo_line_join_t</returnvalue></link>
+cairo_get_line_join (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>
+<refsect3 id="cairo-get-line-join.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-line-join.returns" role="returns">
+<title>Returns</title>
+<para> the current line join style.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-line-width" role="function" condition="since:1.0">
+<title>cairo_set_line_width&#160;()</title>
+<indexterm zone="cairo-set-line-width" role="1.0"><primary sortas="set_line_width">cairo_set_line_width</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_line_width (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> width</parameter>);</programlisting>
+<para>Sets the current line width within the cairo context. The line
+width value specifies the diameter of a pen that is circular in
+user space, (though device-space pen may be an ellipse in general
+due to scaling/shear/rotation of the CTM).</para>
+<para>Note: When the description above refers to user space and CTM it
+refers to the user space and CTM in effect at the time of the
+stroking operation, not the user space and CTM in effect at the
+time of the call to <link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link>. The simplest usage
+makes both of these spaces identical. That is, if there is no
+change to the CTM between a call to <link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link> and the
+stroking operation, then one can just pass user-space values to
+<link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link> and ignore this note.</para>
+<para>As with the other stroke parameters, the current line width 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>The default line width value is 2.0.</para>
+<refsect3 id="cairo-set-line-width.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>width</para></entry>
+<entry role="parameter_description"><para>a line width</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-line-width" role="function" condition="since:1.0">
+<title>cairo_get_line_width&#160;()</title>
+<indexterm zone="cairo-get-line-width" role="1.0"><primary sortas="get_line_width">cairo_get_line_width</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_get_line_width (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>This function returns the current line width value exactly as set by
+<link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link>. Note that the value is unchanged even if
+the CTM has changed between the calls to <link linkend="cairo-set-line-width"><function>cairo_set_line_width()</function></link> and
+<link linkend="cairo-get-line-width"><function>cairo_get_line_width()</function></link>.</para>
+<refsect3 id="cairo-get-line-width.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-line-width.returns" role="returns">
+<title>Returns</title>
+<para> the current line width.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-miter-limit" role="function" condition="since:1.0">
+<title>cairo_set_miter_limit&#160;()</title>
+<indexterm zone="cairo-set-miter-limit" role="1.0"><primary sortas="set_miter_limit">cairo_set_miter_limit</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_miter_limit (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> limit</parameter>);</programlisting>
+<para>Sets the current miter limit within the cairo context.</para>
+<para>If the current line join style is set to <link linkend="CAIRO-LINE-JOIN-MITER:CAPS"><literal>CAIRO_LINE_JOIN_MITER</literal></link>
+(see <link linkend="cairo-set-line-join"><function>cairo_set_line_join()</function></link>), the miter limit is used to determine
+whether the lines should be joined with a bevel instead of a miter.
+Cairo divides the length of the miter by the line width.
+If the result is greater than the miter limit, the style is
+converted to a bevel.</para>
+<para>As with the other stroke parameters, the current line miter limit 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>The default miter limit value is 10.0, which will convert joins
+with interior angles less than 11 degrees to bevels instead of
+miters. For reference, a miter limit of 2.0 makes the miter cutoff
+at 60 degrees, and a miter limit of 1.414 makes the cutoff at 90
+degrees.</para>
+<para>A miter limit for a desired angle can be computed as: miter limit =
+1/sin(angle/2)</para>
+<refsect3 id="cairo-set-miter-limit.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>limit</para></entry>
+<entry role="parameter_description"><para>miter limit to set</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-miter-limit" role="function" condition="since:1.0">
+<title>cairo_get_miter_limit&#160;()</title>
+<indexterm zone="cairo-get-miter-limit" role="1.0"><primary sortas="get_miter_limit">cairo_get_miter_limit</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_get_miter_limit (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current miter limit, as set by <link linkend="cairo-set-miter-limit"><function>cairo_set_miter_limit()</function></link>.</para>
+<refsect3 id="cairo-get-miter-limit.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-miter-limit.returns" role="returns">
+<title>Returns</title>
+<para> the current miter limit.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-operator" role="function" condition="since:1.0">
+<title>cairo_set_operator&#160;()</title>
+<indexterm zone="cairo-set-operator" role="1.0"><primary sortas="set_operator">cairo_set_operator</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_operator (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-operator-t"><type>cairo_operator_t</type></link> op</parameter>);</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 compositing operator.</para>
+<para>The default operator is <link linkend="CAIRO-OPERATOR-OVER:CAPS"><literal>CAIRO_OPERATOR_OVER</literal></link>.</para>
+<refsect3 id="cairo-set-operator.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>op</para></entry>
+<entry role="parameter_description"><para>a compositing operator, specified as a <link linkend="cairo-operator-t"><type>cairo_operator_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-operator" role="function" condition="since:1.0">
+<title>cairo_get_operator&#160;()</title>
+<indexterm zone="cairo-get-operator" role="1.0"><primary sortas="get_operator">cairo_get_operator</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-operator-t"><returnvalue>cairo_operator_t</returnvalue></link>
+cairo_get_operator (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current compositing operator for a cairo context.</para>
+<refsect3 id="cairo-get-operator.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-operator.returns" role="returns">
+<title>Returns</title>
+<para> the current compositing operator.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-set-tolerance" role="function" condition="since:1.0">
+<title>cairo_set_tolerance&#160;()</title>
+<indexterm zone="cairo-set-tolerance" role="1.0"><primary sortas="set_tolerance">cairo_set_tolerance</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_set_tolerance (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> tolerance</parameter>);</programlisting>
+<para>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 <parameter>tolerance</parameter>
+. 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.) The accuracy of paths
+within Cairo is limited by the precision of its internal arithmetic, and
+the prescribed <parameter>tolerance</parameter>
+ is restricted to the smallest
+representable internal value.</para>
+<refsect3 id="cairo-set-tolerance.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>tolerance</para></entry>
+<entry role="parameter_description"><para>the tolerance, in device units (typically pixels)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-tolerance" role="function" condition="since:1.0">
+<title>cairo_get_tolerance&#160;()</title>
+<indexterm zone="cairo-get-tolerance" role="1.0"><primary sortas="get_tolerance">cairo_get_tolerance</primary></indexterm>
+<programlisting language="C"><link linkend="double"><returnvalue>double</returnvalue></link>
+cairo_get_tolerance (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current tolerance value, as set by <link linkend="cairo-set-tolerance"><function>cairo_set_tolerance()</function></link>.</para>
+<refsect3 id="cairo-get-tolerance.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-tolerance.returns" role="returns">
+<title>Returns</title>
+<para> the current tolerance value.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-clip" role="function" condition="since:1.0">
+<title>cairo_clip&#160;()</title>
+<indexterm zone="cairo-clip" role="1.0"><primary sortas="clip">cairo_clip</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_clip (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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 <link linkend="cairo-clip"><function>cairo_clip()</function></link>, 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
+temporary 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>
+<refsect3 id="cairo-clip.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-clip-preserve" role="function" condition="since:1.0">
+<title>cairo_clip_preserve&#160;()</title>
+<indexterm zone="cairo-clip-preserve" role="1.0"><primary sortas="clip_preserve">cairo_clip_preserve</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_clip_preserve (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>, <link linkend="cairo-clip-preserve"><function>cairo_clip_preserve()</function></link> 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-preserve"><function>cairo_clip_preserve()</function></link> can only make the clip region smaller, never
+larger. But the current clip is part of the graphics state, so a
+temporary restriction of the clip region can be achieved by
+calling <link linkend="cairo-clip-preserve"><function>cairo_clip_preserve()</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>
+<refsect3 id="cairo-clip-preserve.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-clip-extents" role="function" condition="since:1.4">
+<title>cairo_clip_extents&#160;()</title>
+<indexterm zone="cairo-clip-extents" role="1.4"><primary sortas="clip_extents">cairo_clip_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_clip_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y2</parameter>);</programlisting>
+<para>Computes a bounding box in user coordinates covering the area inside the
+current clip.</para>
+<refsect3 id="cairo-clip-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>left of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>top of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x2</para></entry>
+<entry role="parameter_description"><para>right of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y2</para></entry>
+<entry role="parameter_description"><para>bottom of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-in-clip" role="function" condition="since:1.10">
+<title>cairo_in_clip&#160;()</title>
+<indexterm zone="cairo-in-clip" role="1.10"><primary sortas="in_clip">cairo_in_clip</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_in_clip (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Tests whether the given point is inside the area that would be
+visible through the current clip, i.e. the area that would be filled by
+a <link linkend="cairo-paint"><function>cairo_paint()</function></link> operation.</para>
+<para>See <link linkend="cairo-clip"><function>cairo_clip()</function></link>, and <link linkend="cairo-clip-preserve"><function>cairo_clip_preserve()</function></link>.</para>
+<refsect3 id="cairo-in-clip.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X coordinate of the point to test</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y coordinate of the point to test</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-in-clip.returns" role="returns">
+<title>Returns</title>
+<para> A non-zero value if the point is inside, or zero if
+outside.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.10">1.10</link></para></refsect2>
+<refsect2 id="cairo-reset-clip" role="function" condition="since:1.0">
+<title>cairo_reset_clip&#160;()</title>
+<indexterm zone="cairo-reset-clip" role="1.0"><primary sortas="reset_clip">cairo_reset_clip</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_reset_clip (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>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>
+<refsect3 id="cairo-reset-clip.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rectangle-list-destroy" role="function" condition="since:1.4">
+<title>cairo_rectangle_list_destroy&#160;()</title>
+<indexterm zone="cairo-rectangle-list-destroy" role="1.4"><primary sortas="rectangle_list_destroy">cairo_rectangle_list_destroy</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_rectangle_list_destroy (<parameter><link linkend="cairo-rectangle-list-t"><type>cairo_rectangle_list_t</type></link> *rectangle_list</parameter>);</programlisting>
+<para>Unconditionally frees <parameter>rectangle_list</parameter>
+ and all associated
+references. After this call, the <parameter>rectangle_list</parameter>
+ pointer must not
+be dereferenced.</para>
+<refsect3 id="cairo-rectangle-list-destroy.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>rectangle_list</para></entry>
+<entry role="parameter_description"><para>a rectangle list, as obtained from <link linkend="cairo-copy-clip-rectangle-list"><function>cairo_copy_clip_rectangle_list()</function></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-copy-clip-rectangle-list" role="function" condition="since:1.4">
+<title>cairo_copy_clip_rectangle_list&#160;()</title>
+<indexterm zone="cairo-copy-clip-rectangle-list" role="1.4"><primary sortas="copy_clip_rectangle_list">cairo_copy_clip_rectangle_list</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-rectangle-list-t"><returnvalue>cairo_rectangle_list_t</returnvalue></link>&#160;*
+cairo_copy_clip_rectangle_list (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Gets the current clip region as a list of rectangles in user coordinates.
+Never returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<para>The status in the list may be <link linkend="CAIRO-STATUS-CLIP-NOT-REPRESENTABLE:CAPS"><literal>CAIRO_STATUS_CLIP_NOT_REPRESENTABLE</literal></link> to
+indicate that the clip region cannot be represented as a list of
+user-space rectangles. The status may have other values to indicate
+other errors.</para>
+<refsect3 id="cairo-copy-clip-rectangle-list.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-copy-clip-rectangle-list.returns" role="returns">
+<title>Returns</title>
+<para> the current clip region as a list of rectangles in user coordinates,
+which should be destroyed using <link linkend="cairo-rectangle-list-destroy"><function>cairo_rectangle_list_destroy()</function></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-fill" role="function" condition="since:1.0">
+<title>cairo_fill&#160;()</title>
+<indexterm zone="cairo-fill" role="1.0"><primary sortas="fill">cairo_fill</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_fill (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>A drawing operator that fills the current path according to the
+current fill rule, (each sub-path is implicitly closed before being
+filled). After <link linkend="cairo-fill"><function>cairo_fill()</function></link>, 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>
+<refsect3 id="cairo-fill.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-fill-preserve" role="function" condition="since:1.0">
+<title>cairo_fill_preserve&#160;()</title>
+<indexterm zone="cairo-fill-preserve" role="1.0"><primary sortas="fill_preserve">cairo_fill_preserve</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_fill_preserve (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>A drawing operator that fills the current path according to the
+current fill rule, (each sub-path is implicitly closed before being
+filled). Unlike <link linkend="cairo-fill"><function>cairo_fill()</function></link>, <link linkend="cairo-fill-preserve"><function>cairo_fill_preserve()</function></link> 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>
+<refsect3 id="cairo-fill-preserve.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-fill-extents" role="function" condition="since:1.0">
+<title>cairo_fill_extents&#160;()</title>
+<indexterm zone="cairo-fill-extents" role="1.0"><primary sortas="fill_extents">cairo_fill_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_fill_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y2</parameter>);</programlisting>
+<para>Computes a bounding box in user coordinates covering the area that
+would be affected, (the "inked" area), by a <link linkend="cairo-fill"><function>cairo_fill()</function></link> operation
+given the current path and fill parameters. If the current path is
+empty, returns an empty rectangle ((0,0), (0,0)). Surface
+dimensions and clipping are not taken into account.</para>
+<para>Contrast with <link linkend="cairo-path-extents"><function>cairo_path_extents()</function></link>, which is similar, but returns
+non-zero extents for some paths with no inked area, (such as a
+simple line segment).</para>
+<para>Note that <link linkend="cairo-fill-extents"><function>cairo_fill_extents()</function></link> must necessarily do more work to
+compute the precise inked areas in light of the fill rule, so
+<link linkend="cairo-path-extents"><function>cairo_path_extents()</function></link> may be more desirable for sake of performance
+if the non-inked path extents are desired.</para>
+<para>See <link linkend="cairo-fill"><function>cairo_fill()</function></link>, <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>
+<refsect3 id="cairo-fill-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>left of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>top of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x2</para></entry>
+<entry role="parameter_description"><para>right of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y2</para></entry>
+<entry role="parameter_description"><para>bottom of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-in-fill" role="function" condition="since:1.0">
+<title>cairo_in_fill&#160;()</title>
+<indexterm zone="cairo-in-fill" role="1.0"><primary sortas="in_fill">cairo_in_fill</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_in_fill (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Tests whether the given point is inside the area that would be
+affected by a <link linkend="cairo-fill"><function>cairo_fill()</function></link> operation given the current path and
+filling parameters. Surface dimensions and clipping are not taken
+into account.</para>
+<para>See <link linkend="cairo-fill"><function>cairo_fill()</function></link>, <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>
+<refsect3 id="cairo-in-fill.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X coordinate of the point to test</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y coordinate of the point to test</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-in-fill.returns" role="returns">
+<title>Returns</title>
+<para> A non-zero value if the point is inside, or zero if
+outside.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-mask" role="function" condition="since:1.0">
+<title>cairo_mask&#160;()</title>
+<indexterm zone="cairo-mask" role="1.0"><primary sortas="mask">cairo_mask</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mask (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link> *pattern</parameter>);</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>pattern</parameter>
+ are painted with the source, transparent
+areas are not painted.)</para>
+<refsect3 id="cairo-mask.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>pattern</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-pattern-t"><type>cairo_pattern_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-mask-surface" role="function" condition="since:1.0">
+<title>cairo_mask_surface&#160;()</title>
+<indexterm zone="cairo-mask-surface" role="1.0"><primary sortas="mask_surface">cairo_mask_surface</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_mask_surface (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> surface_x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> surface_y</parameter>);</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>
+<refsect3 id="cairo-mask-surface.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>surface</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>surface_x</para></entry>
+<entry role="parameter_description"><para>X coordinate at which to place the origin of <parameter>surface</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>surface_y</para></entry>
+<entry role="parameter_description"><para>Y coordinate at which to place the origin of <parameter>surface</parameter>
+</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-paint" role="function" condition="since:1.0">
+<title>cairo_paint&#160;()</title>
+<indexterm zone="cairo-paint" role="1.0"><primary sortas="paint">cairo_paint</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_paint (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>A drawing operator that paints the current source everywhere within
+the current clip region.</para>
+<refsect3 id="cairo-paint.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-paint-with-alpha" role="function" condition="since:1.0">
+<title>cairo_paint_with_alpha&#160;()</title>
+<indexterm zone="cairo-paint-with-alpha" role="1.0"><primary sortas="paint_with_alpha">cairo_paint_with_alpha</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_paint_with_alpha (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> alpha</parameter>);</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>
+<refsect3 id="cairo-paint-with-alpha.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>alpha</para></entry>
+<entry role="parameter_description"><para>alpha value, between 0 (transparent) and 1 (opaque)</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-stroke" role="function" condition="since:1.0">
+<title>cairo_stroke&#160;()</title>
+<indexterm zone="cairo-stroke" role="1.0"><primary sortas="stroke">cairo_stroke</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_stroke (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>A drawing operator that strokes the current path according to the
+current line width, line join, line cap, and dash settings. After
+<link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, 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>Note: Degenerate segments and sub-paths are treated specially and
+provide a useful result. These can result in two different
+situations:</para>
+<orderedlist>
+<listitem>
+<para>Zero-length "on" segments set in <link linkend="cairo-set-dash"><function>cairo_set_dash()</function></link>. If the cap
+style is <link linkend="CAIRO-LINE-CAP-ROUND:CAPS"><literal>CAIRO_LINE_CAP_ROUND</literal></link> or <link linkend="CAIRO-LINE-CAP-SQUARE:CAPS"><literal>CAIRO_LINE_CAP_SQUARE</literal></link> then these
+segments will be drawn as circular dots or squares respectively. In
+the case of <link linkend="CAIRO-LINE-CAP-SQUARE:CAPS"><literal>CAIRO_LINE_CAP_SQUARE</literal></link>, the orientation of the squares
+is determined by the direction of the underlying path.</para>
+</listitem>
+<listitem>
+<para>A sub-path created by <link linkend="cairo-move-to"><function>cairo_move_to()</function></link> followed by either a
+<link linkend="cairo-close-path"><function>cairo_close_path()</function></link> or one or more calls to <link linkend="cairo-line-to"><function>cairo_line_to()</function></link> to the
+same coordinate as the <link linkend="cairo-move-to"><function>cairo_move_to()</function></link>. If the cap style is
+<link linkend="CAIRO-LINE-CAP-ROUND:CAPS"><literal>CAIRO_LINE_CAP_ROUND</literal></link> then these sub-paths will be drawn as circular
+dots. Note that in the case of <link linkend="CAIRO-LINE-CAP-SQUARE:CAPS"><literal>CAIRO_LINE_CAP_SQUARE</literal></link> a degenerate
+sub-path will not be drawn at all, (since the correct orientation
+is indeterminate).</para>
+</listitem>
+</orderedlist>
+<para>In no case will a cap style of <link linkend="CAIRO-LINE-CAP-BUTT:CAPS"><literal>CAIRO_LINE_CAP_BUTT</literal></link> cause anything
+to be drawn in the case of either degenerate segments or sub-paths.</para>
+<refsect3 id="cairo-stroke.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-stroke-preserve" role="function" condition="since:1.0">
+<title>cairo_stroke_preserve&#160;()</title>
+<indexterm zone="cairo-stroke-preserve" role="1.0"><primary sortas="stroke_preserve">cairo_stroke_preserve</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_stroke_preserve (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</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>, <link linkend="cairo-stroke-preserve"><function>cairo_stroke_preserve()</function></link> 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>
+<refsect3 id="cairo-stroke-preserve.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-stroke-extents" role="function" condition="since:1.0">
+<title>cairo_stroke_extents&#160;()</title>
+<indexterm zone="cairo-stroke-extents" role="1.0"><primary sortas="stroke_extents">cairo_stroke_extents</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_stroke_extents (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y1</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *x2</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> *y2</parameter>);</programlisting>
+<para>Computes a bounding box in user coordinates covering the area that
+would be affected, (the "inked" area), by a <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>
+operation given the current path and stroke parameters.
+If the current path is empty, returns an empty rectangle ((0,0), (0,0)).
+Surface dimensions and clipping are not taken into account.</para>
+<para>Note that if the line width is set to exactly zero, then
+<link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link> will return an empty rectangle. Contrast with
+<link linkend="cairo-path-extents"><function>cairo_path_extents()</function></link> which can be used to compute the non-empty
+bounds as the line width approaches zero.</para>
+<para>Note that <link linkend="cairo-stroke-extents"><function>cairo_stroke_extents()</function></link> must necessarily do more work to
+compute the precise inked areas in light of the stroke parameters,
+so <link linkend="cairo-path-extents"><function>cairo_path_extents()</function></link> may be more desirable for sake of
+performance if non-inked path extents are desired.</para>
+<para>See <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, <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>
+<refsect3 id="cairo-stroke-extents.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x1</para></entry>
+<entry role="parameter_description"><para>left of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y1</para></entry>
+<entry role="parameter_description"><para>top of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x2</para></entry>
+<entry role="parameter_description"><para>right of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y2</para></entry>
+<entry role="parameter_description"><para>bottom of the resulting extents</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-in-stroke" role="function" condition="since:1.0">
+<title>cairo_in_stroke&#160;()</title>
+<indexterm zone="cairo-in-stroke" role="1.0"><primary sortas="in_stroke">cairo_in_stroke</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-bool-t"><returnvalue>cairo_bool_t</returnvalue></link>
+cairo_in_stroke (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> x</parameter>,
+ <parameter><link linkend="double"><type>double</type></link> y</parameter>);</programlisting>
+<para>Tests whether the given point is inside the area that would be
+affected by a <link linkend="cairo-stroke"><function>cairo_stroke()</function></link> operation given the current path and
+stroking parameters. Surface dimensions and clipping are not taken
+into account.</para>
+<para>See <link linkend="cairo-stroke"><function>cairo_stroke()</function></link>, <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>
+<refsect3 id="cairo-in-stroke.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>x</para></entry>
+<entry role="parameter_description"><para>X coordinate of the point to test</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>y</para></entry>
+<entry role="parameter_description"><para>Y coordinate of the point to test</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-in-stroke.returns" role="returns">
+<title>Returns</title>
+<para> A non-zero value if the point is inside, or zero if
+outside.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-copy-page" role="function" condition="since:1.0">
+<title>cairo_copy_page&#160;()</title>
+<indexterm zone="cairo-copy-page" role="1.0"><primary sortas="copy_page">cairo_copy_page</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_copy_page (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Emits the current page for backends that support multiple pages, but
+doesn't clear it, so, the contents of the current page will be retained
+for the next page too. Use <link linkend="cairo-show-page"><function>cairo_show_page()</function></link> if you want to get an
+empty page after the emission.</para>
+<para>This is a convenience function that simply calls
+<link linkend="cairo-surface-copy-page"><function>cairo_surface_copy_page()</function></link> on <parameter>cr</parameter>
+'s target.</para>
+<refsect3 id="cairo-copy-page.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-show-page" role="function" condition="since:1.0">
+<title>cairo_show_page&#160;()</title>
+<indexterm zone="cairo-show-page" role="1.0"><primary sortas="show_page">cairo_show_page</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
+cairo_show_page (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Emits and clears the current page for backends that support multiple
+pages. Use <link linkend="cairo-copy-page"><function>cairo_copy_page()</function></link> if you don't want to clear the page.</para>
+<para>This is a convenience function that simply calls
+<link linkend="cairo-surface-show-page"><function>cairo_surface_show_page()</function></link> on <parameter>cr</parameter>
+'s target.</para>
+<refsect3 id="cairo-show-page.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a cairo context</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-get-reference-count" role="function" condition="since:1.4">
+<title>cairo_get_reference_count&#160;()</title>
+<indexterm zone="cairo-get-reference-count" role="1.4"><primary sortas="get_reference_count">cairo_get_reference_count</primary></indexterm>
+<programlisting language="C">unsigned <link linkend="int"><returnvalue>int</returnvalue></link>
+cairo_get_reference_count (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>);</programlisting>
+<para>Returns the current reference count of <parameter>cr</parameter>
+.</para>
+<refsect3 id="cairo-get-reference-count.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-reference-count.returns" role="returns">
+<title>Returns</title>
+<para> the current reference count of <parameter>cr</parameter>
+. If the
+object is a nil object, 0 will be returned.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-set-user-data" role="function" condition="since:1.4">
+<title>cairo_set_user_data&#160;()</title>
+<indexterm zone="cairo-set-user-data" role="1.4"><primary sortas="set_user_data">cairo_set_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="cairo-status-t"><returnvalue>cairo_status_t</returnvalue></link>
+cairo_set_user_data (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>,
+ <parameter><link linkend="void"><type>void</type></link> *user_data</parameter>,
+ <parameter><link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> destroy</parameter>);</programlisting>
+<para>Attach user data to <parameter>cr</parameter>
+. To remove user data from a surface,
+call this function with the key that was used to set it and <link linkend="NULL:CAPS"><literal>NULL</literal></link>
+for <parameter>data</parameter>
+.</para>
+<refsect3 id="cairo-set-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>user_data</para></entry>
+<entry role="parameter_description"><para>the user data to attach to the <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>destroy</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-destroy-func-t"><type>cairo_destroy_func_t</type></link> which will be called when the
+<link linkend="cairo-t"><type>cairo_t</type></link> is destroyed or when new user data is attached using the
+same key.</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-set-user-data.returns" role="returns">
+<title>Returns</title>
+<para> <link linkend="CAIRO-STATUS-SUCCESS:CAPS"><literal>CAIRO_STATUS_SUCCESS</literal></link> or <link linkend="CAIRO-STATUS-NO-MEMORY:CAPS"><literal>CAIRO_STATUS_NO_MEMORY</literal></link> if a
+slot could not be allocated for the user data.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-get-user-data" role="function" condition="since:1.4">
+<title>cairo_get_user_data&#160;()</title>
+<indexterm zone="cairo-get-user-data" role="1.4"><primary sortas="get_user_data">cairo_get_user_data</primary></indexterm>
+<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>&#160;*
+cairo_get_user_data (<parameter><link linkend="cairo-t"><type>cairo_t</type></link> *cr</parameter>,
+ <parameter>const <link linkend="cairo-user-data-key-t"><type>cairo_user_data_key_t</type></link> *key</parameter>);</programlisting>
+<para>Return user data previously attached to <parameter>cr</parameter>
+ using the specified
+key. If no user data has been attached with the given key this
+function returns <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+<refsect3 id="cairo-get-user-data.parameters" role="parameters">
+<title>Parameters</title>
+<informaltable role="parameters_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="parameters_name" colwidth="150px"/>
+<colspec colname="parameters_description"/>
+<colspec colname="parameters_annotations" colwidth="200px"/>
+<tbody>
+<row><entry role="parameter_name"><para>cr</para></entry>
+<entry role="parameter_description"><para>a <link linkend="cairo-t"><type>cairo_t</type></link></para></entry>
+<entry role="parameter_annotations"></entry></row>
+<row><entry role="parameter_name"><para>key</para></entry>
+<entry role="parameter_description"><para>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</para></entry>
+<entry role="parameter_annotations"></entry></row>
+</tbody></tgroup></informaltable>
+</refsect3><refsect3 id="cairo-get-user-data.returns" role="returns">
+<title>Returns</title>
+<para> the user data previously attached or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
+</refsect3><para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-t.other_details" role="details">
+<title role="details.title">Types and Values</title>
+<refsect2 id="cairo-t" role="typedef" condition="since:1.0">
+<title>cairo_t</title>
+<indexterm zone="cairo-t" role="1.0"><primary sortas="t">cairo_t</primary></indexterm>
+<programlisting language="C">typedef struct _cairo cairo_t;
+</programlisting>
+<para>A <link linkend="cairo-t"><type>cairo_t</type></link> contains the current state of the rendering device,
+including coordinates of yet to be drawn shapes.</para>
+<para>Cairo contexts, as <link linkend="cairo-t"><type>cairo_t</type></link> objects are named, are central to
+cairo and all drawing with cairo is always done to a <link linkend="cairo-t"><type>cairo_t</type></link>
+object.</para>
+<para>Memory management of <link linkend="cairo-t"><type>cairo_t</type></link> is done with
+<link linkend="cairo-reference"><function>cairo_reference()</function></link> and <link linkend="cairo-destroy"><function>cairo_destroy()</function></link>.</para>
+<para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-antialias-t" role="enum" condition="since:1.0">
+<title>enum cairo_antialias_t</title>
+<indexterm zone="cairo-antialias-t" role="1.0"><primary sortas="antialias_t">cairo_antialias_t</primary></indexterm>
+<para>Specifies the type of antialiasing to do when rendering text or shapes.</para>
+<para>As it is not necessarily clear from the above what advantages a particular
+antialias method provides, since 1.12, there is also a set of hints:
+<parameter>CAIRO_ANTIALIAS_FAST</parameter>
+: Allow the backend to degrade raster quality for speed
+<parameter>CAIRO_ANTIALIAS_GOOD</parameter>
+: A balance between speed and quality
+<parameter>CAIRO_ANTIALIAS_BEST</parameter>
+: A high-fidelity, but potentially slow, raster mode</para>
+<para>These make no guarantee on how the backend will perform its rasterisation
+(if it even rasterises!), nor that they have any differing effect other
+than to enable some form of antialiasing. In the case of glyph rendering,
+<parameter>CAIRO_ANTIALIAS_FAST</parameter>
+ and <parameter>CAIRO_ANTIALIAS_GOOD</parameter>
+ will be mapped to
+<parameter>CAIRO_ANTIALIAS_GRAY</parameter>
+, with <parameter>CAIRO_ANTALIAS_BEST</parameter>
+ being equivalent to
+<parameter>CAIRO_ANTIALIAS_SUBPIXEL</parameter>
+.</para>
+<para>The interpretation of <parameter>CAIRO_ANTIALIAS_DEFAULT</parameter>
+ is left entirely up to
+the backend, typically this will be similar to <parameter>CAIRO_ANTIALIAS_GOOD</parameter>
+.</para>
+<refsect3 id="cairo-antialias-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-DEFAULT:CAPS">CAIRO_ANTIALIAS_DEFAULT</para></entry>
+<entry role="enum_member_description"><para>Use the default antialiasing for
+ the subsystem and target device, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-NONE:CAPS">CAIRO_ANTIALIAS_NONE</para></entry>
+<entry role="enum_member_description"><para>Use a bilevel alpha mask, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-GRAY:CAPS">CAIRO_ANTIALIAS_GRAY</para></entry>
+<entry role="enum_member_description"><para>Perform single-color antialiasing (using
+ shades of gray for black text on a white background, for example), since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-SUBPIXEL:CAPS">CAIRO_ANTIALIAS_SUBPIXEL</para></entry>
+<entry role="enum_member_description"><para>Perform antialiasing by taking
+ advantage of the order of subpixel elements on devices
+ such as LCD panels, since 1.0</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-FAST:CAPS">CAIRO_ANTIALIAS_FAST</para></entry>
+<entry role="enum_member_description"><para>Hint that the backend should perform some
+antialiasing but prefer speed over quality, since 1.12</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-GOOD:CAPS">CAIRO_ANTIALIAS_GOOD</para></entry>
+<entry role="enum_member_description"><para>The backend should balance quality against
+performance, since 1.12</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-ANTIALIAS-BEST:CAPS">CAIRO_ANTIALIAS_BEST</para></entry>
+<entry role="enum_member_description"><para>Hint that the backend should render at the highest
+quality, sacrificing speed if necessary, since 1.12</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-fill-rule-t" role="enum" condition="since:1.0">
+<title>enum cairo_fill_rule_t</title>
+<indexterm zone="cairo-fill-rule-t" role="1.0"><primary sortas="fill_rule_t">cairo_fill_rule_t</primary></indexterm>
+<para><link linkend="cairo-fill-rule-t"><type>cairo_fill_rule_t</type></link> 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
+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.)</para>
+<para>The default fill rule is <link linkend="CAIRO-FILL-RULE-WINDING:CAPS"><literal>CAIRO_FILL_RULE_WINDING</literal></link>.</para>
+<para>New entries may be added in future versions.</para>
+<refsect3 id="cairo-fill-rule-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILL-RULE-WINDING:CAPS">CAIRO_FILL_RULE_WINDING</para></entry>
+<entry role="enum_member_description"><para>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. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-FILL-RULE-EVEN-ODD:CAPS">CAIRO_FILL_RULE_EVEN_ODD</para></entry>
+<entry role="enum_member_description"><para>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. (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-line-cap-t" role="enum" condition="since:1.0">
+<title>enum cairo_line_cap_t</title>
+<indexterm zone="cairo-line-cap-t" role="1.0"><primary sortas="line_cap_t">cairo_line_cap_t</primary></indexterm>
+<para>Specifies how to render the endpoints of the path when stroking.</para>
+<para>The default line cap style is <link linkend="CAIRO-LINE-CAP-BUTT:CAPS"><literal>CAIRO_LINE_CAP_BUTT</literal></link>.</para>
+<refsect3 id="cairo-line-cap-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-LINE-CAP-BUTT:CAPS">CAIRO_LINE_CAP_BUTT</para></entry>
+<entry role="enum_member_description"><para>start(stop) the line exactly at the start(end) point (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-LINE-CAP-ROUND:CAPS">CAIRO_LINE_CAP_ROUND</para></entry>
+<entry role="enum_member_description"><para>use a round ending, the center of the circle is the end point (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-LINE-CAP-SQUARE:CAPS">CAIRO_LINE_CAP_SQUARE</para></entry>
+<entry role="enum_member_description"><para>use squared ending, the center of the square is the end point (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-line-join-t" role="enum" condition="since:1.0">
+<title>enum cairo_line_join_t</title>
+<indexterm zone="cairo-line-join-t" role="1.0"><primary sortas="line_join_t">cairo_line_join_t</primary></indexterm>
+<para>Specifies how to render the junction of two lines when stroking.</para>
+<para>The default line join style is <link linkend="CAIRO-LINE-JOIN-MITER:CAPS"><literal>CAIRO_LINE_JOIN_MITER</literal></link>.</para>
+<refsect3 id="cairo-line-join-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-LINE-JOIN-MITER:CAPS">CAIRO_LINE_JOIN_MITER</para></entry>
+<entry role="enum_member_description"><para>use a sharp (angled) corner, see
+<link linkend="cairo-set-miter-limit"><function>cairo_set_miter_limit()</function></link> (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-LINE-JOIN-ROUND:CAPS">CAIRO_LINE_JOIN_ROUND</para></entry>
+<entry role="enum_member_description"><para>use a rounded join, the center of the circle is the
+joint point (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-LINE-JOIN-BEVEL:CAPS">CAIRO_LINE_JOIN_BEVEL</para></entry>
+<entry role="enum_member_description"><para>use a cut-off join, the join is cut off at half
+the line width from the joint point (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-operator-t" role="enum" condition="since:1.0">
+<title>enum cairo_operator_t</title>
+<indexterm zone="cairo-operator-t" role="1.0"><primary sortas="operator_t">cairo_operator_t</primary></indexterm>
+<para><link linkend="cairo-operator-t"><type>cairo_operator_t</type></link> is used to set the compositing operator for all cairo
+drawing operations.</para>
+<para>The default operator is <link linkend="CAIRO-OPERATOR-OVER:CAPS"><literal>CAIRO_OPERATOR_OVER</literal></link>.</para>
+<para>The operators marked as <firstterm>unbounded</firstterm> modify their
+destination even outside of the mask layer (that is, their effect is not
+bound by the mask layer). However, their effect can still be limited by
+way of clipping.</para>
+<para>To keep things simple, the operator descriptions here
+document the behavior for when both source and destination are either fully
+transparent or fully opaque. The actual implementation works for
+translucent layers too.
+For a more detailed explanation of the effects of each operator, including
+the mathematical definitions, see</para>
+<ulink url="https://cairographics.org/operators/">https://cairographics.org/operators/</ulink>.
+<refsect3 id="cairo-operator-t.members" role="enum_members">
+<title>Members</title>
+<informaltable role="enum_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="enum_members_name" colwidth="300px"/>
+<colspec colname="enum_members_description"/>
+<colspec colname="enum_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-CLEAR:CAPS">CAIRO_OPERATOR_CLEAR</para></entry>
+<entry role="enum_member_description"><para>clear destination layer (bounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-SOURCE:CAPS">CAIRO_OPERATOR_SOURCE</para></entry>
+<entry role="enum_member_description"><para>replace destination layer (bounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-OVER:CAPS">CAIRO_OPERATOR_OVER</para></entry>
+<entry role="enum_member_description"><para>draw source layer on top of destination layer
+(bounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-IN:CAPS">CAIRO_OPERATOR_IN</para></entry>
+<entry role="enum_member_description"><para>draw source where there was destination content
+(unbounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-OUT:CAPS">CAIRO_OPERATOR_OUT</para></entry>
+<entry role="enum_member_description"><para>draw source where there was no destination
+content (unbounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-ATOP:CAPS">CAIRO_OPERATOR_ATOP</para></entry>
+<entry role="enum_member_description"><para>draw source on top of destination content and
+only there (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DEST:CAPS">CAIRO_OPERATOR_DEST</para></entry>
+<entry role="enum_member_description"><para>ignore the source (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DEST-OVER:CAPS">CAIRO_OPERATOR_DEST_OVER</para></entry>
+<entry role="enum_member_description"><para>draw destination on top of source (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DEST-IN:CAPS">CAIRO_OPERATOR_DEST_IN</para></entry>
+<entry role="enum_member_description"><para>leave destination only where there was
+source content (unbounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DEST-OUT:CAPS">CAIRO_OPERATOR_DEST_OUT</para></entry>
+<entry role="enum_member_description"><para>leave destination only where there was no
+source content (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DEST-ATOP:CAPS">CAIRO_OPERATOR_DEST_ATOP</para></entry>
+<entry role="enum_member_description"><para>leave destination on top of source content
+and only there (unbounded) (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-XOR:CAPS">CAIRO_OPERATOR_XOR</para></entry>
+<entry role="enum_member_description"><para>source and destination are shown where there is only
+one of them (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-ADD:CAPS">CAIRO_OPERATOR_ADD</para></entry>
+<entry role="enum_member_description"><para>source and destination layers are accumulated (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-SATURATE:CAPS">CAIRO_OPERATOR_SATURATE</para></entry>
+<entry role="enum_member_description"><para>like over, but assuming source and dest are
+disjoint geometries (Since 1.0)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-MULTIPLY:CAPS">CAIRO_OPERATOR_MULTIPLY</para></entry>
+<entry role="enum_member_description"><para>source and destination layers are multiplied.
+This causes the result to be at least as dark as the darker inputs. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-SCREEN:CAPS">CAIRO_OPERATOR_SCREEN</para></entry>
+<entry role="enum_member_description"><para>source and destination are complemented and
+multiplied. This causes the result to be at least as light as the lighter
+inputs. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-OVERLAY:CAPS">CAIRO_OPERATOR_OVERLAY</para></entry>
+<entry role="enum_member_description"><para>multiplies or screens, depending on the
+lightness of the destination color. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DARKEN:CAPS">CAIRO_OPERATOR_DARKEN</para></entry>
+<entry role="enum_member_description"><para>replaces the destination with the source if it
+is darker, otherwise keeps the source. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-LIGHTEN:CAPS">CAIRO_OPERATOR_LIGHTEN</para></entry>
+<entry role="enum_member_description"><para>replaces the destination with the source if it
+is lighter, otherwise keeps the source. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-COLOR-DODGE:CAPS">CAIRO_OPERATOR_COLOR_DODGE</para></entry>
+<entry role="enum_member_description"><para>brightens the destination color to reflect
+the source color. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-COLOR-BURN:CAPS">CAIRO_OPERATOR_COLOR_BURN</para></entry>
+<entry role="enum_member_description"><para>darkens the destination color to reflect
+the source color. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-HARD-LIGHT:CAPS">CAIRO_OPERATOR_HARD_LIGHT</para></entry>
+<entry role="enum_member_description"><para>Multiplies or screens, dependent on source
+color. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-SOFT-LIGHT:CAPS">CAIRO_OPERATOR_SOFT_LIGHT</para></entry>
+<entry role="enum_member_description"><para>Darkens or lightens, dependent on source
+color. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-DIFFERENCE:CAPS">CAIRO_OPERATOR_DIFFERENCE</para></entry>
+<entry role="enum_member_description"><para>Takes the difference of the source and
+destination color. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-EXCLUSION:CAPS">CAIRO_OPERATOR_EXCLUSION</para></entry>
+<entry role="enum_member_description"><para>Produces an effect similar to difference, but
+with lower contrast. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-HSL-HUE:CAPS">CAIRO_OPERATOR_HSL_HUE</para></entry>
+<entry role="enum_member_description"><para>Creates a color with the hue of the source
+and the saturation and luminosity of the target. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-HSL-SATURATION:CAPS">CAIRO_OPERATOR_HSL_SATURATION</para></entry>
+<entry role="enum_member_description"><para>Creates a color with the saturation
+of the source and the hue and luminosity of the target. Painting with
+this mode onto a gray area produces no change. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-HSL-COLOR:CAPS">CAIRO_OPERATOR_HSL_COLOR</para></entry>
+<entry role="enum_member_description"><para>Creates a color with the hue and saturation
+of the source and the luminosity of the target. This preserves the gray
+levels of the target and is useful for coloring monochrome images or
+tinting color images. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+<row role="constant"><entry role="enum_member_name"><para id="CAIRO-OPERATOR-HSL-LUMINOSITY:CAPS">CAIRO_OPERATOR_HSL_LUMINOSITY</para></entry>
+<entry role="enum_member_description"><para>Creates a color with the luminosity of
+the source and the hue and saturation of the target. This produces an
+inverse effect to <parameter>CAIRO_OPERATOR_HSL_COLOR</parameter>
+. (Since 1.10)</para>
+</entry>
+<entry role="enum_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3><para role="since">Since: <link linkend="api-index-1.0">1.0</link></para></refsect2>
+<refsect2 id="cairo-rectangle-t" role="struct" condition="since:1.4">
+<title>cairo_rectangle_t</title>
+<indexterm zone="cairo-rectangle-t" role="1.4"><primary sortas="rectangle_t">cairo_rectangle_t</primary></indexterm>
+<programlisting language="C">typedef struct {
+ double x, y, width, height;
+} cairo_rectangle_t;
+</programlisting>
+<para>A data structure for holding a rectangle.</para>
+<refsect3 id="cairo-rectangle-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-rectangle-t.x">x</structfield>;</para></entry>
+<entry role="struct_member_description"><para>X coordinate of the left side of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-rectangle-t.y">y</structfield>;</para></entry>
+<entry role="struct_member_description"><para>Y coordinate of the the top side of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-rectangle-t.width">width</structfield>;</para></entry>
+<entry role="struct_member_description"><para>width of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="double"><type>double</type></link>&#160;<structfield id="cairo-rectangle-t.height">height</structfield>;</para></entry>
+<entry role="struct_member_description"><para>height of the rectangle</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+<refsect2 id="cairo-rectangle-list-t" role="struct" condition="since:1.4">
+<title>cairo_rectangle_list_t</title>
+<indexterm zone="cairo-rectangle-list-t" role="1.4"><primary sortas="rectangle_list_t">cairo_rectangle_list_t</primary></indexterm>
+<programlisting language="C">typedef struct {
+ cairo_status_t status;
+ cairo_rectangle_t *rectangles;
+ int num_rectangles;
+} cairo_rectangle_list_t;
+</programlisting>
+<para>A data structure for holding a dynamically allocated
+array of rectangles.</para>
+<refsect3 id="cairo-rectangle-list-t.members" role="struct_members">
+<title>Members</title>
+<informaltable role="struct_members_table" pgwide="1" frame="none">
+<tgroup cols="3">
+<colspec colname="struct_members_name" colwidth="300px"/>
+<colspec colname="struct_members_description"/>
+<colspec colname="struct_members_annotations" colwidth="200px"/>
+<tbody>
+<row role="member"><entry role="struct_member_name"><para><link linkend="cairo-status-t"><type>cairo_status_t</type></link>&#160;<structfield id="cairo-rectangle-list-t.status">status</structfield>;</para></entry>
+<entry role="struct_member_description"><para>Error status of the rectangle list</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="cairo-rectangle-t"><type>cairo_rectangle_t</type></link>&#160;*<structfield id="cairo-rectangle-list-t.rectangles">rectangles</structfield>;</para></entry>
+<entry role="struct_member_description"><para>Array containing the rectangles</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+<row role="member"><entry role="struct_member_name"><para><link linkend="int"><type>int</type></link>&#160;<structfield id="cairo-rectangle-list-t.num-rectangles">num_rectangles</structfield>;</para></entry>
+<entry role="struct_member_description"><para>Number of rectangles in this list</para></entry>
+<entry role="struct_member_annotations"></entry>
+</row>
+</tbody></tgroup></informaltable>
+</refsect3>
+<para role="since">Since: <link linkend="api-index-1.4">1.4</link></para></refsect2>
+
+</refsect1>
+<refsect1 id="cairo-cairo-t.see-also">
+<title>See Also</title>
+<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>
+
+</refsect1>
+
+</refentry>