[cairo-commit] 12 commits - src/cairo-arc.c src/cairo-beos-surface.cpp src/cairo.c src/cairo-debug.c src/cairo-device.c src/cairo-font-face.c src/cairo-font-options.c src/cairo-ft-font.c src/cairo-gl.h src/cairo-gl-surface.c src/cairo-gl-surface-legacy.c src/cairo-gstate.c src/cairo.h src/cairo-image-surface.c src/cairo-malloc-private.h src/cairo-matrix.c src/cairo-misc.c src/cairo-path.c src/cairo-path-stroke.c src/cairo-pattern.c src/cairo-pdf.h src/cairo-pdf-surface.c src/cairo-png.c src/cairo-ps.h src/cairo-ps-surface.c src/cairo-qt-surface.cpp src/cairo-quartz-font.c src/cairo-quartz-image-surface.c src/cairo-quartz-surface.c src/cairo-recording-surface.c src/cairo-region.c src/cairo-scaled-font.c src/cairo-scaled-font-subsets-private.h src/cairo-script.h src/cairo-script-surface.c src/cairo-skia-surface.cpp src/cairo-surface.c src/cairo-surface-snapshot.c src/cairo-svg.h src/cairo-svg-surface.c src/cairo-traps.c src/cairo-types-private.h src/cairo-user-font.c src/cairo-versio n.c src/cairo-wideint.c src/cairo-xcb-surface.c src/cairo-xcb-surface-render.c src/cairo-xlib-display.c src/cairo-xlib-surface.c src/check-doc-syntax.awk src/check-doc-syntax.sh src/Makefile.am src/win32

Andrea Canciani ranma42 at kemper.freedesktop.org
Thu Mar 29 02:03:57 PDT 2012


 src/Makefile.am                         |    4 
 src/cairo-arc.c                         |    2 
 src/cairo-beos-surface.cpp              |    6 
 src/cairo-debug.c                       |    2 
 src/cairo-device.c                      |    2 
 src/cairo-font-face.c                   |   12 +
 src/cairo-font-options.c                |   40 ++-
 src/cairo-ft-font.c                     |   20 +
 src/cairo-gl-surface-legacy.c           |    2 
 src/cairo-gl-surface.c                  |    2 
 src/cairo-gl.h                          |    2 
 src/cairo-gstate.c                      |    4 
 src/cairo-image-surface.c               |   14 +
 src/cairo-malloc-private.h              |   10 
 src/cairo-matrix.c                      |   26 ++
 src/cairo-misc.c                        |   16 -
 src/cairo-path-stroke.c                 |    4 
 src/cairo-path.c                        |    4 
 src/cairo-pattern.c                     |   80 +++++--
 src/cairo-pdf-surface.c                 |   10 
 src/cairo-pdf.h                         |    8 
 src/cairo-png.c                         |   14 +
 src/cairo-ps-surface.c                  |    8 
 src/cairo-ps.h                          |    8 
 src/cairo-qt-surface.cpp                |   32 +--
 src/cairo-quartz-font.c                 |   12 -
 src/cairo-quartz-image-surface.c        |    2 
 src/cairo-quartz-surface.c              |   18 -
 src/cairo-recording-surface.c           |    6 
 src/cairo-region.c                      |   14 -
 src/cairo-scaled-font-subsets-private.h |    8 
 src/cairo-scaled-font.c                 |   14 +
 src/cairo-script-surface.c              |   22 +-
 src/cairo-script.h                      |    6 
 src/cairo-skia-surface.cpp              |    4 
 src/cairo-surface-snapshot.c            |    2 
 src/cairo-surface.c                     |   60 ++++-
 src/cairo-svg-surface.c                 |    8 
 src/cairo-svg.h                         |    8 
 src/cairo-traps.c                       |    2 
 src/cairo-types-private.h               |    2 
 src/cairo-user-font.c                   |    6 
 src/cairo-version.c                     |   40 ++-
 src/cairo-wideint.c                     |    3 
 src/cairo-xcb-surface-render.c          |    2 
 src/cairo-xcb-surface.c                 |    4 
 src/cairo-xlib-display.c                |    2 
 src/cairo-xlib-surface.c                |   22 +-
 src/cairo.c                             |  198 +++++++++++++++++--
 src/cairo.h                             |  333 +++++++++++++++++++-------------
 src/check-doc-syntax.awk                |  105 ++++++++++
 src/check-doc-syntax.sh                 |    4 
 src/win32/cairo-win32-display-surface.c |    8 
 src/win32/cairo-win32-font.c            |   18 +
 src/win32/cairo-win32-surface.c         |   12 -
 55 files changed, 940 insertions(+), 337 deletions(-)

New commits:
commit f0e40af05b81bf26dcf36cb262c34603b6420d1c
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Tue Mar 27 11:32:55 2012 +0200

    doc: Silence last 'missing Since field' errors
    
    Some APIs are public but not yet supported, hence they might chenge
    without notice. State their "Since" status as "to be determined".

diff --git a/src/cairo-beos-surface.cpp b/src/cairo-beos-surface.cpp
index eb672b6..a5614e1 100644
--- a/src/cairo-beos-surface.cpp
+++ b/src/cairo-beos-surface.cpp
@@ -947,6 +947,8 @@ _cairo_beos_surface_create_internal (BView*   view,
  * The caller must ensure that the view does not get deleted before the surface.
  * If the view is attached to a bitmap rather than an on-screen window, use
  * cairo_beos_surface_create_for_bitmap() instead of this function.
+ *
+ * Since: TBD
  **/
 cairo_surface_t *
 cairo_beos_surface_create (BView* view)
@@ -970,6 +972,8 @@ cairo_beos_surface_create (BView* view)
  *
  * For now, only views that draw to the entire area of bmp are supported.
  * The view must already be attached to the bitmap.
+ *
+ * Since: TBD
  **/
 cairo_surface_t *
 cairo_beos_surface_create_for_bitmap (BView*   view,
diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c
index 91c860a..8bbf939 100644
--- a/src/cairo-gl-surface.c
+++ b/src/cairo-gl-surface.c
@@ -579,6 +579,8 @@ slim_hidden_def (cairo_gl_surface_create);
  * 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 cairo_surface_status() to check for this.
+ *
+ * Since: TBD
  **/
 cairo_surface_t *
 cairo_gl_surface_create_for_texture (cairo_device_t	*abstract_device,
commit 5174c585def3e2ec06a4679644973a489f92bef2
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Sat Mar 24 17:58:57 2012 +0100

    doc: Silence warnings about 'Since' field in private functions
    
    A 'Since' field on non-public functions is not very meaningful,
    because their signature, implementation and semantic is subject to
    change without any visibility outside of cairo.

diff --git a/src/cairo-font-options.c b/src/cairo-font-options.c
index ccbe16d..ad28745 100644
--- a/src/cairo-font-options.c
+++ b/src/cairo-font-options.c
@@ -384,8 +384,6 @@ cairo_font_options_get_subpixel_order (const cairo_font_options_t *options)
  * specifies how pixels are filtered when rendered with an antialiasing
  * mode of %CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for
  * #cairo_lcd_filter_t for full details.
- *
- * Since: 1.8
  **/
 void
 _cairo_font_options_set_lcd_filter (cairo_font_options_t *options,
@@ -405,8 +403,6 @@ _cairo_font_options_set_lcd_filter (cairo_font_options_t *options,
  * See the documentation for #cairo_lcd_filter_t for full details.
  *
  * Return value: the LCD filter for the font options object
- *
- * Since: 1.8
  **/
 cairo_lcd_filter_t
 _cairo_font_options_get_lcd_filter (const cairo_font_options_t *options)
@@ -424,8 +420,6 @@ _cairo_font_options_get_lcd_filter (const cairo_font_options_t *options)
  *
  * Sets the rounding options for the font options object. If rounding is set, a
  * glyph's position will be rounded to integer values.
- *
- * Since: 1.12
  **/
 void
 _cairo_font_options_set_round_glyph_positions (cairo_font_options_t *options,
@@ -444,8 +438,6 @@ _cairo_font_options_set_round_glyph_positions (cairo_font_options_t *options,
  * Gets the glyph position rounding option for the font options object.
  *
  * Return value: The round glyph posistions flag for the font options object.
- *
- * Since: 1.12
  **/
 cairo_round_glyph_positions_t
 _cairo_font_options_get_round_glyph_positions (const cairo_font_options_t *options)
commit dc1f5f1b002dd61c4c7b27dbaadb9f52dd34ec14
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Thu Feb 16 14:30:08 2012 +0100

    doc: Add since documentation for enumeration values

diff --git a/src/cairo-pdf.h b/src/cairo-pdf.h
index 4b18e73..1bc8524 100644
--- a/src/cairo-pdf.h
+++ b/src/cairo-pdf.h
@@ -45,8 +45,8 @@ CAIRO_BEGIN_DECLS
 
 /**
  * cairo_pdf_version_t:
- * @CAIRO_PDF_VERSION_1_4: The version 1.4 of the PDF specification.
- * @CAIRO_PDF_VERSION_1_5: The version 1.5 of the PDF specification.
+ * @CAIRO_PDF_VERSION_1_4: The version 1.4 of the PDF specification. (Since 1.10)
+ * @CAIRO_PDF_VERSION_1_5: The version 1.5 of the PDF specification. (Since 1.10)
  *
  * #cairo_pdf_version_t is used to describe the version number of the PDF
  * specification that a generated PDF file will conform to.
diff --git a/src/cairo-ps.h b/src/cairo-ps.h
index 8e2ab36..33d0e0d 100644
--- a/src/cairo-ps.h
+++ b/src/cairo-ps.h
@@ -49,8 +49,8 @@ CAIRO_BEGIN_DECLS
 
 /**
  * cairo_ps_level_t:
- * @CAIRO_PS_LEVEL_2: The language level 2 of the PostScript specification.
- * @CAIRO_PS_LEVEL_3: The language level 3 of the PostScript specification.
+ * @CAIRO_PS_LEVEL_2: The language level 2 of the PostScript specification. (Since 1.6)
+ * @CAIRO_PS_LEVEL_3: The language level 3 of the PostScript specification. (Since 1.6)
  *
  * #cairo_ps_level_t is used to describe the language level of the
  * PostScript Language Reference that a generated PostScript file will
diff --git a/src/cairo-region.c b/src/cairo-region.c
index 8f7fd20..a51e224 100644
--- a/src/cairo-region.c
+++ b/src/cairo-region.c
@@ -842,11 +842,11 @@ slim_hidden_def (cairo_region_translate);
 
 /**
  * cairo_region_overlap_t:
- * @CAIRO_REGION_OVERLAP_IN: The contents are entirely inside the region
- * @CAIRO_REGION_OVERLAP_OUT: The contents are entirely outside the region
+ * @CAIRO_REGION_OVERLAP_IN: The contents are entirely inside the region. (Since 1.10)
+ * @CAIRO_REGION_OVERLAP_OUT: The contents are entirely outside the region. (Since 1.10)
  * @CAIRO_REGION_OVERLAP_PART: The contents are partially inside and
- *     partially outside the region.
- * 
+ *     partially outside the region. (Since 1.10)
+ *
  * Used as the return value for cairo_region_contains_rectangle().
  *
  * Since: 1.10
diff --git a/src/cairo-script.h b/src/cairo-script.h
index c4cad9f..b5a8cf3 100644
--- a/src/cairo-script.h
+++ b/src/cairo-script.h
@@ -44,8 +44,8 @@ CAIRO_BEGIN_DECLS
 
 /**
  * cairo_script_mode_t:
- * @CAIRO_SCRIPT_MODE_ASCII: the output will be in readable text (default)
- * @CAIRO_SCRIPT_MODE_BINARY: the output will use byte codes
+ * @CAIRO_SCRIPT_MODE_ASCII: the output will be in readable text (default). (Since 1.12)
+ * @CAIRO_SCRIPT_MODE_BINARY: the output will use byte codes. (Since 1.12)
  *
  * A set of script output variants.
  *
diff --git a/src/cairo-svg.h b/src/cairo-svg.h
index 31b0a45..592c645 100644
--- a/src/cairo-svg.h
+++ b/src/cairo-svg.h
@@ -40,8 +40,8 @@ CAIRO_BEGIN_DECLS
 
 /**
  * cairo_svg_version_t:
- * @CAIRO_SVG_VERSION_1_1: The version 1.1 of the SVG specification.
- * @CAIRO_SVG_VERSION_1_2: The version 1.2 of the SVG specification.
+ * @CAIRO_SVG_VERSION_1_1: The version 1.1 of the SVG specification. (Since 1.2)
+ * @CAIRO_SVG_VERSION_1_2: The version 1.2 of the SVG specification. (Since 1.2)
  *
  * #cairo_svg_version_t is used to describe the version number of the SVG
  * specification that a generated SVG file will conform to.
diff --git a/src/cairo.h b/src/cairo.h
index 54696ad..a2f5aa3 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -249,26 +249,26 @@ typedef struct _cairo_user_data_key {
 
 /**
  * cairo_status_t:
- * @CAIRO_STATUS_SUCCESS: no error has occurred
- * @CAIRO_STATUS_NO_MEMORY: out of memory
- * @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching cairo_save()
- * @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group()
- * @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined
- * @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible)
- * @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t
- * @CAIRO_STATUS_NULL_POINTER: %NULL pointer
- * @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8
- * @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid
- * @CAIRO_STATUS_READ_ERROR: error while reading from input stream
- * @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream
- * @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished
- * @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate for the operation
- * @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate for the operation
- * @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content_t
- * @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t
- * @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual*
- * @CAIRO_STATUS_FILE_NOT_FOUND: file not found
- * @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting
+ * @CAIRO_STATUS_SUCCESS: no error has occurred (Since 1.0)
+ * @CAIRO_STATUS_NO_MEMORY: out of memory (Since 1.0)
+ * @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching cairo_save() (Since 1.0)
+ * @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() (Since 1.0)
+ * @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined (Since 1.0)
+ * @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible) (Since 1.0)
+ * @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t (Since 1.0)
+ * @CAIRO_STATUS_NULL_POINTER: %NULL pointer (Since 1.0)
+ * @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8 (Since 1.0)
+ * @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid (Since 1.0)
+ * @CAIRO_STATUS_READ_ERROR: error while reading from input stream (Since 1.0)
+ * @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream (Since 1.0)
+ * @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished (Since 1.0)
+ * @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate for the operation (Since 1.0)
+ * @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate for the operation (Since 1.0)
+ * @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content_t (Since 1.0)
+ * @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t (Since 1.0)
+ * @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual* (Since 1.0)
+ * @CAIRO_STATUS_FILE_NOT_FOUND: file not found (Since 1.0)
+ * @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting (Since 1.0)
  * @CAIRO_STATUS_INVALID_DSC_COMMENT: invalid value for a DSC comment (Since 1.2)
  * @CAIRO_STATUS_INVALID_INDEX: invalid index passed to getter (Since 1.4)
  * @CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: clip region not representable in desired format (Since 1.4)
@@ -351,9 +351,9 @@ typedef enum _cairo_status {
 
 /**
  * cairo_content_t:
- * @CAIRO_CONTENT_COLOR: The surface will hold color content only.
- * @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only.
- * @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha content.
+ * @CAIRO_CONTENT_COLOR: The surface will hold color content only. (Since 1.0)
+ * @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only. (Since 1.0)
+ * @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha content. (Since 1.0)
  *
  * #cairo_content_t is used to describe the content that a surface will
  * contain, whether color information, alpha information (translucence
@@ -378,22 +378,22 @@ typedef enum _cairo_content {
  *   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.)
+ *   not 0x80ff0000.) (Since 1.0)
  * @CAIRO_FORMAT_RGB24: 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.
+ *   in the remaining 24 bits in that order. (Since 1.0)
  * @CAIRO_FORMAT_A8: each pixel is a 8-bit quantity holding
- *   an alpha value.
+ *   an alpha value. (Since 1.0)
  * @CAIRO_FORMAT_A1: each pixel is a 1-bit quantity holding
  *   an alpha value. Pixels are packed together into 32-bit
  *   quantities. The ordering of the bits matches the
  *   endianess of the platform. On a big-endian machine, the
  *   first pixel is in the uppermost bit, on a little-endian
- *   machine the first pixel is in the least-significant bit.
+ *   machine the first pixel is in the least-significant bit. (Since 1.0)
  * @CAIRO_FORMAT_RGB16_565: 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.
- * @CAIRO_FORMAT_RGB30: like RGB24 but with 10bpc
+ *   6 bits, and blue in the lower 5 bits. (Since 1.2)
+ * @CAIRO_FORMAT_RGB30: like RGB24 but with 10bpc. (Since 1.12)
  *
  * #cairo_format_t is used to identify the memory format of
  * image data.
@@ -520,64 +520,64 @@ cairo_pop_group_to_source (cairo_t *cr);
 
 /**
  * cairo_operator_t:
- * @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded)
- * @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded)
+ * @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded) (Since 1.0)
+ * @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded) (Since 1.0)
  * @CAIRO_OPERATOR_OVER: draw source layer on top of destination layer
- * (bounded)
+ * (bounded) (Since 1.0)
  * @CAIRO_OPERATOR_IN: draw source where there was destination content
- * (unbounded)
+ * (unbounded) (Since 1.0)
  * @CAIRO_OPERATOR_OUT: draw source where there was no destination
- * content (unbounded)
+ * content (unbounded) (Since 1.0)
  * @CAIRO_OPERATOR_ATOP: draw source on top of destination content and
- * only there
- * @CAIRO_OPERATOR_DEST: ignore the source
- * @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source
+ * only there (Since 1.0)
+ * @CAIRO_OPERATOR_DEST: ignore the source (Since 1.0)
+ * @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source (Since 1.0)
  * @CAIRO_OPERATOR_DEST_IN: leave destination only where there was
- * source content (unbounded)
+ * source content (unbounded) (Since 1.0)
  * @CAIRO_OPERATOR_DEST_OUT: leave destination only where there was no
- * source content
+ * source content (Since 1.0)
  * @CAIRO_OPERATOR_DEST_ATOP: leave destination on top of source content
- * and only there (unbounded)
+ * and only there (unbounded) (Since 1.0)
  * @CAIRO_OPERATOR_XOR: source and destination are shown where there is only
- * one of them
- * @CAIRO_OPERATOR_ADD: source and destination layers are accumulated
+ * one of them (Since 1.0)
+ * @CAIRO_OPERATOR_ADD: source and destination layers are accumulated (Since 1.0)
  * @CAIRO_OPERATOR_SATURATE: like over, but assuming source and dest are
- * disjoint geometries
+ * disjoint geometries (Since 1.0)
  * @CAIRO_OPERATOR_MULTIPLY: source and destination layers are multiplied.
- * This causes the result to be at least as dark as the darker inputs.
+ * This causes the result to be at least as dark as the darker inputs. (Since 1.10)
  * @CAIRO_OPERATOR_SCREEN: source and destination are complemented and
  * multiplied. This causes the result to be at least as light as the lighter
- * inputs.
+ * inputs. (Since 1.10)
  * @CAIRO_OPERATOR_OVERLAY: multiplies or screens, depending on the
- * lightness of the destination color.
+ * lightness of the destination color. (Since 1.10)
  * @CAIRO_OPERATOR_DARKEN: replaces the destination with the source if it
- * is darker, otherwise keeps the source.
+ * is darker, otherwise keeps the source. (Since 1.10)
  * @CAIRO_OPERATOR_LIGHTEN: replaces the destination with the source if it
- * is lighter, otherwise keeps the source.
+ * is lighter, otherwise keeps the source. (Since 1.10)
  * @CAIRO_OPERATOR_COLOR_DODGE: brightens the destination color to reflect
- * the source color.
+ * the source color. (Since 1.10)
  * @CAIRO_OPERATOR_COLOR_BURN: darkens the destination color to reflect
- * the source color.
+ * the source color. (Since 1.10)
  * @CAIRO_OPERATOR_HARD_LIGHT: Multiplies or screens, dependent on source
- * color.
+ * color. (Since 1.10)
  * @CAIRO_OPERATOR_SOFT_LIGHT: Darkens or lightens, dependent on source
- * color.
+ * color. (Since 1.10)
  * @CAIRO_OPERATOR_DIFFERENCE: Takes the difference of the source and
- * destination color.
+ * destination color. (Since 1.10)
  * @CAIRO_OPERATOR_EXCLUSION: Produces an effect similar to difference, but
- * with lower contrast.
+ * with lower contrast. (Since 1.10)
  * @CAIRO_OPERATOR_HSL_HUE: Creates a color with the hue of the source
- * and the saturation and luminosity of the target.
+ * and the saturation and luminosity of the target. (Since 1.10)
  * @CAIRO_OPERATOR_HSL_SATURATION: 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.
+ * this mode onto a gray area produces no change. (Since 1.10)
  * @CAIRO_OPERATOR_HSL_COLOR: 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.
+ * tinting color images. (Since 1.10)
  * @CAIRO_OPERATOR_HSL_LUMINOSITY: Creates a color with the luminosity of
  * the source and the hue and saturation of the target. This produces an
- * inverse effect to @CAIRO_OPERATOR_HSL_COLOR.
+ * inverse effect to @CAIRO_OPERATOR_HSL_COLOR. (Since 1.10)
  *
  * #cairo_operator_t is used to set the compositing operator for all cairo
  * drawing operations.
@@ -661,13 +661,13 @@ cairo_set_tolerance (cairo_t *cr, double tolerance);
 /**
  * cairo_antialias_t:
  * @CAIRO_ANTIALIAS_DEFAULT: Use the default antialiasing for
- *   the subsystem and target device
- * @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask
+ *   the subsystem and target device, since 1.0
+ * @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask, since 1.0
  * @CAIRO_ANTIALIAS_GRAY: Perform single-color antialiasing (using
- *  shades of gray for black text on a white background, for example).
+ *  shades of gray for black text on a white background, for example), since 1.0
  * @CAIRO_ANTIALIAS_SUBPIXEL: Perform antialiasing by taking
  *  advantage of the order of subpixel elements on devices
- *  such as LCD panels
+ *  such as LCD panels, since 1.0
  * @CAIRO_ANTIALIAS_FAST: Hint that the backend should perform some
  * antialiasing but prefer speed over quality, since 1.12
  * @CAIRO_ANTIALIAS_GOOD: The backend should balance quality against
@@ -718,11 +718,11 @@ cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias);
  * 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.
+ * point.) If the total count is non-zero, the point will be filled. (Since 1.0)
  * @CAIRO_FILL_RULE_EVEN_ODD: 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.
+ * filled. (Since 1.0)
  *
  * #cairo_fill_rule_t is used to select how paths are filled. For both
  * fill rules, whether or not a point is included in the fill is
@@ -752,9 +752,9 @@ cairo_set_line_width (cairo_t *cr, double width);
 
 /**
  * cairo_line_cap_t:
- * @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) point
- * @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is the end point
- * @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is the end point
+ * @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) point (Since 1.0)
+ * @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is the end point (Since 1.0)
+ * @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is the end point (Since 1.0)
  *
  * Specifies how to render the endpoints of the path when stroking.
  *
@@ -774,11 +774,11 @@ cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap);
 /**
  * cairo_line_join_t:
  * @CAIRO_LINE_JOIN_MITER: use a sharp (angled) corner, see
- * cairo_set_miter_limit()
+ * cairo_set_miter_limit() (Since 1.0)
  * @CAIRO_LINE_JOIN_ROUND: use a rounded join, the center of the circle is the
- * joint point
+ * joint point (Since 1.0)
  * @CAIRO_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half
- * the line width from the joint point
+ * the line width from the joint point (Since 1.0)
  *
  * Specifies how to render the junction of two lines when stroking.
  *
@@ -1129,7 +1129,7 @@ cairo_text_cluster_free (cairo_text_cluster_t *clusters);
 /**
  * cairo_text_cluster_flags_t:
  * @CAIRO_TEXT_CLUSTER_FLAG_BACKWARD: The clusters in the cluster array
- * map to glyphs in the glyph array from end to start.
+ * map to glyphs in the glyph array from end to start. (Since 1.8)
  *
  * Specifies properties of a text cluster mapping.
  *
@@ -1230,9 +1230,9 @@ typedef struct {
 
 /**
  * cairo_font_slant_t:
- * @CAIRO_FONT_SLANT_NORMAL: Upright font style
- * @CAIRO_FONT_SLANT_ITALIC: Italic font style
- * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style
+ * @CAIRO_FONT_SLANT_NORMAL: Upright font style, since 1.0
+ * @CAIRO_FONT_SLANT_ITALIC: Italic font style, since 1.0
+ * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style, since 1.0
  *
  * Specifies variants of a font face based on their slant.
  *
@@ -1246,8 +1246,8 @@ typedef enum _cairo_font_slant {
 
 /**
  * cairo_font_weight_t:
- * @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight
- * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight
+ * @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight, since 1.0
+ * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight, since 1.0
  *
  * Specifies variants of a font face based on their weight.
  *
@@ -1261,15 +1261,15 @@ typedef enum _cairo_font_weight {
 /**
  * cairo_subpixel_order_t:
  * @CAIRO_SUBPIXEL_ORDER_DEFAULT: Use the default subpixel order for
- *   for the target device
+ *   for the target device, since 1.0
  * @CAIRO_SUBPIXEL_ORDER_RGB: Subpixel elements are arranged horizontally
- *   with red at the left
+ *   with red at the left, since 1.0
  * @CAIRO_SUBPIXEL_ORDER_BGR:  Subpixel elements are arranged horizontally
- *   with blue at the left
+ *   with blue at the left, since 1.0
  * @CAIRO_SUBPIXEL_ORDER_VRGB: Subpixel elements are arranged vertically
- *   with red at the top
+ *   with red at the top, since 1.0
  * @CAIRO_SUBPIXEL_ORDER_VBGR: Subpixel elements are arranged vertically
- *   with blue at the top
+ *   with blue at the top, since 1.0
  *
  * The subpixel order specifies the order of color elements within
  * each pixel on the display device when rendering with an
@@ -1288,15 +1288,15 @@ typedef enum _cairo_subpixel_order {
 /**
  * cairo_hint_style_t:
  * @CAIRO_HINT_STYLE_DEFAULT: Use the default hint style for
- *   font backend and target device
- * @CAIRO_HINT_STYLE_NONE: Do not hint outlines
+ *   font backend and target device, since 1.0
+ * @CAIRO_HINT_STYLE_NONE: Do not hint outlines, since 1.0
  * @CAIRO_HINT_STYLE_SLIGHT: Hint outlines slightly to improve
  *   contrast while retaining good fidelity to the original
- *   shapes.
+ *   shapes, since 1.0
  * @CAIRO_HINT_STYLE_MEDIUM: Hint outlines with medium strength
  *   giving a compromise between fidelity to the original shapes
- *   and contrast
- * @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast
+ *   and contrast, since 1.0
+ * @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast, since 1.0
  *
  * Specifies the type of hinting to do on font outlines. Hinting
  * is the process of fitting outlines to the pixel grid in order
@@ -1320,9 +1320,9 @@ typedef enum _cairo_hint_style {
 /**
  * cairo_hint_metrics_t:
  * @CAIRO_HINT_METRICS_DEFAULT: Hint metrics in the default
- *  manner for the font backend and target device
- * @CAIRO_HINT_METRICS_OFF: Do not hint font metrics
- * @CAIRO_HINT_METRICS_ON: Hint font metrics
+ *  manner for the font backend and target device, since 1.0
+ * @CAIRO_HINT_METRICS_OFF: Do not hint font metrics, since 1.0
+ * @CAIRO_HINT_METRICS_ON: Hint font metrics, since 1.0
  *
  * Specifies whether to hint font metrics; hinting font metrics
  * means quantizing them so that they are integer values in
@@ -1503,10 +1503,11 @@ cairo_font_face_status (cairo_font_face_t *font_face);
 
 /**
  * cairo_font_type_t:
- * @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api
- * @CAIRO_FONT_TYPE_FT: The font is of type FreeType
- * @CAIRO_FONT_TYPE_WIN32: The font is of type Win32
- * @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6)
+ * @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api (Since: 1.2)
+ * @CAIRO_FONT_TYPE_FT: The font is of type FreeType (Since: 1.2)
+ * @CAIRO_FONT_TYPE_WIN32: The font is of type Win32 (Since: 1.2)
+ * @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6, in 1.2 and
+ * 1.4 it was named CAIRO_FONT_TYPE_ATSUI)
  * @CAIRO_FONT_TYPE_USER: The font was create using cairo's user font api (Since: 1.8)
  *
  * #cairo_font_type_t is used to describe the type of a given font
@@ -1949,10 +1950,10 @@ cairo_get_group_target (cairo_t *cr);
 
 /**
  * cairo_path_data_type_t:
- * @CAIRO_PATH_MOVE_TO: A move-to operation
- * @CAIRO_PATH_LINE_TO: A line-to operation
- * @CAIRO_PATH_CURVE_TO: A curve-to operation
- * @CAIRO_PATH_CLOSE_PATH: A close-path operation
+ * @CAIRO_PATH_MOVE_TO: A move-to operation, since 1.0
+ * @CAIRO_PATH_LINE_TO: A line-to operation, since 1.0
+ * @CAIRO_PATH_CURVE_TO: A curve-to operation, since 1.0
+ * @CAIRO_PATH_CLOSE_PATH: A close-path operation, since 1.0
  *
  * #cairo_path_data_t is used to describe the type of one portion
  * of a path when represented as a #cairo_path_t.
@@ -2101,15 +2102,15 @@ cairo_device_reference (cairo_device_t *device);
 
 /**
  * cairo_device_type_t:
- * @CAIRO_DEVICE_TYPE_DRM: The device is of type Direct Render Manager
- * @CAIRO_DEVICE_TYPE_GL: The device is of type OpenGL
- * @CAIRO_DEVICE_TYPE_SCRIPT: The device is of type script
- * @CAIRO_DEVICE_TYPE_XCB: The device is of type xcb
- * @CAIRO_DEVICE_TYPE_XLIB: The device is of type xlib
- * @CAIRO_DEVICE_TYPE_XML: The device is of type XML
+ * @CAIRO_DEVICE_TYPE_DRM: The device is of type Direct Render Manager, since 1.10
+ * @CAIRO_DEVICE_TYPE_GL: The device is of type OpenGL, since 1.10
+ * @CAIRO_DEVICE_TYPE_SCRIPT: The device is of type script, since 1.10
+ * @CAIRO_DEVICE_TYPE_XCB: The device is of type xcb, since 1.10
+ * @CAIRO_DEVICE_TYPE_XLIB: The device is of type xlib, since 1.10
+ * @CAIRO_DEVICE_TYPE_XML: The device is of type XML, since 1.10
  * @CAIRO_DEVICE_TYPE_COGL: The device is of type cogl, since 1.12
  * @CAIRO_DEVICE_TYPE_WIN32: The device is of type win32, since 1.12
- * @CAIRO_DEVICE_TYPE_INVALID: The device is invalid
+ * @CAIRO_DEVICE_TYPE_INVALID: The device is invalid, since 1.10
  *
  * #cairo_device_type_t is used to describe the type of a given
  * device. The devices types are also known as "backends" within cairo.
@@ -2305,20 +2306,20 @@ cairo_surface_status (cairo_surface_t *surface);
 
 /**
  * cairo_surface_type_t:
- * @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image
- * @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf
- * @CAIRO_SURFACE_TYPE_PS: The surface is of type ps
- * @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib
- * @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb
- * @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz
- * @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz
- * @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32
- * @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos
- * @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb
- * @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg
- * @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2
- * @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surface
- * @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image
+ * @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image, since 1.2
+ * @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf, since 1.2
+ * @CAIRO_SURFACE_TYPE_PS: The surface is of type ps, since 1.2
+ * @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib, since 1.2
+ * @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb, since 1.2
+ * @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz, since 1.2
+ * @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz, since 1.2
+ * @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32, since 1.2
+ * @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos, since 1.2
+ * @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb, since 1.2
+ * @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg, since 1.2
+ * @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2, since 1.4
+ * @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surface, since 1.6
+ * @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image, since 1.6
  * @CAIRO_SURFACE_TYPE_SCRIPT: The surface is of type script, since 1.10
  * @CAIRO_SURFACE_TYPE_QT: The surface is of type Qt, since 1.10
  * @CAIRO_SURFACE_TYPE_RECORDING: The surface is of type recording, since 1.10
@@ -2737,11 +2738,11 @@ cairo_pattern_set_user_data (cairo_pattern_t		 *pattern,
 /**
  * cairo_pattern_type_t:
  * @CAIRO_PATTERN_TYPE_SOLID: The pattern is a solid (uniform)
- * color. It may be opaque or translucent.
- * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an image).
- * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient.
- * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient.
- * @CAIRO_PATTERN_TYPE_MESH: The pattern is a mesh.
+ * color. It may be opaque or translucent, since 1.2.
+ * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an image), since 1.2.
+ * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient, since 1.2.
+ * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient, since 1.2.
+ * @CAIRO_PATTERN_TYPE_MESH: The pattern is a mesh, since 1.12.
  * @CAIRO_PATTERN_TYPE_RASTER_SOURCE: The pattern is a user pattern providing raster data, since 1.12.
  *
  * #cairo_pattern_type_t is used to describe the type of a given pattern.
@@ -2836,10 +2837,10 @@ cairo_pattern_get_matrix (cairo_pattern_t *pattern,
 /**
  * cairo_extend_t:
  * @CAIRO_EXTEND_NONE: pixels outside of the source pattern
- *   are fully transparent
- * @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating
+ *   are fully transparent (Since 1.0)
+ * @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating (Since 1.0)
  * @CAIRO_EXTEND_REFLECT: the pattern is tiled by reflecting
- *   at the edges (Implemented for surface patterns since 1.6)
+ *   at the edges (Since 1.0; but only implemented for surface patterns since 1.6)
  * @CAIRO_EXTEND_PAD: pixels outside of the pattern copy
  *   the closest pixel from the source (Since 1.2; but only
  *   implemented for surface patterns since 1.6)
@@ -2874,15 +2875,15 @@ cairo_pattern_get_extend (cairo_pattern_t *pattern);
 /**
  * cairo_filter_t:
  * @CAIRO_FILTER_FAST: A high-performance filter, with quality similar
- *     to %CAIRO_FILTER_NEAREST
+ *     to %CAIRO_FILTER_NEAREST (Since 1.0)
  * @CAIRO_FILTER_GOOD: A reasonable-performance filter, with quality
- *     similar to %CAIRO_FILTER_BILINEAR
+ *     similar to %CAIRO_FILTER_BILINEAR (Since 1.0)
  * @CAIRO_FILTER_BEST: The highest-quality available, performance may
- *     not be suitable for interactive use.
- * @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering
- * @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions
+ *     not be suitable for interactive use. (Since 1.0)
+ * @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering (Since 1.0)
+ * @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions (Since 1.0)
  * @CAIRO_FILTER_GAUSSIAN: This filter value is currently
- *     unimplemented, and should not be used in current code.
+ *     unimplemented, and should not be used in current code. (Since 1.0)
  *
  * #cairo_filter_t is used to indicate what filtering should be
  * applied when reading pixel values from patterns. See
commit 2470065edf80fa3a41159990a5dac3e45ac80a09
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Tue Mar 27 11:47:11 2012 +0200

    doc: Fix some wrong versions
    
    The script from the previous commit reported that some 'Since' fields
    indicate incorrect versions.

diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
index 818e908..d216261 100644
--- a/src/cairo-quartz-surface.c
+++ b/src/cairo-quartz-surface.c
@@ -2314,7 +2314,7 @@ _cairo_quartz_surface_create_internal (CGContextRef cgContext,
  *
  * Return value: the newly created Cairo surface.
  *
- * Since: 1.4
+ * Since: 1.6
  **/
 
 cairo_surface_t *
@@ -2345,7 +2345,7 @@ cairo_quartz_surface_create_for_cg_context (CGContextRef cgContext,
  *
  * Return value: the newly created surface.
  *
- * Since: 1.4
+ * Since: 1.6
  **/
 cairo_surface_t *
 cairo_quartz_surface_create (cairo_format_t format,
@@ -2458,7 +2458,7 @@ cairo_quartz_surface_create (cairo_format_t format,
  *
  * Return value: the CGContextRef for the given surface.
  *
- * Since: 1.4
+ * Since: 1.6
  **/
 CGContextRef
 cairo_quartz_surface_get_cg_context (cairo_surface_t *surface)
diff --git a/src/cairo-script-surface.c b/src/cairo-script-surface.c
index a2de7d6..74177e0 100644
--- a/src/cairo-script-surface.c
+++ b/src/cairo-script-surface.c
@@ -60,7 +60,7 @@
  * Defined if the script surface backend is available.
  * The script surface backend is always built in since 1.12.
  *
- * Since: 1.10
+ * Since: 1.12
  **/
 
 
diff --git a/src/cairo-script.h b/src/cairo-script.h
index 371b29a..c4cad9f 100644
--- a/src/cairo-script.h
+++ b/src/cairo-script.h
@@ -49,7 +49,7 @@ CAIRO_BEGIN_DECLS
  *
  * A set of script output variants.
  *
- * Since: 1.10
+ * Since: 1.12
  **/
 typedef enum {
     CAIRO_SCRIPT_MODE_ASCII,
commit 1d3d64469f3ddac282860f66b24a35cf2253fa46
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Tue Mar 27 11:48:19 2012 +0200

    doc: Add "since" tag to documentation
    
    The following Python script was used to compute "Since: 1.X" tags,
    based on the first version where a symbol became officially supported.
    
    This script requires a concatenation of the the cairo public headers
    for the officially supported beckends to be available as
    "../../includes/1.X.0.h".
    
    from sys import argv
    import re
    
    syms = {}
    
    def stripcomments(text):
        def replacer(match):
            s = match.group(0)
            if s.startswith('/'):
                return ""
            else:
                return s
        pattern = re.compile(
            r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
            re.DOTALL | re.MULTILINE
        )
        return re.sub(pattern, replacer, text)
    
    for minor in range(12,-2,-2):
        version = "1.%d" % minor
        names = re.split('([A-Za-z0-9_]+)', stripcomments(open("../../includes/%s.0.h" % version).read()))
        for s in names: syms[s] = version
    
    for filename in argv[1:]:
        is_public = False
        lines = open(filename, "r").read().split("\n")
        newlines = []
        for i in range(len(lines)):
            if lines[i] == "/**":
                last_sym = lines[i+1][2:].strip().replace(":", "")
                is_public = last_sym.lower().startswith("cairo")
            elif is_public and lines[i] == " **/":
                if last_sym in syms:
                    v = syms[last_sym]
                    if re.search("Since", newlines[-1]): newlines = newlines[:-1]
                    if newlines[-1].strip() != "*": newlines.append(" *")
                    newlines.append(" * Since: %s" % v)
                else:
                    print "%s (%d): Cannot determine the version in which '%s' was introduced" % (filename, i, last_sym)
            newlines.append(lines[i])
    
        out = open(filename, "w")
        out.write("\n".join(newlines))
        out.close()

diff --git a/src/cairo-debug.c b/src/cairo-debug.c
index ebae072..33d46aa 100644
--- a/src/cairo-debug.c
+++ b/src/cairo-debug.c
@@ -56,6 +56,8 @@
  * 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).
+ *
+ * Since: 1.0
  **/
 void
 cairo_debug_reset_static_data (void)
diff --git a/src/cairo-font-face.c b/src/cairo-font-face.c
index f429da0..b93bd8c 100644
--- a/src/cairo-font-face.c
+++ b/src/cairo-font-face.c
@@ -108,6 +108,8 @@ _cairo_font_face_init (cairo_font_face_t               *font_face,
  * cairo_font_face_get_reference_count().
  *
  * Return value: the referenced #cairo_font_face_t.
+ *
+ * Since: 1.0
  **/
 cairo_font_face_t *
 cairo_font_face_reference (cairo_font_face_t *font_face)
@@ -133,6 +135,8 @@ slim_hidden_def (cairo_font_face_reference);
  * Decreases the reference count on @font_face by one. If the result
  * is zero, then @font_face and all associated resources are freed.
  * See cairo_font_face_reference().
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_face_destroy (cairo_font_face_t *font_face)
@@ -212,6 +216,8 @@ cairo_font_face_get_reference_count (cairo_font_face_t *font_face)
  *
  * Return value: %CAIRO_STATUS_SUCCESS or another error such as
  *   %CAIRO_STATUS_NO_MEMORY.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_font_face_status (cairo_font_face_t *font_face)
@@ -230,6 +236,8 @@ cairo_font_face_status (cairo_font_face_t *font_face)
  * function returns %NULL.
  *
  * Return value: the user data previously attached or %NULL.
+ *
+ * Since: 1.0
  **/
 void *
 cairo_font_face_get_user_data (cairo_font_face_t	   *font_face,
@@ -255,6 +263,8 @@ slim_hidden_def (cairo_font_face_get_user_data);
  *
  * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a
  * slot could not be allocated for the user data.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_font_face_set_user_data (cairo_font_face_t	   *font_face,
diff --git a/src/cairo-font-options.c b/src/cairo-font-options.c
index 709c5f8..ccbe16d 100644
--- a/src/cairo-font-options.c
+++ b/src/cairo-font-options.c
@@ -98,6 +98,8 @@ _cairo_font_options_init_copy (cairo_font_options_t		*options,
  *   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 cairo_font_options_status().
+ *
+ * Since: 1.0
  **/
 cairo_font_options_t *
 cairo_font_options_create (void)
@@ -127,6 +129,8 @@ cairo_font_options_create (void)
  *   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 cairo_font_options_status().
+ *
+ * Since: 1.0
  **/
 cairo_font_options_t *
 cairo_font_options_copy (const cairo_font_options_t *original)
@@ -153,6 +157,8 @@ cairo_font_options_copy (const cairo_font_options_t *original)
  *
  * Destroys a #cairo_font_options_t object created with
  * cairo_font_options_create() or cairo_font_options_copy().
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_options_destroy (cairo_font_options_t *options)
@@ -171,6 +177,8 @@ cairo_font_options_destroy (cairo_font_options_t *options)
  * font options object
  *
  * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_font_options_status (cairo_font_options_t *options)
@@ -193,6 +201,8 @@ slim_hidden_def (cairo_font_options_status);
  * existing values. This operation can be thought of as somewhat
  * similar to compositing @other onto @options with the operation
  * of %CAIRO_OPERATOR_OVER.
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_options_merge (cairo_font_options_t       *options,
@@ -229,6 +239,8 @@ slim_hidden_def (cairo_font_options_merge);
  * Return value: %TRUE if all fields of the two font options objects match.
  *	Note that this function will return %FALSE if either object is in
  *	error.
+ *
+ * Since: 1.0
  **/
 cairo_bool_t
 cairo_font_options_equal (const cairo_font_options_t *options,
@@ -262,6 +274,8 @@ slim_hidden_def (cairo_font_options_equal);
  * Return value: 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.
+ *
+ * Since: 1.0
  **/
 unsigned long
 cairo_font_options_hash (const cairo_font_options_t *options)
@@ -284,6 +298,8 @@ slim_hidden_def (cairo_font_options_hash);
  *
  * Sets the antialiasing mode for the font options object. This
  * specifies the type of antialiasing to do when rendering text.
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_options_set_antialias (cairo_font_options_t *options,
@@ -303,6 +319,8 @@ slim_hidden_def (cairo_font_options_set_antialias);
  * Gets the antialiasing mode for the font options object.
  *
  * Return value: the antialiasing mode
+ *
+ * Since: 1.0
  **/
 cairo_antialias_t
 cairo_font_options_get_antialias (const cairo_font_options_t *options)
@@ -323,6 +341,8 @@ cairo_font_options_get_antialias (const cairo_font_options_t *options)
  * the display device when rendering with an antialiasing mode of
  * %CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for
  * #cairo_subpixel_order_t for full details.
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_options_set_subpixel_order (cairo_font_options_t   *options,
@@ -343,6 +363,8 @@ slim_hidden_def (cairo_font_options_set_subpixel_order);
  * See the documentation for #cairo_subpixel_order_t for full details.
  *
  * Return value: the subpixel order for the font options object
+ *
+ * Since: 1.0
  **/
 cairo_subpixel_order_t
 cairo_font_options_get_subpixel_order (const cairo_font_options_t *options)
@@ -443,6 +465,8 @@ _cairo_font_options_get_round_glyph_positions (const cairo_font_options_t *optio
  * 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 #cairo_hint_style_t for full details.
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_options_set_hint_style (cairo_font_options_t *options,
@@ -463,6 +487,8 @@ slim_hidden_def (cairo_font_options_set_hint_style);
  * See the documentation for #cairo_hint_style_t for full details.
  *
  * Return value: the hint style for the font options object
+ *
+ * Since: 1.0
  **/
 cairo_hint_style_t
 cairo_font_options_get_hint_style (const cairo_font_options_t *options)
@@ -482,6 +508,8 @@ cairo_font_options_get_hint_style (const cairo_font_options_t *options)
  * controls whether metrics are quantized to integer values in
  * device units.
  * See the documentation for #cairo_hint_metrics_t for full details.
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_options_set_hint_metrics (cairo_font_options_t *options,
@@ -502,6 +530,8 @@ slim_hidden_def (cairo_font_options_set_hint_metrics);
  * See the documentation for #cairo_hint_metrics_t for full details.
  *
  * Return value: the metrics hinting mode for the font options object
+ *
+ * Since: 1.0
  **/
 cairo_hint_metrics_t
 cairo_font_options_get_hint_metrics (const cairo_font_options_t *options)
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index 69a701c..fba8025 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -108,6 +108,8 @@
  *
  * Defined if the FreeType font backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.0
  **/
 
 /**
@@ -116,6 +118,8 @@
  * Defined if the Fontconfig-specific functions of the FreeType font backend
  * are available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.10
  **/
 
 /*
@@ -3029,6 +3033,8 @@ _cairo_ft_font_options_substitute (const cairo_font_options_t *options,
  * so you should call this function after calling FcConfigSubstitute() (the
  * user's settings should override options based on the surface type), but
  * before calling FcDefaultSubstitute().
+ *
+ * Since: 1.0
  **/
 void
 cairo_ft_font_options_substitute (const cairo_font_options_t *options,
@@ -3163,6 +3169,8 @@ FREE_PATTERN:
  *
  * Return value: a newly created #cairo_font_face_t. Free with
  *  cairo_font_face_destroy() when you are done using it.
+ *
+ * Since: 1.0
  **/
 cairo_font_face_t *
 cairo_ft_font_face_create_for_pattern (FcPattern *pattern)
@@ -3234,6 +3242,8 @@ cairo_ft_font_face_create_for_pattern (FcPattern *pattern)
  *
  * Return value: a newly created #cairo_font_face_t. Free with
  *  cairo_font_face_destroy() when you are done using it.
+ *
+ * Since: 1.0
  **/
 cairo_font_face_t *
 cairo_ft_font_face_create_for_ft_face (FT_Face         face,
@@ -3355,6 +3365,8 @@ cairo_ft_font_face_get_synthesize (cairo_font_face_t *font_face)
  * Return value: The #FT_Face object for @font, scaled appropriately,
  * or %NULL if @scaled_font is in an error state (see
  * cairo_scaled_font_status()) or there is insufficient memory.
+ *
+ * Since: 1.0
  **/
 FT_Face
 cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *abstract_font)
@@ -3404,6 +3416,8 @@ cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *abstract_font)
  *   cairo_ft_font_face_create_for_ft_face()).
  *
  * Releases a face obtained with cairo_ft_scaled_font_lock_face().
+ *
+ * Since: 1.0
  **/
 void
 cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *abstract_font)
diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index c118346..8208a15 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -373,6 +373,8 @@ _cairo_image_surface_create_with_pixman_format (unsigned char		*data,
  * 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 cairo_surface_status() to check for this.
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_image_surface_create (cairo_format_t	format,
@@ -488,6 +490,8 @@ slim_hidden_def (cairo_format_stride_for_width);
  *
  * See cairo_surface_set_user_data() for a means of attaching a
  * destroy-notification fallback to the surface if necessary.
+ *
+ * Since: 1.0
  **/
     cairo_surface_t *
 cairo_image_surface_create_for_data (unsigned char     *data,
@@ -590,6 +594,8 @@ slim_hidden_def (cairo_image_surface_get_format);
  * Get the width of the image surface in pixels.
  *
  * Return value: the width of the surface in pixels.
+ *
+ * Since: 1.0
  **/
     int
 cairo_image_surface_get_width (cairo_surface_t *surface)
@@ -612,6 +618,8 @@ slim_hidden_def (cairo_image_surface_get_width);
  * Get the height of the image surface in pixels.
  *
  * Return value: the height of the surface in pixels.
+ *
+ * Since: 1.0
  **/
     int
 cairo_image_surface_get_height (cairo_surface_t *surface)
diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c
index c3b9263..ba975be 100644
--- a/src/cairo-matrix.c
+++ b/src/cairo-matrix.c
@@ -80,6 +80,8 @@ _cairo_matrix_compute_adjoint (cairo_matrix_t *matrix);
  * @matrix: a #cairo_matrix_t
  *
  * Modifies @matrix to be an identity transformation.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_init_identity (cairo_matrix_t *matrix)
@@ -108,6 +110,8 @@ slim_hidden_def(cairo_matrix_init_identity);
  *  x_new = xx * x + xy * y + x0;
  *  y_new = yx * x + yy * y + y0;
  * </programlisting>
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_init (cairo_matrix_t *matrix,
@@ -168,6 +172,8 @@ _cairo_matrix_get_affine (const cairo_matrix_t *matrix,
  *
  * Initializes @matrix to a transformation that translates by @tx and
  * @ty in the X and Y dimensions, respectively.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_init_translate (cairo_matrix_t *matrix,
@@ -190,6 +196,8 @@ slim_hidden_def(cairo_matrix_init_translate);
  * @matrix. The effect of the new transformation is to first translate
  * the coordinates by @tx and @ty, then apply the original transformation
  * to the coordinates.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_translate (cairo_matrix_t *matrix, double tx, double ty)
@@ -210,6 +218,8 @@ slim_hidden_def (cairo_matrix_translate);
  *
  * Initializes @matrix to a transformation that scales by @sx and @sy
  * in the X and Y dimensions, respectively.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_init_scale (cairo_matrix_t *matrix,
@@ -231,6 +241,8 @@ slim_hidden_def(cairo_matrix_init_scale);
  * Applies scaling by @sx, @sy to the transformation in @matrix. The
  * effect of the new transformation is to first scale the coordinates
  * by @sx and @sy, then apply the original transformation to the coordinates.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_scale (cairo_matrix_t *matrix, double sx, double sy)
@@ -253,6 +265,8 @@ slim_hidden_def(cairo_matrix_scale);
  * direction.
  *
  * Initialized @matrix to a transformation that rotates by @radians.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_init_rotate (cairo_matrix_t *matrix,
@@ -284,6 +298,8 @@ slim_hidden_def(cairo_matrix_init_rotate);
  * @matrix. The effect of the new transformation is to first rotate the
  * coordinates by @radians, then apply the original transformation
  * to the coordinates.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_rotate (cairo_matrix_t *matrix, double radians)
@@ -308,6 +324,8 @@ cairo_matrix_rotate (cairo_matrix_t *matrix, double radians)
  * coordinates.
  *
  * It is allowable for @result to be identical to either @a or @b.
+ *
+ * Since: 1.0
  **/
 /*
  * XXX: The ordering of the arguments to this function corresponds
@@ -368,6 +386,8 @@ _cairo_matrix_multiply (cairo_matrix_t *r,
  * always transforms to the same vector. If (@x1, at y1) transforms
  * to (@x2, at y2) then (@x1+ at dx1, at y1+@dy1) will transform to
  * (@x1+ at dx2, at y1+@dy2) for all values of @x1 and @x2.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_transform_distance (const cairo_matrix_t *matrix, double *dx, double *dy)
@@ -389,6 +409,8 @@ slim_hidden_def(cairo_matrix_transform_distance);
  * @y: Y position. An in/out parameter
  *
  * Transforms the point (@x, @y) by @matrix.
+ *
+ * Since: 1.0
  **/
 void
 cairo_matrix_transform_point (const cairo_matrix_t *matrix, double *x, double *y)
@@ -563,6 +585,8 @@ _cairo_matrix_compute_adjoint (cairo_matrix_t *matrix)
  * Returns: If @matrix has an inverse, modifies @matrix to
  *  be the inverse matrix and returns %CAIRO_STATUS_SUCCESS. Otherwise,
  *  returns %CAIRO_STATUS_INVALID_MATRIX.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_matrix_invert (cairo_matrix_t *matrix)
diff --git a/src/cairo-misc.c b/src/cairo-misc.c
index 60edaae..bb37e1a 100644
--- a/src/cairo-misc.c
+++ b/src/cairo-misc.c
@@ -73,6 +73,8 @@ COMPILE_TIME_ASSERT (CAIRO_INT_STATUS_LAST_STATUS <= 127);
  * Provides a human-readable description of a #cairo_status_t.
  *
  * Returns: a string representation of the status
+ *
+ * Since: 1.0
  **/
 const char *
 cairo_status_to_string (cairo_status_t status)
diff --git a/src/cairo-path.c b/src/cairo-path.c
index f2a02f1..5c48373 100644
--- a/src/cairo-path.c
+++ b/src/cairo-path.c
@@ -358,6 +358,8 @@ _cairo_path_create_internal (cairo_path_fixed_t *path_fixed,
  * pointer to a #cairo_path_t returned by a cairo function. Any path
  * that is created manually (ie. outside of cairo) should be destroyed
  * manually as well.
+ *
+ * Since: 1.0
  **/
 void
 cairo_path_destroy (cairo_path_t *path)
diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
index 9f93e91..27ba004 100644
--- a/src/cairo-pattern.c
+++ b/src/cairo-pattern.c
@@ -649,6 +649,8 @@ _cairo_pattern_create_in_error (cairo_status_t status)
  * 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 cairo_pattern_status().
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_pattern_create_rgb (double red, double green, double blue)
@@ -677,6 +679,8 @@ slim_hidden_def (cairo_pattern_create_rgb);
  * 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 cairo_pattern_status().
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_pattern_create_rgba (double red, double green, double blue,
@@ -711,6 +715,8 @@ slim_hidden_def (cairo_pattern_create_rgba);
  * 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 cairo_pattern_status().
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_pattern_create_for_surface (cairo_surface_t *surface)
@@ -769,6 +775,8 @@ slim_hidden_def (cairo_pattern_create_for_surface);
  * 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 cairo_pattern_status().
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_pattern_create_linear (double x0, double y0, double x1, double y1)
@@ -820,6 +828,8 @@ cairo_pattern_create_linear (double x0, double y0, double x1, double y1)
  * 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 cairo_pattern_status().
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_pattern_create_radial (double cx0, double cy0, double radius0,
@@ -1037,6 +1047,8 @@ cairo_pattern_create_mesh (void)
  * cairo_pattern_get_reference_count().
  *
  * Return value: the referenced #cairo_pattern_t.
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_pattern_reference (cairo_pattern_t *pattern)
@@ -1080,6 +1092,8 @@ cairo_pattern_get_type (cairo_pattern_t *pattern)
  * Return value: %CAIRO_STATUS_SUCCESS, %CAIRO_STATUS_NO_MEMORY,
  * %CAIRO_STATUS_INVALID_MATRIX, %CAIRO_STATUS_PATTERN_TYPE_MISMATCH,
  * or %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_pattern_status (cairo_pattern_t *pattern)
@@ -1094,6 +1108,8 @@ cairo_pattern_status (cairo_pattern_t *pattern)
  * Decreases the reference count on @pattern by one. If the result is
  * zero, then @pattern and all associated resources are freed.  See
  * cairo_pattern_reference().
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_destroy (cairo_pattern_t *pattern)
@@ -1873,6 +1889,8 @@ _cairo_pattern_add_color_stop (cairo_gradient_pattern_t	*pattern,
  * 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 %CAIRO_STATUS_PATTERN_TYPE_MISMATCH.
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern,
@@ -1910,6 +1928,8 @@ cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern,
  * 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 %CAIRO_STATUS_PATTERN_TYPE_MISMATCH.
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern,
@@ -1971,6 +1991,8 @@ slim_hidden_def (cairo_pattern_add_color_stop_rgba);
  *
  * Also, please note the discussion of the user-space locking
  * semantics of cairo_set_source().
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_set_matrix (cairo_pattern_t      *pattern,
@@ -2001,6 +2023,8 @@ slim_hidden_def (cairo_pattern_set_matrix);
  * @matrix: return value for the matrix
  *
  * Stores the pattern's transformation matrix into @matrix.
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_get_matrix (cairo_pattern_t *pattern, cairo_matrix_t *matrix)
@@ -2027,6 +2051,8 @@ cairo_pattern_get_matrix (cairo_pattern_t *pattern, cairo_matrix_t *matrix)
  * cairo_set_source_surface (cr, image, x, y);
  * cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
  * </programlisting></informalexample>
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter)
@@ -2046,6 +2072,8 @@ cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter)
  * for details on each filter.
  *
  * Return value: the current filter used for resizing the pattern.
+ *
+ * Since: 1.0
  **/
 cairo_filter_t
 cairo_pattern_get_filter (cairo_pattern_t *pattern)
@@ -2065,6 +2093,8 @@ cairo_pattern_get_filter (cairo_pattern_t *pattern)
  *
  * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns
  * and %CAIRO_EXTEND_PAD for gradient patterns.
+ *
+ * Since: 1.0
  **/
 void
 cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend)
@@ -2085,6 +2115,8 @@ cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend)
  *
  * Return value: the current extend strategy used for drawing the
  * pattern.
+ *
+ * Since: 1.0
  **/
 cairo_extend_t
 cairo_pattern_get_extend (cairo_pattern_t *pattern)
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index 9658957..4930e72 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -141,6 +141,8 @@ _cairo_pdf_surface_get_extents (void		        *abstract_surface,
  *
  * Defined if the PDF surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.2
  **/
 
 static const cairo_pdf_version_t _cairo_pdf_versions[] =
diff --git a/src/cairo-pdf.h b/src/cairo-pdf.h
index 1ddee3d..4b18e73 100644
--- a/src/cairo-pdf.h
+++ b/src/cairo-pdf.h
@@ -51,7 +51,7 @@ CAIRO_BEGIN_DECLS
  * #cairo_pdf_version_t is used to describe the version number of the PDF
  * specification that a generated PDF file will conform to.
  *
- * Since 1.10
+ * Since: 1.10
  **/
 typedef enum _cairo_pdf_version {
     CAIRO_PDF_VERSION_1_4,
diff --git a/src/cairo-png.c b/src/cairo-png.c
index b36c8df..e74a4a8 100644
--- a/src/cairo-png.c
+++ b/src/cairo-png.c
@@ -70,6 +70,8 @@
  * Defined if the PNG functions are available.
  * This macro can be used to conditionally compile code using the cairo
  * PNG functions.
+ *
+ * Since: 1.0
  **/
 
 struct png_read_closure_t {
@@ -348,6 +350,8 @@ stdio_write_func (png_structp png, png_bytep data, png_size_t size)
  * %CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have
  * pixel contents, or %CAIRO_STATUS_WRITE_ERROR if an I/O error occurs
  * while attempting to write the file.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_surface_write_to_png (cairo_surface_t	*surface,
@@ -414,6 +418,8 @@ stream_write_func (png_structp png, png_bytep data, png_size_t size)
  * memory could not be allocated for the operation,
  * %CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have
  * pixel contents.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_surface_write_to_png_stream (cairo_surface_t	*surface,
@@ -742,6 +748,8 @@ read_png (struct png_read_closure_t *png_closure)
  * Alternatively, you can allow errors to propagate through the drawing
  * operations and check the status on the context upon completion
  * using cairo_status().
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_image_surface_create_from_png (const char *filename)
@@ -795,6 +803,8 @@ cairo_image_surface_create_from_png (const char *filename)
  * Alternatively, you can allow errors to propagate through the drawing
  * operations and check the status on the context upon completion
  * using cairo_status().
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_image_surface_create_from_png_stream (cairo_read_func_t	read_func,
diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c
index c881516..c5ea680 100644
--- a/src/cairo-ps-surface.c
+++ b/src/cairo-ps-surface.c
@@ -111,6 +111,8 @@
  * 
  * Defined if the PostScript surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.2
  **/
 
 typedef enum {
diff --git a/src/cairo-ps.h b/src/cairo-ps.h
index edd1e95..8e2ab36 100644
--- a/src/cairo-ps.h
+++ b/src/cairo-ps.h
@@ -55,6 +55,8 @@ CAIRO_BEGIN_DECLS
  * #cairo_ps_level_t is used to describe the language level of the
  * PostScript Language Reference that a generated PostScript file will
  * conform to.
+ *
+ * Since: 1.6
  **/
 typedef enum _cairo_ps_level {
     CAIRO_PS_LEVEL_2,
diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c
index f94b491..a9bbbdc 100644
--- a/src/cairo-quartz-font.c
+++ b/src/cairo-quartz-font.c
@@ -60,6 +60,8 @@
  *
  * Defined if the Quartz font backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.6
  **/
 
 static CFDataRef (*CGFontCopyTableForTagPtr) (CGFontRef font, uint32_t tag) = NULL;
diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
index f806077..818e908 100644
--- a/src/cairo-quartz-surface.c
+++ b/src/cairo-quartz-surface.c
@@ -81,6 +81,8 @@
  *
  * Defined if the Quartz surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.6
  **/
 
 #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050
diff --git a/src/cairo-region.c b/src/cairo-region.c
index c3785eb..8f7fd20 100644
--- a/src/cairo-region.c
+++ b/src/cairo-region.c
@@ -848,6 +848,8 @@ slim_hidden_def (cairo_region_translate);
  *     partially outside the region.
  * 
  * Used as the return value for cairo_region_contains_rectangle().
+ *
+ * Since: 1.10
  **/
 
 /**
diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c
index 29cea06..e6552ec 100644
--- a/src/cairo-scaled-font.c
+++ b/src/cairo-scaled-font.c
@@ -317,6 +317,8 @@ cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font)
  *
  * Return value: %CAIRO_STATUS_SUCCESS or another error such as
  *   %CAIRO_STATUS_NO_MEMORY.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_scaled_font_status (cairo_scaled_font_t *scaled_font)
@@ -959,6 +961,8 @@ _cairo_scaled_glyph_find_private (cairo_scaled_glyph_t *scaled_glyph,
  *
  * Return value: a newly created #cairo_scaled_font_t. Destroy with
  *  cairo_scaled_font_destroy()
+ *
+ * Since: 1.0
  **/
 cairo_scaled_font_t *
 cairo_scaled_font_create (cairo_font_face_t          *font_face,
@@ -1236,6 +1240,8 @@ _cairo_scaled_font_reset_static_data (void)
  * cairo_scaled_font_get_reference_count().
  *
  * Returns: the referenced #cairo_scaled_font_t
+ *
+ * Since: 1.0
  **/
 cairo_scaled_font_t *
 cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font)
@@ -1259,6 +1265,8 @@ slim_hidden_def (cairo_scaled_font_reference);
  * Decreases the reference count on @font by one. If the result
  * is zero, then @font and all associated resources are freed.
  * See cairo_scaled_font_reference().
+ *
+ * Since: 1.0
  **/
 void
 cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font)
@@ -1415,6 +1423,8 @@ slim_hidden_def (cairo_scaled_font_set_user_data);
  * @extents: a #cairo_font_extents_t which to store the retrieved extents.
  *
  * Gets the metrics for a #cairo_scaled_font_t.
+ *
+ * Since: 1.0
  **/
 void
 cairo_scaled_font_extents (cairo_scaled_font_t  *scaled_font,
@@ -1512,6 +1522,8 @@ ZERO_EXTENTS:
  *
  * Note that whitespace glyphs do not contribute to the size of the
  * rectangle (extents.width and extents.height).
+ *
+ * Since: 1.0
  **/
 void
 cairo_scaled_font_glyph_extents (cairo_scaled_font_t   *scaled_font,
diff --git a/src/cairo-script-surface.c b/src/cairo-script-surface.c
index 89cf525..a2de7d6 100644
--- a/src/cairo-script-surface.c
+++ b/src/cairo-script-surface.c
@@ -3744,6 +3744,8 @@ _cairo_script_context_create (cairo_output_stream_t *stream)
  * 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 cairo_device_status() to check for this.
+ *
+ * Since: 1.12
  **/
 cairo_device_t *
 cairo_script_create (const char *filename)
@@ -3773,6 +3775,8 @@ cairo_script_create (const char *filename)
  * 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 cairo_device_status() to check for this.
+ *
+ * Since: 1.12
  **/
 cairo_device_t *
 cairo_script_create_for_stream (cairo_write_func_t	 write_func,
@@ -3795,6 +3799,8 @@ cairo_script_create_for_stream (cairo_write_func_t	 write_func,
  * @len:the length of the sting to write, or -1 to use strlen()
  *
  * Emit a string verbatim into the script.
+ *
+ * Since: 1.12
  **/
 void
 cairo_script_write_comment (cairo_device_t *script,
@@ -3817,6 +3823,8 @@ cairo_script_write_comment (cairo_device_t *script,
  * @mode: the new mode
  *
  * Change the output mode of the script
+ *
+ * Since: 1.12
  **/
 void
 cairo_script_set_mode (cairo_device_t *script,
@@ -3834,6 +3842,8 @@ cairo_script_set_mode (cairo_device_t *script,
  * Queries the script for its current output mode.
  *
  * Return value: the current output mode of the script
+ *
+ * Since: 1.12
  **/
 cairo_script_mode_t
 cairo_script_get_mode (cairo_device_t *script)
@@ -3859,6 +3869,8 @@ cairo_script_get_mode (cairo_device_t *script)
  * 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 cairo_surface_status() to check for this.
+ *
+ * Since: 1.12
  **/
 cairo_surface_t *
 cairo_script_surface_create (cairo_device_t *script,
@@ -3902,6 +3914,8 @@ slim_hidden_def (cairo_script_surface_create);
  * 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 cairo_surface_status() to check for this.
+ *
+ * Since: 1.12
  **/
 cairo_surface_t *
 cairo_script_surface_create_for_target (cairo_device_t *script,
@@ -3939,6 +3953,8 @@ cairo_script_surface_create_for_target (cairo_device_t *script,
  * Converts the record operations in @recording_surface into a script.
  *
  * Return value: #CAIRO_STATUS_SUCCESS on successful completion or an error code.
+ *
+ * Since: 1.12
  **/
 cairo_status_t
 cairo_script_from_recording_surface (cairo_device_t *script,
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index 299ce3b..062c269 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -247,6 +247,8 @@ slim_hidden_def(cairo_surface_get_content);
  * %CAIRO_STATUS_NO_MEMORY, %CAIRO_STATUS_READ_ERROR,
  * %CAIRO_STATUS_INVALID_CONTENT, %CAIRO_STATUS_INVALID_FORMAT, or
  * %CAIRO_STATUS_INVALID_VISUAL.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_surface_status (cairo_surface_t *surface)
@@ -506,6 +508,8 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other,
  * This function always returns a valid pointer, but it will return a
  * pointer to a "nil" surface if @other is already in an error state
  * or any other error occurs.
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_surface_create_similar (cairo_surface_t  *other,
@@ -806,6 +810,8 @@ _cairo_surface_create_similar_solid (cairo_surface_t	 *other,
  * cairo_surface_get_reference_count().
  *
  * Return value: the referenced #cairo_surface_t.
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_surface_reference (cairo_surface_t *surface)
@@ -829,6 +835,8 @@ slim_hidden_def (cairo_surface_reference);
  * Decreases the reference count on @surface by one. If the result is
  * zero, then @surface and all associated resources are freed.  See
  * cairo_surface_reference().
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_destroy (cairo_surface_t *surface)
@@ -930,6 +938,8 @@ _cairo_surface_finish (cairo_surface_t *surface)
  * reference count to zero, cairo will call cairo_surface_finish() if
  * it hasn't been called already, before freeing the resources
  * associated with the surface.
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_finish (cairo_surface_t *surface)
@@ -982,6 +992,8 @@ _cairo_surface_release_device_reference (cairo_surface_t *surface)
  * function returns %NULL.
  *
  * Return value: the user data previously attached or %NULL.
+ *
+ * Since: 1.0
  **/
 void *
 cairo_surface_get_user_data (cairo_surface_t		 *surface,
@@ -1005,6 +1017,8 @@ cairo_surface_get_user_data (cairo_surface_t		 *surface,
  *
  * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a
  * slot could not be allocated for the user data.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_surface_set_user_data (cairo_surface_t		 *surface,
@@ -1152,6 +1166,8 @@ _cairo_mime_data_destroy (void *ptr)
  *
  * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a
  * slot could not be allocated for the user data.
+ *
+ * Since: 1.10
  **/
 cairo_status_t
 cairo_surface_set_mime_data (cairo_surface_t		*surface,
@@ -1312,6 +1328,8 @@ _cairo_surface_set_font_options (cairo_surface_t       *surface,
  * for rendering on them, print surfaces to disable hinting of
  * metrics and so forth. The result can then be used with
  * cairo_scaled_font_create().
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_get_font_options (cairo_surface_t       *surface,
@@ -1349,6 +1367,8 @@ slim_hidden_def (cairo_surface_get_font_options);
  * drawing on the surface with cairo to drawing on it directly
  * with native APIs. If the surface doesn't support direct access,
  * then this function does nothing.
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_flush (cairo_surface_t *surface)
@@ -1380,6 +1400,8 @@ slim_hidden_def (cairo_surface_flush);
  * 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 cairo_surface_flush() before doing such drawing.
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_mark_dirty (cairo_surface_t *surface)
@@ -1403,6 +1425,8 @@ slim_hidden_def (cairo_surface_mark_dirty);
  * 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.
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface,
@@ -1526,6 +1550,8 @@ _cairo_surface_set_device_scale (cairo_surface_t *surface,
  *
  * Note that the offset affects drawing to the surface as well as
  * using the surface in a source pattern.
+ *
+ * Since: 1.0
  **/
 void
 cairo_surface_set_device_offset (cairo_surface_t *surface,
diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c
index 950cb1f..1b6505f 100644
--- a/src/cairo-svg-surface.c
+++ b/src/cairo-svg-surface.c
@@ -73,6 +73,8 @@
  *
  * Defined if the SVG surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.2
  **/
 
 typedef struct cairo_svg_page cairo_svg_page_t;
diff --git a/src/cairo-svg.h b/src/cairo-svg.h
index 18fef32..31b0a45 100644
--- a/src/cairo-svg.h
+++ b/src/cairo-svg.h
@@ -45,6 +45,8 @@ CAIRO_BEGIN_DECLS
  *
  * #cairo_svg_version_t is used to describe the version number of the SVG
  * specification that a generated SVG file will conform to.
+ *
+ * Since: 1.2
  **/
 typedef enum _cairo_svg_version {
     CAIRO_SVG_VERSION_1_1,
diff --git a/src/cairo-version.c b/src/cairo-version.c
index 6e13fa5..d9ad240 100644
--- a/src/cairo-version.c
+++ b/src/cairo-version.c
@@ -144,24 +144,32 @@
  *
  * The version of cairo available at compile-time, encoded using
  * CAIRO_VERSION_ENCODE().
+ *
+ * Since: 1.0
  **/
 
 /**
  * CAIRO_VERSION_MAJOR:
  *
  * The major component of the version of cairo available at compile-time.
+ *
+ * Since: 1.0
  **/
 
 /**
  * CAIRO_VERSION_MINOR:
  *
  * The minor component of the version of cairo available at compile-time.
+ *
+ * Since: 1.0
  **/
 
 /**
  * CAIRO_VERSION_MICRO:
  *
  * The micro component of the version of cairo available at compile-time.
+ *
+ * Since: 1.0
  **/
 
 /**
@@ -169,6 +177,8 @@
  *
  * A human-readable string literal containing the version of cairo available
  * at compile-time, in the form of "X.Y.Z".
+ *
+ * Since: 1.8
  **/
 
 /**
@@ -183,6 +193,8 @@
  * that later versions compare greater than earlier versions.
  *
  * Returns: the encoded version.
+ *
+ * Since: 1.0
  **/
 
 /**
@@ -218,6 +230,8 @@
  * equivalents %CAIRO_VERSION and %CAIRO_VERSION_STRING.
  *
  * Return value: the encoded version.
+ *
+ * Since: 1.0
  **/
 int
 cairo_version (void)
@@ -235,6 +249,8 @@ cairo_version (void)
  * %CAIRO_VERSION_STRING and %CAIRO_VERSION.
  *
  * Return value: a string containing the version.
+ *
+ * Since: 1.0
  **/
 const char*
 cairo_version_string (void)
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index 0d47311..8f77eff 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -132,6 +132,8 @@ _x_bread_crumb (Display *dpy,
  *
  * Defined if the Xlib surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.0
  **/
 
 /**
@@ -152,6 +154,8 @@ _x_bread_crumb (Display *dpy,
  *
  * Defined if the XLib/XRender surface functions are available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.6
  **/
 
 /* Xlib doesn't define a typedef, so define one ourselves */
@@ -1635,6 +1639,8 @@ static cairo_bool_t valid_size (int width, int height)
  * children will be included.
  *
  * Return value: the newly created surface
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_xlib_surface_create (Display     *dpy,
@@ -1679,6 +1685,8 @@ cairo_xlib_surface_create (Display     *dpy,
  * This will be drawn to as a %CAIRO_FORMAT_A1 object.
  *
  * Return value: the newly created surface
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_xlib_surface_create_for_bitmap (Display  *dpy,
@@ -1724,6 +1732,8 @@ cairo_xlib_surface_create_for_bitmap (Display  *dpy,
  * window changes.
  *
  * Return value: the newly created surface
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_xlib_surface_create_with_xrender_format (Display		    *dpy,
@@ -1795,6 +1805,8 @@ cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface)
  *
  * A Pixmap can never change size, so it is never necessary to call
  * this function on a surface created for a Pixmap.
+ *
+ * Since: 1.0
  **/
 void
 cairo_xlib_surface_set_size (cairo_surface_t *abstract_surface,
@@ -1839,6 +1851,8 @@ cairo_xlib_surface_set_size (cairo_surface_t *abstract_surface,
  * will get X protocol errors and will probably terminate.
  * No checks are done by this function to ensure this
  * compatibility.
+ *
+ * Since: 1.0
  **/
 void
 cairo_xlib_surface_set_drawable (cairo_surface_t   *abstract_surface,
diff --git a/src/cairo.c b/src/cairo.c
index 1b3bc0e..82f02b9 100644
--- a/src/cairo.c
+++ b/src/cairo.c
@@ -218,6 +218,8 @@ _cairo_create_in_error (cairo_status_t status)
  *  writing (such as #cairo_mime_surface_t) then a
  *  %CAIRO_STATUS_WRITE_ERROR will be raised.  You can use this
  *  object normally, but no drawing will be done.
+ *
+ * Since: 1.0
  **/
 cairo_t *
 cairo_create (cairo_surface_t *target)
@@ -258,6 +260,8 @@ _cairo_init (cairo_t *cr,
  * cairo_get_reference_count().
  *
  * Return value: the referenced #cairo_t.
+ *
+ * Since: 1.0
  **/
 cairo_t *
 cairo_reference (cairo_t *cr)
@@ -285,6 +289,8 @@ _cairo_fini (cairo_t *cr)
  * Decreases the reference count on @cr by one. If the result
  * is zero, then @cr and all associated resources are freed.
  * See cairo_reference().
+ *
+ * Since: 1.0
  **/
 void
 cairo_destroy (cairo_t *cr)
@@ -388,6 +394,8 @@ cairo_get_reference_count (cairo_t *cr)
  * a #cairo_t is freed. If the reference count of a #cairo_t
  * drops to zero in response to a call to cairo_destroy(),
  * any saved states will be freed along with the #cairo_t.
+ *
+ * Since: 1.0
  **/
 void
 cairo_save (cairo_t *cr)
@@ -410,6 +418,8 @@ slim_hidden_def(cairo_save);
  * Restores @cr to the state saved by a preceding call to
  * cairo_save() and removes that state from the stack of
  * saved states.
+ *
+ * Since: 1.0
  **/
 void
 cairo_restore (cairo_t *cr)
@@ -592,6 +602,8 @@ cairo_pop_group_to_source (cairo_t *cr)
  * each available compositing operator.
  *
  * The default operator is %CAIRO_OPERATOR_OVER.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_operator (cairo_t *cr, cairo_operator_t op)
@@ -651,6 +663,8 @@ cairo_set_opacity (cairo_t *cr, double opacity)
  *
  * The default source pattern is opaque black, (that is, it is
  * equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)).
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue)
@@ -684,6 +698,8 @@ slim_hidden_def (cairo_set_source_rgb);
  *
  * 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)).
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_source_rgba (cairo_t *cr,
@@ -722,6 +738,8 @@ cairo_set_source_rgba (cairo_t *cr,
  * The resulting pattern can be queried with cairo_get_source() so
  * that these attributes can be modified if desired, (eg. to create a
  * repeating pattern with cairo_pattern_set_extend()).
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_source_surface (cairo_t	  *cr,
@@ -763,6 +781,8 @@ slim_hidden_def (cairo_set_source_surface);
  * 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)).
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_source (cairo_t *cr, cairo_pattern_t *source)
@@ -797,6 +817,8 @@ slim_hidden_def (cairo_set_source);
  * Return value: the current source pattern. This object is owned by
  * cairo. To keep a reference to it, you must call
  * cairo_pattern_reference().
+ *
+ * Since: 1.0
  **/
 cairo_pattern_t *
 cairo_get_source (cairo_t *cr)
@@ -822,6 +844,8 @@ cairo_get_source (cairo_t *cr)
  * within Cairo is limited by the precision of its internal arithmetic, and
  * the prescribed @tolerance is restricted to the smallest
  * representable internal value.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_tolerance (cairo_t *cr, double tolerance)
@@ -849,6 +873,8 @@ slim_hidden_def (cairo_set_tolerance);
  *
  * Note that this option does not affect text rendering, instead see
  * cairo_font_options_set_antialias().
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias)
@@ -875,6 +901,8 @@ cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias)
  * on the semantics of each available fill rule.
  *
  * The default fill rule is %CAIRO_FILL_RULE_WINDING.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule)
@@ -914,6 +942,8 @@ cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule)
  * construction.
  *
  * The default line width value is 2.0.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_line_width (cairo_t *cr, double width)
@@ -947,6 +977,8 @@ slim_hidden_def (cairo_set_line_width);
  * construction.
  *
  * The default line cap style is %CAIRO_LINE_CAP_BUTT.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap)
@@ -977,6 +1009,8 @@ slim_hidden_def (cairo_set_line_cap);
  * construction.
  *
  * The default line join style is %CAIRO_LINE_JOIN_MITER.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join)
@@ -1023,6 +1057,8 @@ slim_hidden_def (cairo_set_line_join);
  * If any value in @dashes is negative, or if all values are 0, then
  * @cr will be put into an error state with a status of
  * %CAIRO_STATUS_INVALID_DASH.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_dash (cairo_t	     *cr,
@@ -1116,6 +1152,8 @@ cairo_get_dash (cairo_t *cr,
  *
  * A miter limit for a desired angle can be computed as: miter limit =
  * 1/sin(angle/2)
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_miter_limit (cairo_t *cr, double limit)
@@ -1141,6 +1179,8 @@ cairo_set_miter_limit (cairo_t *cr, double limit)
  * user-space coordinate according to the CTM in place before the new
  * call to cairo_translate(). In other words, the translation of the
  * user-space origin takes place after any existing transformation.
+ *
+ * Since: 1.0
  **/
 void
 cairo_translate (cairo_t *cr, double tx, double ty)
@@ -1166,6 +1206,8 @@ slim_hidden_def (cairo_translate);
  * and Y user-space axes by @sx and @sy respectively. The scaling of
  * the axes takes place after any existing transformation of user
  * space.
+ *
+ * Since: 1.0
  **/
 void
 cairo_scale (cairo_t *cr, double sx, double sy)
@@ -1192,6 +1234,8 @@ slim_hidden_def (cairo_scale);
  * 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.
+ *
+ * Since: 1.0
  **/
 void
 cairo_rotate (cairo_t *cr, double angle)
@@ -1214,6 +1258,8 @@ cairo_rotate (cairo_t *cr, double angle)
  * Modifies the current transformation matrix (CTM) by applying
  * @matrix as an additional transformation. The new transformation of
  * user space takes place after any existing transformation.
+ *
+ * Since: 1.0
  **/
 void
 cairo_transform (cairo_t	      *cr,
@@ -1237,6 +1283,8 @@ slim_hidden_def (cairo_transform);
  *
  * Modifies the current transformation matrix (CTM) by setting it
  * equal to @matrix.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_matrix (cairo_t	       *cr,
@@ -1261,6 +1309,8 @@ slim_hidden_def (cairo_set_matrix);
  * 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.
+ *
+ * Since: 1.0
  **/
 void
 cairo_identity_matrix (cairo_t *cr)
@@ -1284,6 +1334,8 @@ cairo_identity_matrix (cairo_t *cr)
  * Transform a coordinate from user space to device space by
  * multiplying the given point by the current transformation matrix
  * (CTM).
+ *
+ * Since: 1.0
  **/
 void
 cairo_user_to_device (cairo_t *cr, double *x, double *y)
@@ -1305,6 +1357,8 @@ slim_hidden_def (cairo_user_to_device);
  * function is similar to cairo_user_to_device() except that the
  * translation components of the CTM will be ignored when transforming
  * (@dx, at dy).
+ *
+ * Since: 1.0
  **/
 void
 cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy)
@@ -1325,6 +1379,8 @@ slim_hidden_def (cairo_user_to_device_distance);
  * Transform a coordinate from device space to user space by
  * multiplying the given point by the inverse of the current
  * transformation matrix (CTM).
+ *
+ * Since: 1.0
  **/
 void
 cairo_device_to_user (cairo_t *cr, double *x, double *y)
@@ -1346,6 +1402,8 @@ slim_hidden_def (cairo_device_to_user);
  * function is similar to cairo_device_to_user() except that the
  * translation components of the inverse CTM will be ignored when
  * transforming (@dx, at dy).
+ *
+ * Since: 1.0
  **/
 void
 cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy)
@@ -1362,6 +1420,8 @@ cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy)
  *
  * Clears the current path. After this call there will be no path and
  * no current point.
+ *
+ * Since: 1.0
  **/
 void
 cairo_new_path (cairo_t *cr)
@@ -1416,6 +1476,8 @@ cairo_new_sub_path (cairo_t *cr)
  *
  * Begin a new sub-path. After this call the current point will be (@x,
  * @y).
+ *
+ * Since: 1.0
  **/
 void
 cairo_move_to (cairo_t *cr, double x, double y)
@@ -1444,6 +1506,8 @@ slim_hidden_def(cairo_move_to);
  *
  * If there is no current point before the call to cairo_line_to()
  * this function will behave as cairo_move_to(@cr, @x, @y).
+ *
+ * Since: 1.0
  **/
 void
 cairo_line_to (cairo_t *cr, double x, double y)
@@ -1477,6 +1541,8 @@ slim_hidden_def (cairo_line_to);
  * If there is no current point before the call to cairo_curve_to()
  * this function will behave as if preceded by a call to
  * cairo_move_to(@cr, @x1, @y1).
+ *
+ * Since: 1.0
  **/
 void
 cairo_curve_to (cairo_t *cr,
@@ -1545,6 +1611,8 @@ slim_hidden_def (cairo_curve_to);
  * cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI);
  * cairo_restore (cr);
  * </programlisting></informalexample>
+ *
+ * Since: 1.0
  **/
 void
 cairo_arc (cairo_t *cr,
@@ -1588,6 +1656,8 @@ cairo_arc (cairo_t *cr,
  *
  * See cairo_arc() for more details. This function differs only in the
  * direction of the arc between the two angles.
+ *
+ * Since: 1.0
  **/
 void
 cairo_arc_negative (cairo_t *cr,
@@ -1663,6 +1733,8 @@ cairo_rel_arc_to (cairo_t *cr,
  * It is an error to call this function with no current point. Doing
  * so will cause @cr to shutdown with a status of
  * %CAIRO_STATUS_NO_CURRENT_POINT.
+ *
+ * Since: 1.0
  **/
 void
 cairo_rel_move_to (cairo_t *cr, double dx, double dy)
@@ -1694,6 +1766,8 @@ cairo_rel_move_to (cairo_t *cr, double dx, double dy)
  * It is an error to call this function with no current point. Doing
  * so will cause @cr to shutdown with a status of
  * %CAIRO_STATUS_NO_CURRENT_POINT.
+ *
+ * Since: 1.0
  **/
 void
 cairo_rel_line_to (cairo_t *cr, double dx, double dy)
@@ -1733,6 +1807,8 @@ slim_hidden_def(cairo_rel_line_to);
  * It is an error to call this function with no current point. Doing
  * so will cause @cr to shutdown with a status of
  * %CAIRO_STATUS_NO_CURRENT_POINT.
+ *
+ * Since: 1.0
  **/
 void
 cairo_rel_curve_to (cairo_t *cr,
@@ -1772,6 +1848,8 @@ cairo_rel_curve_to (cairo_t *cr,
  * cairo_rel_line_to (cr, -width, 0);
  * cairo_close_path (cr);
  * </programlisting></informalexample>
+ *
+ * Since: 1.0
  **/
 void
 cairo_rectangle (cairo_t *cr,
@@ -1831,6 +1909,8 @@ cairo_stroke_to_path (cairo_t *cr)
  * 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.
+ *
+ * Since: 1.0
  **/
 void
 cairo_close_path (cairo_t *cr)
@@ -1903,6 +1983,8 @@ cairo_path_extents (cairo_t *cr,
  *
  * A drawing operator that paints the current source everywhere within
  * the current clip region.
+ *
+ * Since: 1.0
  **/
 void
 cairo_paint (cairo_t *cr)
@@ -1927,6 +2009,8 @@ slim_hidden_def (cairo_paint);
  * the current clip region using a mask of constant alpha value
  * @alpha. The effect is similar to cairo_paint(), but the drawing
  * is faded out using the alpha value.
+ *
+ * Since: 1.0
  **/
 void
 cairo_paint_with_alpha (cairo_t *cr,
@@ -1951,6 +2035,8 @@ cairo_paint_with_alpha (cairo_t *cr,
  * using the alpha channel of @pattern as a mask. (Opaque
  * areas of @pattern are painted with the source, transparent
  * areas are not painted.)
+ *
+ * Since: 1.0
  **/
 void
 cairo_mask (cairo_t         *cr,
@@ -1988,6 +2074,8 @@ slim_hidden_def (cairo_mask);
  * using the alpha channel of @surface as a mask. (Opaque
  * areas of @surface are painted with the source, transparent
  * areas are not painted.)
+ *
+ * Since: 1.0
  **/
 void
 cairo_mask_surface (cairo_t         *cr,
@@ -2042,6 +2130,8 @@ cairo_mask_surface (cairo_t         *cr,
  *
  * In no case will a cap style of %CAIRO_LINE_CAP_BUTT cause anything
  * to be drawn in the case of either degenerate segments or sub-paths.
+ *
+ * Since: 1.0
  **/
 void
 cairo_stroke (cairo_t *cr)
@@ -2069,6 +2159,8 @@ slim_hidden_def(cairo_stroke);
  * See cairo_set_line_width(), cairo_set_line_join(),
  * cairo_set_line_cap(), cairo_set_dash(), and
  * cairo_stroke_preserve().
+ *
+ * Since: 1.0
  **/
 void
 cairo_stroke_preserve (cairo_t *cr)
@@ -2093,6 +2185,8 @@ slim_hidden_def(cairo_stroke_preserve);
  * filled). After cairo_fill(), the current path will be cleared from
  * the cairo context. See cairo_set_fill_rule() and
  * cairo_fill_preserve().
+ *
+ * Since: 1.0
  **/
 void
 cairo_fill (cairo_t *cr)
@@ -2117,6 +2211,8 @@ cairo_fill (cairo_t *cr)
  * path within the cairo context.
  *
  * See cairo_set_fill_rule() and cairo_fill().
+ *
+ * Since: 1.0
  **/
 void
 cairo_fill_preserve (cairo_t *cr)
@@ -2143,6 +2239,8 @@ slim_hidden_def(cairo_fill_preserve);
  *
  * This is a convenience function that simply calls
  * cairo_surface_copy_page() on @cr's target.
+ *
+ * Since: 1.0
  **/
 void
 cairo_copy_page (cairo_t *cr)
@@ -2166,6 +2264,8 @@ cairo_copy_page (cairo_t *cr)
  *
  * This is a convenience function that simply calls
  * cairo_surface_show_page() on @cr's target.
+ *
+ * Since: 1.0
  **/
 void
 cairo_show_page (cairo_t *cr)
@@ -2197,6 +2297,8 @@ cairo_show_page (cairo_t *cr)
  *
  * Return value: A non-zero value if the point is inside, or zero if
  * outside.
+ *
+ * Since: 1.0
  **/
 cairo_bool_t
 cairo_in_stroke (cairo_t *cr, double x, double y)
@@ -2229,6 +2331,8 @@ cairo_in_stroke (cairo_t *cr, double x, double y)
  *
  * Return value: A non-zero value if the point is inside, or zero if
  * outside.
+ *
+ * Since: 1.0
  **/
 cairo_bool_t
 cairo_in_fill (cairo_t *cr, double x, double y)
@@ -2273,6 +2377,8 @@ cairo_in_fill (cairo_t *cr, double x, double y)
  * See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(),
  * cairo_set_line_cap(), cairo_set_dash(), and
  * cairo_stroke_preserve().
+ *
+ * Since: 1.0
  **/
 void
 cairo_stroke_extents (cairo_t *cr,
@@ -2322,6 +2428,8 @@ cairo_stroke_extents (cairo_t *cr,
  * if the non-inked path extents are desired.
  *
  * See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve().
+ *
+ * Since: 1.0
  **/
 void
 cairo_fill_extents (cairo_t *cr,
@@ -2368,6 +2476,8 @@ cairo_fill_extents (cairo_t *cr,
  * calling cairo_clip() within a cairo_save()/cairo_restore()
  * pair. The only other means of increasing the size of the clip
  * region is cairo_reset_clip().
+ *
+ * Since: 1.0
  **/
 void
 cairo_clip (cairo_t *cr)
@@ -2403,6 +2513,8 @@ cairo_clip (cairo_t *cr)
  * calling cairo_clip_preserve() within a cairo_save()/cairo_restore()
  * pair. The only other means of increasing the size of the clip
  * region is cairo_reset_clip().
+ *
+ * Since: 1.0
  **/
 void
 cairo_clip_preserve (cairo_t *cr)
@@ -2433,6 +2545,8 @@ slim_hidden_def(cairo_clip_preserve);
  * higher-level code which calls cairo_clip(). Consider using
  * cairo_save() and cairo_restore() around cairo_clip() as a more
  * robust means of temporarily restricting the clip region.
+ *
+ * Since: 1.0
  **/
 void
 cairo_reset_clip (cairo_t *cr)
@@ -2593,6 +2707,8 @@ cairo_copy_clip_rectangle_list (cairo_t *cr)
  *
  * This function is equivalent to a call to cairo_toy_font_face_create()
  * followed by cairo_set_font_face().
+ *
+ * Since: 1.0
  **/
 void
 cairo_select_font_face (cairo_t              *cr,
@@ -2626,6 +2742,8 @@ cairo_select_font_face (cairo_t              *cr,
  * will be stored.
  *
  * Gets the font extents for the currently selected font.
+ *
+ * Since: 1.0
  **/
 void
 cairo_font_extents (cairo_t              *cr,
@@ -2655,6 +2773,8 @@ cairo_font_extents (cairo_t              *cr,
  * Replaces the current #cairo_font_face_t object in the #cairo_t with
  * @font_face. The replaced font face in the #cairo_t will be
  * destroyed if there are no other references to it.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_font_face (cairo_t           *cr,
@@ -2687,6 +2807,8 @@ cairo_set_font_face (cairo_t           *cr,
  * objects it is passed to, (for example, calling
  * cairo_set_font_face() with a nil font will trigger an error that
  * will shutdown the #cairo_t object).
+ *
+ * Since: 1.0
  **/
 cairo_font_face_t *
 cairo_get_font_face (cairo_t *cr)
@@ -2711,6 +2833,8 @@ cairo_get_font_face (cairo_t *cr)
  * If text is drawn without a call to cairo_set_font_size(), (nor
  * cairo_set_font_matrix() nor cairo_set_scaled_font()), the default
  * font size is 10.0.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_font_size (cairo_t *cr, double size)
@@ -2738,6 +2862,8 @@ slim_hidden_def (cairo_set_font_size);
  * simple scale is used (see cairo_set_font_size()), but a more
  * complex font matrix can be used to shear the font
  * or stretch it unequally along the two axes
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_font_matrix (cairo_t		    *cr,
@@ -2761,6 +2887,8 @@ slim_hidden_def (cairo_set_font_matrix);
  *
  * Stores the current font matrix into @matrix. See
  * cairo_set_font_matrix().
+ *
+ * Since: 1.0
  **/
 void
 cairo_get_font_matrix (cairo_t *cr, cairo_matrix_t *matrix)
@@ -2783,6 +2911,8 @@ cairo_get_font_matrix (cairo_t *cr, cairo_matrix_t *matrix)
  * options derived from underlying surface; if the value in @options
  * has a default value (like %CAIRO_ANTIALIAS_DEFAULT), then the value
  * from the surface is used.
+ *
+ * Since: 1.0
  **/
 void
 cairo_set_font_options (cairo_t                    *cr,
@@ -2815,6 +2945,8 @@ slim_hidden_def (cairo_set_font_options);
  * Note that the returned options do not include any options derived
  * from the underlying surface; they are literally the options
  * passed to cairo_set_font_options().
+ *
+ * Since: 1.0
  **/
 void
 cairo_get_font_options (cairo_t              *cr,
@@ -2919,6 +3051,8 @@ slim_hidden_def (cairo_get_scaled_font);
  * 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.
+ *
+ * Since: 1.0
  **/
 void
 cairo_text_extents (cairo_t              *cr,
@@ -2985,6 +3119,8 @@ cairo_text_extents (cairo_t              *cr,
  *
  * Note that whitespace glyphs do not contribute to the size of the
  * rectangle (extents.width and extents.height).
+ *
+ * Since: 1.0
  **/
 void
 cairo_glyph_extents (cairo_t                *cr,
@@ -3048,6 +3184,8 @@ cairo_glyph_extents (cairo_t                *cr,
  * and simple programs, but it is not expected to be adequate for
  * serious text-using applications. See cairo_show_glyphs() for the
  * "real" text display API in cairo.
+ *
+ * Since: 1.0
  **/
 void
 cairo_show_text (cairo_t *cr, const char *utf8)
@@ -3148,6 +3286,8 @@ cairo_show_text (cairo_t *cr, const char *utf8)
  * 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.
+ *
+ * Since: 1.0
  **/
 void
 cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs)
@@ -3307,6 +3447,8 @@ cairo_show_text_glyphs (cairo_t			   *cr,
  * and simple programs, but it is not expected to be adequate for
  * serious text-using applications. See cairo_glyph_path() for the
  * "real" text path API in cairo.
+ *
+ * Since: 1.0
  **/
 void
 cairo_text_path (cairo_t *cr, const char *utf8)
@@ -3377,6 +3519,8 @@ cairo_text_path (cairo_t *cr, const char *utf8)
  * Adds closed paths for the glyphs to the current path.  The generated
  * path if filled, achieves an effect similar to that of
  * cairo_show_glyphs().
+ *
+ * Since: 1.0
  **/
 void
 cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs)
@@ -3411,6 +3555,8 @@ cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs)
  * Gets the current compositing operator for a cairo context.
  *
  * Return value: the current compositing operator.
+ *
+ * Since: 1.0
  **/
 cairo_operator_t
 cairo_get_operator (cairo_t *cr)
@@ -3447,6 +3593,8 @@ cairo_get_opacity (cairo_t *cr)
  * Gets the current tolerance value, as set by cairo_set_tolerance().
  *
  * Return value: the current tolerance value.
+ *
+ * Since: 1.0
  **/
 double
 cairo_get_tolerance (cairo_t *cr)
@@ -3466,6 +3614,8 @@ slim_hidden_def (cairo_get_tolerance);
  * cairo_set_antialias().
  *
  * Return value: the current shape antialiasing mode.
+ *
+ * Since: 1.0
  **/
 cairo_antialias_t
 cairo_get_antialias (cairo_t *cr)
@@ -3525,6 +3675,8 @@ cairo_has_current_point (cairo_t *cr)
  *
  * Some functions unset the current path and as a result, current point:
  * cairo_fill(), cairo_stroke().
+ *
+ * Since: 1.0
  **/
 void
 cairo_get_current_point (cairo_t *cr, double *x_ret, double *y_ret)
@@ -3552,6 +3704,8 @@ slim_hidden_def(cairo_get_current_point);
  * Gets the current fill rule, as set by cairo_set_fill_rule().
  *
  * Return value: the current fill rule.
+ *
+ * Since: 1.0
  **/
 cairo_fill_rule_t
 cairo_get_fill_rule (cairo_t *cr)
@@ -3572,6 +3726,8 @@ cairo_get_fill_rule (cairo_t *cr)
  * cairo_get_line_width().
  *
  * Return value: the current line width.
+ *
+ * Since: 1.0
  **/
 double
 cairo_get_line_width (cairo_t *cr)
@@ -3590,6 +3746,8 @@ slim_hidden_def (cairo_get_line_width);
  * Gets the current line cap style, as set by cairo_set_line_cap().
  *
  * Return value: the current line cap style.
+ *
+ * Since: 1.0
  **/
 cairo_line_cap_t
 cairo_get_line_cap (cairo_t *cr)
@@ -3607,6 +3765,8 @@ cairo_get_line_cap (cairo_t *cr)
  * Gets the current line join style, as set by cairo_set_line_join().
  *
  * Return value: the current line join style.
+ *
+ * Since: 1.0
  **/
 cairo_line_join_t
 cairo_get_line_join (cairo_t *cr)
@@ -3624,6 +3784,8 @@ cairo_get_line_join (cairo_t *cr)
  * Gets the current miter limit, as set by cairo_set_miter_limit().
  *
  * Return value: the current miter limit.
+ *
+ * Since: 1.0
  **/
 double
 cairo_get_miter_limit (cairo_t *cr)
@@ -3640,6 +3802,8 @@ cairo_get_miter_limit (cairo_t *cr)
  * @matrix: return value for the matrix
  *
  * Stores the current transformation matrix (CTM) into @matrix.
+ *
+ * Since: 1.0
  **/
 void
 cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix)
@@ -3668,6 +3832,8 @@ slim_hidden_def (cairo_get_matrix);
  *
  * Return value: the target surface. This object is owned by cairo. To
  * keep a reference to it, you must call cairo_surface_reference().
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_get_target (cairo_t *cr)
@@ -3733,6 +3899,8 @@ cairo_get_group_target (cairo_t *cr)
  * Return value: the copy of the current path. The caller owns the
  * returned object and should call cairo_path_destroy() when finished
  * with it.
+ *
+ * Since: 1.0
  **/
 cairo_path_t *
 cairo_copy_path (cairo_t *cr)
@@ -3775,6 +3943,8 @@ cairo_copy_path (cairo_t *cr)
  * Return value: the copy of the current path. The caller owns the
  * returned object and should call cairo_path_destroy() when finished
  * with it.
+ *
+ * Since: 1.0
  **/
 cairo_path_t *
 cairo_copy_path_flat (cairo_t *cr)
@@ -3796,6 +3966,8 @@ cairo_copy_path_flat (cairo_t *cr)
  * #cairo_path_t for details on how the path data structure should be
  * initialized, and note that <literal>path->status</literal> must be
  * initialized to %CAIRO_STATUS_SUCCESS.
+ *
+ * Since: 1.0
  **/
 void
 cairo_append_path (cairo_t		*cr,
@@ -3840,6 +4012,8 @@ cairo_append_path (cairo_t		*cr,
  * Checks whether an error has previously occurred for this context.
  *
  * Returns: the current status of this context, see #cairo_status_t
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_status (cairo_t *cr)
diff --git a/src/cairo.h b/src/cairo.h
index 5a4d6b1..54696ad 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -101,6 +101,8 @@ cairo_version_string (void);
  *      /<!-- -->* do something *<!-- -->/
  *  }
  * </programlisting></informalexample>
+ *
+ * Since: 1.0
  **/
 typedef int cairo_bool_t;
 
@@ -116,6 +118,8 @@ typedef int cairo_bool_t;
  *
  * Memory management of #cairo_t is done with
  * cairo_reference() and cairo_destroy().
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo cairo_t;
 
@@ -143,6 +147,8 @@ typedef struct _cairo cairo_t;
  *
  * Memory management of #cairo_surface_t is done with
  * cairo_surface_reference() and cairo_surface_destroy().
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_surface cairo_surface_t;
 
@@ -180,6 +186,8 @@ typedef struct _cairo_device cairo_device_t;
  *     x_new = xx * x + xy * y + x0;
  *     y_new = yx * x + yy * y + y0;
  * </programlisting>
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_matrix {
     double xx; double yx;
@@ -206,6 +214,8 @@ typedef struct _cairo_matrix {
  *
  * Memory management of #cairo_pattern_t is done with
  * cairo_pattern_reference() and cairo_pattern_destroy().
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_pattern cairo_pattern_t;
 
@@ -216,6 +226,8 @@ typedef struct _cairo_pattern cairo_pattern_t;
  * #cairo_destroy_func_t 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.
+ *
+ * Since: 1.0
  **/
 typedef void (*cairo_destroy_func_t) (void *data);
 
@@ -228,6 +240,8 @@ typedef void (*cairo_destroy_func_t) (void *data);
  * and there is no need to initialize the object; only the unique
  * address of a #cairo_data_key_t object is used.  Typically, you
  * would just use the address of a static #cairo_data_key_t object.
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_user_data_key {
     int unused;
@@ -288,6 +302,8 @@ typedef struct _cairo_user_data_key {
  *
  * New entries may be added in future versions.  Use cairo_status_to_string()
  * to get a human-readable representation of an error message.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_status {
     CAIRO_STATUS_SUCCESS = 0,
@@ -346,6 +362,8 @@ typedef enum _cairo_status {
  * Note: The large values here are designed to keep #cairo_content_t
  * values distinct from #cairo_format_t values so that the
  * implementation can detect the error if users confuse the two types.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_content {
     CAIRO_CONTENT_COLOR		= 0x1000,
@@ -381,6 +399,8 @@ typedef enum _cairo_content {
  * image data.
  *
  * New entries may be added in future versions.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_format {
     CAIRO_FORMAT_INVALID   = -1,
@@ -408,6 +428,8 @@ typedef enum _cairo_format {
  * %CAIRO_STATUS_WRITE_ERROR otherwise.
  *
  * Returns: the status code of the write operation
+ *
+ * Since: 1.0
  **/
 typedef cairo_status_t (*cairo_write_func_t) (void		  *closure,
 					      const unsigned char *data,
@@ -428,6 +450,8 @@ typedef cairo_status_t (*cairo_write_func_t) (void		  *closure,
  * %CAIRO_STATUS_READ_ERROR otherwise.
  *
  * Returns: the status code of the read operation
+ *
+ * Since: 1.0
  **/
 typedef cairo_status_t (*cairo_read_func_t) (void		*closure,
 					     unsigned char	*data,
@@ -572,6 +596,8 @@ cairo_pop_group_to_source (cairo_t *cr);
  * For a more detailed explanation of the effects of each operator, including
  * the mathematical definitions, see
  * <ulink url="http://cairographics.org/operators/">http://cairographics.org/operators/</ulink>.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_operator {
     CAIRO_OPERATOR_CLEAR,
@@ -666,6 +692,8 @@ cairo_set_tolerance (cairo_t *cr, double tolerance);
  *
  * The interpretation of @CAIRO_ANTIALIAS_DEFAULT is left entirely up to
  * the backend, typically this will be similar to @CAIRO_ANTIALIAS_GOOD.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_antialias {
     CAIRO_ANTIALIAS_DEFAULT,
@@ -708,6 +736,8 @@ cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias);
  * The default fill rule is %CAIRO_FILL_RULE_WINDING.
  *
  * New entries may be added in future versions.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_fill_rule {
     CAIRO_FILL_RULE_WINDING,
@@ -729,6 +759,8 @@ cairo_set_line_width (cairo_t *cr, double width);
  * Specifies how to render the endpoints of the path when stroking.
  *
  * The default line cap style is %CAIRO_LINE_CAP_BUTT.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_line_cap {
     CAIRO_LINE_CAP_BUTT,
@@ -751,6 +783,8 @@ cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap);
  * Specifies how to render the junction of two lines when stroking.
  *
  * The default line join style is %CAIRO_LINE_JOIN_MITER.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_line_join {
     CAIRO_LINE_JOIN_MITER,
@@ -997,6 +1031,8 @@ cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list);
  *
  * Memory management of #cairo_scaled_font_t is done with
  * cairo_scaled_font_reference() and cairo_scaled_font_destroy().
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_scaled_font cairo_scaled_font_t;
 
@@ -1016,6 +1052,8 @@ typedef struct _cairo_scaled_font cairo_scaled_font_t;
  *
  * Memory management of #cairo_font_face_t is done with
  * cairo_font_face_reference() and cairo_font_face_destroy().
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_font_face cairo_font_face_t;
 
@@ -1042,6 +1080,8 @@ typedef struct _cairo_font_face cairo_font_face_t;
  * Note that the offsets given by @x and @y are not cumulative. When
  * drawing or measuring text, each glyph is individually positioned
  * with respect to the overall origin
+ *
+ * Since: 1.0
  **/
 typedef struct {
     unsigned long        index;
@@ -1125,6 +1165,8 @@ typedef enum _cairo_text_cluster_flags {
  * 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.
+ *
+ * Since: 1.0
  **/
 typedef struct {
     double x_bearing;
@@ -1175,6 +1217,8 @@ typedef struct {
  * 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.
+ *
+ * Since: 1.0
  **/
 typedef struct {
     double ascent;
@@ -1191,6 +1235,8 @@ typedef struct {
  * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style
  *
  * Specifies variants of a font face based on their slant.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_font_slant {
     CAIRO_FONT_SLANT_NORMAL,
@@ -1204,6 +1250,8 @@ typedef enum _cairo_font_slant {
  * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight
  *
  * Specifies variants of a font face based on their weight.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_font_weight {
     CAIRO_FONT_WEIGHT_NORMAL,
@@ -1226,6 +1274,8 @@ typedef enum _cairo_font_weight {
  * The subpixel order specifies the order of color elements within
  * each pixel on the display device when rendering with an
  * antialiasing mode of %CAIRO_ANTIALIAS_SUBPIXEL.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_subpixel_order {
     CAIRO_SUBPIXEL_ORDER_DEFAULT,
@@ -1256,6 +1306,8 @@ typedef enum _cairo_subpixel_order {
  * styles are supported by all font backends.
  *
  * New entries may be added in future versions.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_hint_style {
     CAIRO_HINT_STYLE_DEFAULT,
@@ -1277,6 +1329,8 @@ typedef enum _cairo_hint_style {
  * 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.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_hint_metrics {
     CAIRO_HINT_METRICS_DEFAULT,
@@ -1303,6 +1357,8 @@ typedef enum _cairo_hint_metrics {
  * cairo_font_options_hash() should be used to copy, check
  * for equality, merge, or compute a hash value of
  * #cairo_font_options_t objects.
+ *
+ * Since: 1.0
  **/
 typedef struct _cairo_font_options cairo_font_options_t;
 
@@ -1901,6 +1957,8 @@ cairo_get_group_target (cairo_t *cr);
  * #cairo_path_data_t is used to describe the type of one portion
  * of a path when represented as a #cairo_path_t.
  * See #cairo_path_data_t for details.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_path_data_type {
     CAIRO_PATH_MOVE_TO,
@@ -1974,6 +2032,8 @@ typedef enum _cairo_path_data_type {
  * always use <literal>data->header.length</literal> to
  * iterate over the path data, instead of hardcoding the number of
  * elements for each element type.
+ *
+ * Since: 1.0
  **/
 typedef union _cairo_path_data_t cairo_path_data_t;
 union _cairo_path_data_t {
@@ -2004,6 +2064,8 @@ union _cairo_path_data_t {
  * array. This number is larger than the number of independent path
  * portions (defined in #cairo_path_data_type_t), since the data
  * includes both headers and coordinates for each portion.
+ *
+ * Since: 1.0
  **/
 typedef struct cairo_path {
     cairo_status_t status;
@@ -2793,6 +2855,8 @@ cairo_pattern_get_matrix (cairo_pattern_t *pattern,
  * and %CAIRO_EXTEND_PAD for gradient patterns.
  *
  * New entries may be added in future versions.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_extend {
     CAIRO_EXTEND_NONE,
@@ -2824,6 +2888,8 @@ cairo_pattern_get_extend (cairo_pattern_t *pattern);
  * applied when reading pixel values from patterns. See
  * cairo_pattern_set_filter() for indicating the desired filter to be
  * used with a particular pattern.
+ *
+ * Since: 1.0
  **/
 typedef enum _cairo_filter {
     CAIRO_FILTER_FAST,
diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c
index f393cbe..08119d2 100644
--- a/src/win32/cairo-win32-display-surface.c
+++ b/src/win32/cairo-win32-display-surface.c
@@ -93,6 +93,8 @@
  *
  * Defined if the Microsoft Windows surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.0
  **/
 
 static const cairo_surface_backend_t cairo_win32_display_surface_backend;
@@ -910,6 +912,8 @@ static const cairo_surface_backend_t cairo_win32_display_surface_backend = {
  * cairo_win32_surface_create_with_dib().
  *
  * Return value: the newly created surface
+ *
+ * Since: 1.0
  **/
 cairo_surface_t *
 cairo_win32_surface_create (HDC hdc)
diff --git a/src/win32/cairo-win32-font.c b/src/win32/cairo-win32-font.c
index 8ad4832..a65d81b 100644
--- a/src/win32/cairo-win32-font.c
+++ b/src/win32/cairo-win32-font.c
@@ -84,6 +84,8 @@
  *
  * Defined if the Microsoft Windows font backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.8
  **/
 
 const cairo_scaled_font_backend_t _cairo_win32_scaled_font_backend;
@@ -2031,6 +2033,8 @@ _cairo_win32_font_face_keys_equal (const void *key_a,
  *
  * Return value: a newly created #cairo_font_face_t. Free with
  *  cairo_font_face_destroy() when you are done using it.
+ *
+ * Since: 1.6
  **/
 cairo_font_face_t *
 cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, HFONT font)
@@ -2100,6 +2104,8 @@ FAIL:
  *
  * Return value: a newly created #cairo_font_face_t. Free with
  *  cairo_font_face_destroy() when you are done using it.
+ *
+ * Since: 1.0
  **/
 cairo_font_face_t *
 cairo_win32_font_face_create_for_logfontw (LOGFONTW *logfont)
@@ -2120,6 +2126,8 @@ cairo_win32_font_face_create_for_logfontw (LOGFONTW *logfont)
  *
  * Return value: a newly created #cairo_font_face_t. Free with
  *  cairo_font_face_destroy() when you are done using it.
+ *
+ * Since: 1.2
  **/
 cairo_font_face_t *
 cairo_win32_font_face_create_for_hfont (HFONT font)
@@ -2166,6 +2174,8 @@ _cairo_scaled_font_is_win32 (cairo_scaled_font_t *scaled_font)
  * Return value: %CAIRO_STATUS_SUCCESS if the operation succeeded.
  *   otherwise an error such as %CAIRO_STATUS_NO_MEMORY and
  *   the device context is unchanged.
+ *
+ * Since: 1.0
  **/
 cairo_status_t
 cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font,
@@ -2215,6 +2225,8 @@ cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font,
  * @scaled_font: A scaled font from the Win32 font backend.
  *
  * Releases any resources allocated by cairo_win32_scaled_font_select_font()
+ *
+ * Since: 1.0
  **/
 void
 cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font)
@@ -2235,6 +2247,8 @@ cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font)
  *
  * Return value: factor to multiply logical units by to get font space
  *               coordinates.
+ *
+ * Since: 1.0
  **/
 double
 cairo_win32_scaled_font_get_metrics_factor (cairo_scaled_font_t *scaled_font)
diff --git a/src/win32/cairo-win32-surface.c b/src/win32/cairo-win32-surface.c
index ec2dd95..7cd46fc 100644
--- a/src/win32/cairo-win32-surface.c
+++ b/src/win32/cairo-win32-surface.c
@@ -87,6 +87,8 @@
  *
  * Defined if the Microsoft Windows surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
+ *
+ * Since: 1.0
  **/
 
 /**
commit 79740139e05375c4ce3542b571bc6a1e9d9137a7
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Thu Feb 16 18:52:16 2012 +0100

    doc: Do not use the '@' prefix on some tags
    
    Make the 'Since' and 'Returns' tags consistent by removing the '@'
    prefix.
    
    Fixes some "missing 'Since' field" warnings.

diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index 52f1af8..c118346 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -77,7 +77,7 @@
  * The image surface backend is always built in.
  * This macro was added for completeness in cairo 1.8.
  *
- * @Since: 1.8
+ * Since: 1.8
  **/
 
 static cairo_bool_t
diff --git a/src/cairo-script-surface.c b/src/cairo-script-surface.c
index e307c1b..89cf525 100644
--- a/src/cairo-script-surface.c
+++ b/src/cairo-script-surface.c
@@ -60,7 +60,7 @@
  * Defined if the script surface backend is available.
  * The script surface backend is always built in since 1.12.
  *
- * @Since: 1.10
+ * Since: 1.10
  **/
 
 
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index cbc44c2..299ce3b 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -1084,7 +1084,7 @@ _cairo_mime_data_destroy (void *ptr)
  *
  * The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1).
  *
- * @Since: 1.10
+ * Since: 1.10
  **/
 
 /**
@@ -1092,7 +1092,7 @@ _cairo_mime_data_destroy (void *ptr)
  *
  * The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1).
  *
- * @Since: 1.10
+ * Since: 1.10
  **/
 
 /**
@@ -1100,7 +1100,7 @@ _cairo_mime_data_destroy (void *ptr)
  *
  * The Portable Network Graphics image file format (ISO/IEC 15948).
  *
- * @Since: 1.10
+ * Since: 1.10
  **/
 
 /**
@@ -1108,7 +1108,7 @@ _cairo_mime_data_destroy (void *ptr)
  *
  * URI for an image file (unofficial MIME type).
  *
- * @Since: 1.10
+ * Since: 1.10
  **/
 
 /**
@@ -1116,7 +1116,7 @@ _cairo_mime_data_destroy (void *ptr)
  *
  * Unique identifier for a surface (cairo specific MIME type).
  *
- * @Since: 1.12
+ * Since: 1.12
  **/
 
 /**
diff --git a/src/cairo-user-font.c b/src/cairo-user-font.c
index bdac6e4..297f21c 100644
--- a/src/cairo-user-font.c
+++ b/src/cairo-user-font.c
@@ -59,7 +59,7 @@
  * The user font backend is always built in versions of cairo that support
  * this feature (1.8 and later).
  *
- * @Since: 1.8
+ * Since: 1.8
  **/
 
 typedef struct _cairo_user_scaled_font_methods {
diff --git a/src/cairo-version.c b/src/cairo-version.c
index 11f919d..6e13fa5 100644
--- a/src/cairo-version.c
+++ b/src/cairo-version.c
@@ -176,13 +176,13 @@
  * @major: the major component of the version number
  * @minor: the minor component of the version number
  * @micro: the micro component of the version number
- * 
+ *
  * This macro encodes the given cairo version into an integer.  The numbers
  * returned by %CAIRO_VERSION and cairo_version() 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.
  *
- * @Returns: the encoded version.
+ * Returns: the encoded version.
  **/
 
 /**
@@ -195,9 +195,9 @@
  * returned by %CAIRO_VERSION_STRING and cairo_version_string() are encoded using this macro.
  * The parameters to this macro must expand to numerical literals.
  *
- * @Returns: a string literal containing the version.
+ * Returns: a string literal containing the version.
  *
- * @Since: 1.8
+ * Since: 1.8
  **/
 
 /**
commit bbafcb3de8c01e2946e565f6ec7e31a3b325dbad
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Thu Feb 16 18:53:14 2012 +0100

    doc: Make the documentation name match the function name
    
    Fixes the 'symbol not found' errors caused by mismatches between the
    documentation name and the name in the code.

diff --git a/src/cairo-scaled-font-subsets-private.h b/src/cairo-scaled-font-subsets-private.h
index 2edf770..dd19962 100644
--- a/src/cairo-scaled-font-subsets-private.h
+++ b/src/cairo-scaled-font-subsets-private.h
@@ -225,7 +225,7 @@ typedef cairo_int_status_t
 					     void			*closure);
 
 /**
- * _cairo_scaled_font_subsets_foreach:
+ * _cairo_scaled_font_subsets_foreach_scaled:
  * @font_subsets: a #cairo_scaled_font_subsets_t
  * @font_subset_callback: a function to be called for each font subset
  * @closure: closure data for the callback function
@@ -439,7 +439,7 @@ typedef struct _cairo_truetype_subset {
 } cairo_truetype_subset_t;
 
 /**
- * _cairo_truetype_subset_init:
+ * _cairo_truetype_subset_init_ps:
  * @truetype_subset: a #cairo_truetype_subset_t to initialize
  * @font_subset: the #cairo_scaled_font_subset_t to initialize from
  *
@@ -460,7 +460,7 @@ _cairo_truetype_subset_init_ps (cairo_truetype_subset_t    *truetype_subset,
 				cairo_scaled_font_subset_t *font_subset);
 
 /**
- * _cairo_truetype_subset_init:
+ * _cairo_truetype_subset_init_pdf:
  * @truetype_subset: a #cairo_truetype_subset_t to initialize
  * @font_subset: the #cairo_scaled_font_subset_t to initialize from
  *
@@ -576,7 +576,7 @@ _cairo_type1_fallback_init_binary (cairo_type1_subset_t	      *type_subset,
                                    cairo_scaled_font_subset_t *font_subset);
 
 /**
- * _cairo_type1_fallback_init_hexencode:
+ * _cairo_type1_fallback_init_hex:
  * @type1_subset: a #cairo_type1_subset_t to initialize
  * @font_subset: the #cairo_scaled_font_subset_t to initialize from
  *
diff --git a/src/cairo-traps.c b/src/cairo-traps.c
index c776d33..48eaf98 100644
--- a/src/cairo-traps.c
+++ b/src/cairo-traps.c
@@ -159,7 +159,7 @@ _cairo_traps_add_trap (cairo_traps_t *traps,
 }
 
 /**
- * _cairo_traps_init_box:
+ * _cairo_traps_init_boxes:
  * @traps: a #cairo_traps_t
  * @box: an array box that will each be converted to a single trapezoid
  *       to store in @traps.
diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c
index e4a5626..74c085e 100644
--- a/src/cairo-xlib-display.c
+++ b/src/cairo-xlib-display.c
@@ -158,7 +158,7 @@ static void _cairo_xlib_display_select_compositor (cairo_xlib_display_t *display
 }
 
 /**
- * cairo_xlib_device_create:
+ * _cairo_xlib_device_create:
  * @dpy: the display to create the device for
  *
  * Gets the device belonging to @dpy, or creates it if it doesn't exist yet.
commit 7f635e4ead0c5bc689438a3c52742feba92c09ed
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Sat Mar 24 17:48:07 2012 +0100

    doc: Make doc ids more consistent my always putting ':' after them
    
    This makes the documentations comments more consistent and fixes many
    reports of 'invalid doc id'.

diff --git a/src/cairo-arc.c b/src/cairo-arc.c
index 6977e88..4113ef9 100644
--- a/src/cairo-arc.c
+++ b/src/cairo-arc.c
@@ -246,7 +246,7 @@ _cairo_arc_in_direction (cairo_t	  *cr,
 }
 
 /**
- * _cairo_arc_path
+ * _cairo_arc_path:
  * @cr: a cairo context
  * @xc: X position of the center of the arc
  * @yc: Y position of the center of the arc
diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
index a2ec371..d851f34 100644
--- a/src/cairo-gstate.c
+++ b/src/cairo-gstate.c
@@ -328,7 +328,7 @@ _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child)
 }
 
 /**
- * _cairo_gstate_is_group
+ * _cairo_gstate_is_group:
  * @gstate: a #cairo_gstate_t
  *
  * Check if _cairo_gstate_redirect_target has been called on the head
diff --git a/src/cairo-path-stroke.c b/src/cairo-path-stroke.c
index 2d32b91..d93be8f 100644
--- a/src/cairo-path-stroke.c
+++ b/src/cairo-path-stroke.c
@@ -180,7 +180,7 @@ _cairo_stroker_join_is_clockwise (const cairo_stroke_face_t *in,
 }
 
 /**
- * _cairo_slope_compare_sgn
+ * _cairo_slope_compare_sgn:
  *
  * Return -1, 0 or 1 depending on the relative slopes of
  * two lines.
diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
index c4e6d31..9f93e91 100644
--- a/src/cairo-pattern.c
+++ b/src/cairo-pattern.c
@@ -2582,7 +2582,7 @@ _cairo_radial_pattern_box_to_parameter (const cairo_radial_pattern_t *radial,
 }
 
 /**
- * _cairo_gradient_pattern_box_to_parameter
+ * _cairo_gradient_pattern_box_to_parameter:
  *
  * Compute a interpolation range sufficient to draw (within the given
  * tolerance) the gradient in the given box getting the same result as
@@ -2614,7 +2614,7 @@ _cairo_gradient_pattern_box_to_parameter (const cairo_gradient_pattern_t *gradie
 }
 
 /**
- * _cairo_gradient_pattern_interpolate
+ * _cairo_gradient_pattern_interpolate:
  *
  * Interpolate between the start and end objects of linear or radial
  * gradients.  The interpolated object is stored in out_circle, with
@@ -2647,7 +2647,7 @@ _cairo_gradient_pattern_interpolate (const cairo_gradient_pattern_t *gradient,
 
 
 /**
- * _cairo_gradient_pattern_fit_to_range
+ * _cairo_gradient_pattern_fit_to_range:
  *
  * Scale the extremes of a gradient to guarantee that the coordinates
  * and their deltas are within the range (-max_value, max_value). The
@@ -2886,7 +2886,7 @@ _gradient_color_average (const cairo_gradient_pattern_t *gradient,
 }
 
 /**
- * _cairo_pattern_alpha_range
+ * _cairo_pattern_alpha_range:
  *
  * Convenience function to determine the minimum and maximum alpha in
  * the drawn part of a pattern (i.e. ignoring clear parts caused by
@@ -2965,7 +2965,7 @@ _cairo_pattern_alpha_range (const cairo_pattern_t *pattern,
 }
 
 /**
- * _cairo_mesh_pattern_coord_box
+ * _cairo_mesh_pattern_coord_box:
  *
  * Convenience function to determine the range of the coordinates of
  * the points used to define the patches of the mesh.
@@ -3022,7 +3022,7 @@ _cairo_mesh_pattern_coord_box (const cairo_mesh_pattern_t *mesh,
 }
 
 /**
- * _cairo_gradient_pattern_is_solid
+ * _cairo_gradient_pattern_is_solid:
  *
  * Convenience function to determine whether a gradient pattern is
  * a solid color within the given extents. In this case the color
@@ -3105,7 +3105,7 @@ _mesh_is_clear (const cairo_mesh_pattern_t *mesh)
 }
 
 /**
- * _cairo_pattern_is_opaque_solid
+ * _cairo_pattern_is_opaque_solid:
  *
  * Convenience function to determine whether a pattern is an opaque
  * (alpha==1.0) solid color pattern. This is done by testing whether
@@ -3231,7 +3231,7 @@ _gradient_is_opaque (const cairo_gradient_pattern_t *gradient,
 }
 
 /**
- * _cairo_pattern_is_opaque
+ * _cairo_pattern_is_opaque:
  *
  * Convenience function to determine whether a pattern is an opaque
  * pattern (of any type). The same caveats that apply to
@@ -3940,7 +3940,7 @@ _cairo_pattern_equal (const cairo_pattern_t *a, const cairo_pattern_t *b)
 }
 
 /**
- * cairo_pattern_get_rgba
+ * cairo_pattern_get_rgba:
  * @pattern: a #cairo_pattern_t
  * @red: return value for red component of color, or %NULL
  * @green: return value for green component of color, or %NULL
@@ -3984,7 +3984,7 @@ cairo_pattern_get_rgba (cairo_pattern_t *pattern,
 }
 
 /**
- * cairo_pattern_get_surface
+ * cairo_pattern_get_surface:
  * @pattern: a #cairo_pattern_t
  * @surface: return value for surface of pattern, or %NULL
  * 
@@ -4017,7 +4017,7 @@ cairo_pattern_get_surface (cairo_pattern_t *pattern,
 }
 
 /**
- * cairo_pattern_get_color_stop_rgba
+ * cairo_pattern_get_color_stop_rgba:
  * @pattern: a #cairo_pattern_t
  * @index: index of the stop to return data for
  * @offset: return value for the offset of the stop, or %NULL
@@ -4070,7 +4070,7 @@ cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern,
 }
 
 /**
- * cairo_pattern_get_color_stop_count
+ * cairo_pattern_get_color_stop_count:
  * @pattern: a #cairo_pattern_t
  * @count: return value for the number of color stops, or %NULL
  *
@@ -4103,7 +4103,7 @@ cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern,
 }
 
 /**
- * cairo_pattern_get_linear_points
+ * cairo_pattern_get_linear_points:
  * @pattern: a #cairo_pattern_t
  * @x0: return value for the x coordinate of the first point, or %NULL
  * @y0: return value for the y coordinate of the first point, or %NULL
@@ -4144,7 +4144,7 @@ cairo_pattern_get_linear_points (cairo_pattern_t *pattern,
 }
 
 /**
- * cairo_pattern_get_radial_circles
+ * cairo_pattern_get_radial_circles:
  * @pattern: a #cairo_pattern_t
  * @x0: return value for the x coordinate of the center of the first circle, or %NULL
  * @y0: return value for the y coordinate of the center of the first circle, or %NULL
@@ -4192,7 +4192,7 @@ cairo_pattern_get_radial_circles (cairo_pattern_t *pattern,
 }
 
 /**
- * cairo_mesh_pattern_get_patch_count
+ * cairo_mesh_pattern_get_patch_count:
  * @pattern: a #cairo_pattern_t
  * @count: return value for the number patches, or %NULL
  *
@@ -4231,7 +4231,7 @@ cairo_mesh_pattern_get_patch_count (cairo_pattern_t *pattern,
 slim_hidden_def (cairo_mesh_pattern_get_patch_count);
 
 /**
- * cairo_mesh_pattern_get_path
+ * cairo_mesh_pattern_get_path:
  * @pattern: a #cairo_pattern_t
  * @patch_num: the patch number to return data for
  *
@@ -4319,7 +4319,7 @@ cairo_mesh_pattern_get_path (cairo_pattern_t *pattern,
 slim_hidden_def (cairo_mesh_pattern_get_path);
 
 /**
- * cairo_mesh_pattern_get_corner_color_rgba
+ * cairo_mesh_pattern_get_corner_color_rgba:
  * @pattern: a #cairo_pattern_t
  * @patch_num: the patch number to return data for
  * @corner_num: the corner number to return data for
@@ -4387,7 +4387,7 @@ cairo_mesh_pattern_get_corner_color_rgba (cairo_pattern_t *pattern,
 slim_hidden_def (cairo_mesh_pattern_get_corner_color_rgba);
 
 /**
- * cairo_mesh_pattern_get_control_point
+ * cairo_mesh_pattern_get_control_point:
  * @pattern: a #cairo_pattern_t
  * @patch_num: the patch number to return data for
  * @point_num: the control point number to return data for
diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c
index 0336972..f94b491 100644
--- a/src/cairo-quartz-font.c
+++ b/src/cairo-quartz-font.c
@@ -340,7 +340,7 @@ const cairo_font_face_backend_t _cairo_quartz_font_face_backend = {
 };
 
 /**
- * cairo_quartz_font_face_create_for_cgfont
+ * cairo_quartz_font_face_create_for_cgfont:
  * @font: a #CGFontRef obtained through a method external to cairo.
  *
  * Creates a new font for the Quartz font backend based on a
@@ -815,7 +815,7 @@ _cairo_quartz_scaled_font_get_cg_font_ref (cairo_scaled_font_t *abstract_font)
  */
 
 /**
- * cairo_quartz_font_face_create_for_atsu_font_id
+ * cairo_quartz_font_face_create_for_atsu_font_id:
  * @font_id: an ATSUFontID for the font.
  *
  * Creates a new font for the Quartz font backend based on an
diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
index 1141cd5..f806077 100644
--- a/src/cairo-quartz-surface.c
+++ b/src/cairo-quartz-surface.c
@@ -2289,7 +2289,7 @@ _cairo_quartz_surface_create_internal (CGContextRef cgContext,
 }
 
 /**
- * cairo_quartz_surface_create_for_cg_context
+ * cairo_quartz_surface_create_for_cg_context:
  * @cgContext: the existing CGContext for which to create the surface
  * @width: width of the surface, in pixels
  * @height: height of the surface, in pixels
@@ -2331,7 +2331,7 @@ cairo_quartz_surface_create_for_cg_context (CGContextRef cgContext,
 }
 
 /**
- * cairo_quartz_surface_create
+ * cairo_quartz_surface_create:
  * @format: format of pixels in the surface to create
  * @width: width of the surface, in pixels
  * @height: height of the surface, in pixels
@@ -2441,7 +2441,7 @@ cairo_quartz_surface_create (cairo_format_t format,
 }
 
 /**
- * cairo_quartz_surface_get_cg_context
+ * cairo_quartz_surface_get_cg_context:
  * @surface: the Cairo Quartz surface
  *
  * Returns the CGContextRef that the given Quartz surface is backed
diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c
index 4b42dab..2904c18 100644
--- a/src/cairo-recording-surface.c
+++ b/src/cairo-recording-surface.c
@@ -1089,7 +1089,7 @@ CLEANUP_COMPOSITE:
 }
 
 /**
- * _cairo_recording_surface_snapshot
+ * _cairo_recording_surface_snapshot:
  * @surface: a #cairo_surface_t which must be a recording surface
  *
  * Make an immutable copy of @surface. It is an error to call a
diff --git a/src/cairo-surface-snapshot.c b/src/cairo-surface-snapshot.c
index c197e71..a2f2a6c 100644
--- a/src/cairo-surface-snapshot.c
+++ b/src/cairo-surface-snapshot.c
@@ -177,7 +177,7 @@ done:
 }
 
 /**
- * _cairo_surface_snapshot
+ * _cairo_surface_snapshot:
  * @surface: a #cairo_surface_t
  *
  * Make an immutable reference to @surface. It is an error to call a
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index 066c30c..cbc44c2 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -2337,7 +2337,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t	    *surface,
 }
 
 /**
- * _cairo_surface_set_resolution
+ * _cairo_surface_set_resolution:
  * @surface: the surface
  * @x_res: x resolution, in dpi
  * @y_res: y resolution, in dpi
diff --git a/src/cairo.c b/src/cairo.c
index 08ecff3..1b3bc0e 100644
--- a/src/cairo.c
+++ b/src/cairo.c
@@ -635,7 +635,7 @@ cairo_set_opacity (cairo_t *cr, double opacity)
 #endif
 
 /**
- * cairo_set_source_rgb
+ * cairo_set_source_rgb:
  * @cr: a cairo context
  * @red: red component of color
  * @green: green component of color
@@ -746,7 +746,7 @@ cairo_set_source_surface (cairo_t	  *cr,
 slim_hidden_def (cairo_set_source_surface);
 
 /**
- * cairo_set_source
+ * cairo_set_source:
  * @cr: a cairo context
  * @source: a #cairo_pattern_t to be used as the source for
  * subsequent drawing operations.
@@ -2727,7 +2727,7 @@ cairo_set_font_size (cairo_t *cr, double size)
 slim_hidden_def (cairo_set_font_size);
 
 /**
- * cairo_set_font_matrix
+ * cairo_set_font_matrix:
  * @cr: a #cairo_t
  * @matrix: a #cairo_matrix_t describing a transform to be applied to
  * the current font.
@@ -2755,7 +2755,7 @@ cairo_set_font_matrix (cairo_t		    *cr,
 slim_hidden_def (cairo_set_font_matrix);
 
 /**
- * cairo_get_font_matrix
+ * cairo_get_font_matrix:
  * @cr: a #cairo_t
  * @matrix: return value for the matrix
  *
diff --git a/src/win32/cairo-win32-surface.c b/src/win32/cairo-win32-surface.c
index 0dcbbf8..ec2dd95 100644
--- a/src/win32/cairo-win32-surface.c
+++ b/src/win32/cairo-win32-surface.c
@@ -138,7 +138,7 @@ _cairo_win32_surface_get_extents (void		          *abstract_surface,
 }
 
 /**
- * cairo_win32_surface_get_dc
+ * cairo_win32_surface_get_dc:
  * @surface: a #cairo_surface_t
  *
  * Returns the HDC associated with this surface, or %NULL if none.
@@ -170,7 +170,7 @@ cairo_win32_surface_get_dc (cairo_surface_t *surface)
 }
 
 /**
- * cairo_win32_surface_get_image
+ * cairo_win32_surface_get_image:
  * @surface: a #cairo_surface_t
  *
  * Returns a #cairo_surface_t image surface that refers to the same bits
commit eaac0fa87e588c3e29c177baa016e754588ad6c2
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Fri Mar 23 11:57:38 2012 +0100

    doc: Manually fix remaining warnings about symmetry
    
    The Python script is unable to fix all of the warnings, because some
    point to comments that are not actually documentation.
    
    Fixes the remaining 'documentation comment not closed with **/'
    warnings.

diff --git a/src/cairo-gl-surface-legacy.c b/src/cairo-gl-surface-legacy.c
index 0ba356e..fe35e29 100644
--- a/src/cairo-gl-surface-legacy.c
+++ b/src/cairo-gl-surface-legacy.c
@@ -141,7 +141,7 @@ _cairo_gl_surface_clone_similar (void		     *abstract_surface,
     return UNSUPPORTED ("unknown src surface type in clone_similar");
 }
 
-/** Creates a cairo-gl pattern surface for the given trapezoids */
+/* Creates a cairo-gl pattern surface for the given trapezoids */
 static cairo_status_t
 _cairo_gl_get_traps_pattern (cairo_gl_surface_t *dst,
 			     int dst_x, int dst_y,
diff --git a/src/cairo-qt-surface.cpp b/src/cairo-qt-surface.cpp
index fbbe5a6..b75f522 100644
--- a/src/cairo-qt-surface.cpp
+++ b/src/cairo-qt-surface.cpp
@@ -313,7 +313,7 @@ _qmatrix_from_cairo_matrix (const cairo_matrix_t& m)
     return QMatrix(m.xx, m.yx, m.xy, m.yy, m.x0, m.y0);
 }
 
-/** Path conversion **/
+/* Path conversion */
 typedef struct _qpainter_path_transform {
     QPainterPath path;
     const cairo_matrix_t *ctm_inverse;
diff --git a/src/cairo-skia-surface.cpp b/src/cairo-skia-surface.cpp
index 537c1bc..21d6f07 100644
--- a/src/cairo-skia-surface.cpp
+++ b/src/cairo-skia-surface.cpp
@@ -1151,7 +1151,7 @@ cairo_skia_surface_get_image (cairo_surface_t *surface)
     return &_get_image_surface (esurf)->base;
 }
 
-/***
+/*
 
 Todo:
 
@@ -1171,4 +1171,4 @@ Medium:
 Low:
 - implement EXTEND_NONE
 
-***/
+*/
diff --git a/src/cairo-wideint.c b/src/cairo-wideint.c
index 59af2c8..bba266b 100644
--- a/src/cairo-wideint.c
+++ b/src/cairo-wideint.c
@@ -704,7 +704,8 @@ _cairo_int128_divrem (cairo_int128_t num, cairo_int128_t den)
  * bits then the returned remainder is equal to the divisor, and the
  * quotient is the largest representable 64 bit integer.  It is an
  * error to call this function with the high 32 bits of @num being
- * non-zero. */
+ * non-zero.
+ **/
 cairo_uquorem64_t
 _cairo_uint_96by64_32x64_divrem (cairo_uint128_t num,
 				 cairo_uint64_t den)
commit f717341ab9fec1f4a72fe18f5e712272c831d978
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Thu Feb 16 00:31:47 2012 +0100

    doc: Make documentation comments symmetric
    
    Documentation comments should always start with "/**" and end with
    "**/". This is not required by gtk-doc, but it makes the
    documentations formatting more consistent and simplifies the checking
    of documentation comments.
    
    The following Python script tries to enforce this.
    
    from sys import argv
    from sre import search
    
    for filename in argv[1:]:
        in_doc = False
        lines = open(filename, "r").read().split("\n")
        for i in range(len(lines)):
            ls = lines[i].strip()
            if ls == "/**":
                in_doc = True
            elif in_doc and ls == "*/":
                lines[i] = " **/"
            if ls.endswith("*/"):
                in_doc = False
    
        out = open(filename, "w")
        out.write("\n".join(lines))
        out.close()
    
    This fixes most 'documentation comment not closed with **/' warnings
    by check-doc-syntax.awk.

diff --git a/src/cairo-beos-surface.cpp b/src/cairo-beos-surface.cpp
index 2d96778..eb672b6 100644
--- a/src/cairo-beos-surface.cpp
+++ b/src/cairo-beos-surface.cpp
@@ -61,7 +61,7 @@
  *
  * The BeOS surface is used to render cairo graphics to BeOS views 
  * and bitmaps.
- */
+ **/
 
 #define CAIRO_INT_STATUS_SUCCESS (cairo_int_status_t)(CAIRO_STATUS_SUCCESS)
 
diff --git a/src/cairo-device.c b/src/cairo-device.c
index fd1ec71..098f856 100644
--- a/src/cairo-device.c
+++ b/src/cairo-device.c
@@ -92,7 +92,7 @@
  * interactions with existing surface API of the device functions for
  * surfaces of that type.
  * </para></note>
- */
+ **/
 
 static const cairo_device_t _nil_device = {
     CAIRO_REFERENCE_COUNT_INVALID,
diff --git a/src/cairo-font-face.c b/src/cairo-font-face.c
index e379b25..f429da0 100644
--- a/src/cairo-font-face.c
+++ b/src/cairo-font-face.c
@@ -56,7 +56,7 @@
  * or implicitly using the <firstterm>toy</firstterm> text API by way of
  * cairo_select_font_face().  The resulting face can be accessed using
  * cairo_get_font_face().
- */
+ **/
 
 /* #cairo_font_face_t */
 
diff --git a/src/cairo-font-options.c b/src/cairo-font-options.c
index 521d371..709c5f8 100644
--- a/src/cairo-font-options.c
+++ b/src/cairo-font-options.c
@@ -47,7 +47,7 @@
  * 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.
- */
+ **/
 
 static const cairo_font_options_t _cairo_font_options_nil = {
     CAIRO_ANTIALIAS_DEFAULT,
diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c
index 70e4a9e..69a701c 100644
--- a/src/cairo-ft-font.c
+++ b/src/cairo-ft-font.c
@@ -101,14 +101,14 @@
  *
  * The FreeType font backend is primarily used to render text on GNU/Linux
  * systems, but can be used on other platforms too.
- */
+ **/
 
 /**
  * CAIRO_HAS_FT_FONT:
  *
  * Defined if the FreeType font backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 /**
  * CAIRO_HAS_FC_FONT:
@@ -116,7 +116,7 @@
  * Defined if the Fontconfig-specific functions of the FreeType font backend
  * are available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 /*
  * The simple 2x2 matrix is converted into separate scale and shape
diff --git a/src/cairo-gl.h b/src/cairo-gl.h
index 407a224..dd17be6 100644
--- a/src/cairo-gl.h
+++ b/src/cairo-gl.h
@@ -55,7 +55,7 @@
  * call which interacts with a cairo-gl surface or the cairo-gl
  * device.  As a result, the user must make their own context current
  * between any cairo calls and their own OpenGL rendering.
- */
+ **/
 
 #ifndef CAIRO_GL_H
 #define CAIRO_GL_H
diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
index d232f9b..a2ec371 100644
--- a/src/cairo-gstate.c
+++ b/src/cairo-gstate.c
@@ -382,7 +382,7 @@ _cairo_gstate_get_original_target (cairo_gstate_t *gstate)
  * This space left intentionally blank.
  *
  * Return value: a pointer to the gstate's #cairo_clip_t structure.
- */
+ **/
 cairo_clip_t *
 _cairo_gstate_get_clip (cairo_gstate_t *gstate)
 {
diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index 2a2d59d..52f1af8 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -68,7 +68,7 @@
  * 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 #cairo_format_t.
- */
+ **/
 
 /**
  * CAIRO_HAS_IMAGE_SURFACE:
@@ -78,7 +78,7 @@
  * This macro was added for completeness in cairo 1.8.
  *
  * @Since: 1.8
- */
+ **/
 
 static cairo_bool_t
 _cairo_image_surface_is_size_valid (int width, int height)
diff --git a/src/cairo-malloc-private.h b/src/cairo-malloc-private.h
index 3414bb8..1e2c67f 100644
--- a/src/cairo-malloc-private.h
+++ b/src/cairo-malloc-private.h
@@ -57,7 +57,7 @@
  *
  * Return value: A pointer to the newly allocated memory, or %NULL in
  * case of malloc() failure or size is 0.
- */
+ **/
 
 #define _cairo_malloc(size) \
    ((size) ? malloc((unsigned) (size)) : NULL)
@@ -77,7 +77,7 @@
  *
  * Return value: A pointer to the newly allocated memory, or %NULL in
  * case of malloc() failure or overflow.
- */
+ **/
 
 #define _cairo_malloc_ab(a, size) \
   ((size) && (unsigned) (a) >= INT32_MAX / (unsigned) (size) ? NULL : \
@@ -99,7 +99,7 @@
  * Return value: A pointer to the newly allocated memory, or %NULL in
  * case of realloc() failure or overflow (whereupon the original block
  * of memory * is left untouched).
- */
+ **/
 
 #define _cairo_realloc_ab(ptr, a, size) \
   ((size) && (unsigned) (a) >= INT32_MAX / (unsigned) (size) ? NULL : \
@@ -120,7 +120,7 @@
  *
  * Return value: A pointer to the newly allocated memory, or %NULL in
  * case of malloc() failure or overflow.
- */
+ **/
 
 #define _cairo_malloc_abc(a, b, size) \
   ((b) && (unsigned) (a) >= INT32_MAX / (unsigned) (b) ? NULL : \
@@ -139,7 +139,7 @@
  *
  * Return value: A pointer to the newly allocated memory, or %NULL in
  * case of malloc() failure or overflow.
- */
+ **/
 
 #define _cairo_malloc_ab_plus_c(a, size, c) \
   ((size) && (unsigned) (a) >= INT32_MAX / (unsigned) (size) ? NULL : \
diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c
index 59f0b86..c3b9263 100644
--- a/src/cairo-matrix.c
+++ b/src/cairo-matrix.c
@@ -67,7 +67,7 @@
  * #cairo_matrix_t, defines the transformation from user-space
  * coordinates to device-space coordinates. See cairo_get_matrix() and
  * cairo_set_matrix().
- */
+ **/
 
 static void
 _cairo_matrix_scalar_multiply (cairo_matrix_t *matrix, double scalar);
diff --git a/src/cairo-misc.c b/src/cairo-misc.c
index 27c264b..60edaae 100644
--- a/src/cairo-misc.c
+++ b/src/cairo-misc.c
@@ -62,7 +62,7 @@ COMPILE_TIME_ASSERT (CAIRO_INT_STATUS_LAST_STATUS <= 127);
  * 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.
- */
+ **/
 
 /* Public stuff */
 
@@ -73,7 +73,7 @@ COMPILE_TIME_ASSERT (CAIRO_INT_STATUS_LAST_STATUS <= 127);
  * Provides a human-readable description of a #cairo_status_t.
  *
  * Returns: a string representation of the status
- */
+ **/
 const char *
 cairo_status_to_string (cairo_status_t status)
 {
@@ -180,7 +180,7 @@ cairo_status_to_string (cairo_status_t status)
  *          freed using cairo_glyph_free()
  *
  * Since: 1.8
- */
+ **/
 cairo_glyph_t *
 cairo_glyph_allocate (int num_glyphs)
 {
@@ -203,7 +203,7 @@ slim_hidden_def (cairo_glyph_allocate);
  * for glyphs.
  *
  * Since: 1.8
- */
+ **/
 void
 cairo_glyph_free (cairo_glyph_t *glyphs)
 {
@@ -230,7 +230,7 @@ slim_hidden_def (cairo_glyph_free);
  *          freed using cairo_text_cluster_free()
  *
  * Since: 1.8
- */
+ **/
 cairo_text_cluster_t *
 cairo_text_cluster_allocate (int num_clusters)
 {
@@ -253,7 +253,7 @@ slim_hidden_def (cairo_text_cluster_allocate);
  * for text clusters.
  *
  * Since: 1.8
- */
+ **/
 void
 cairo_text_cluster_free (cairo_text_cluster_t *clusters)
 {
@@ -281,7 +281,7 @@ slim_hidden_def (cairo_text_cluster_free);
  *               %CAIRO_STATUS_INVALID_CLUSTERS on error.
  *               The error is either invalid UTF-8 input,
  *               or bad cluster mapping.
- */
+ **/
 cairo_status_t
 _cairo_validate_text_clusters (const char		   *utf8,
 			       int			    utf8_len,
diff --git a/src/cairo-path-stroke.c b/src/cairo-path-stroke.c
index f25cfe4..2d32b91 100644
--- a/src/cairo-path-stroke.c
+++ b/src/cairo-path-stroke.c
@@ -184,7 +184,7 @@ _cairo_stroker_join_is_clockwise (const cairo_stroke_face_t *in,
  *
  * Return -1, 0 or 1 depending on the relative slopes of
  * two lines.
- */
+ **/
 static int
 _cairo_slope_compare_sgn (double dx1, double dy1, double dx2, double dy2)
 {
diff --git a/src/cairo-path.c b/src/cairo-path.c
index d3d9131..f2a02f1 100644
--- a/src/cairo-path.c
+++ b/src/cairo-path.c
@@ -48,7 +48,7 @@
  *
  * Paths are the most basic drawing tools and are primarily used to implicitly
  * generate simple masks.
- */
+ **/
 
 static const cairo_path_t _cairo_path_nil = { CAIRO_STATUS_NO_MEMORY, NULL, 0 };
 
diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
index 205dfe0..c4e6d31 100644
--- a/src/cairo-pattern.c
+++ b/src/cairo-pattern.c
@@ -59,7 +59,7 @@
  * or implicitly through
  * <function>cairo_set_source_<emphasis>type</emphasis>()</function>
  * functions.
- */
+ **/
 
 static freed_pool_t freed_pattern_pool[5];
 
@@ -1910,7 +1910,7 @@ cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern,
  * 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 %CAIRO_STATUS_PATTERN_TYPE_MISMATCH.
- */
+ **/
 void
 cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern,
 				   double	   offset,
@@ -3307,7 +3307,7 @@ _cairo_pattern_is_clear (const cairo_pattern_t *abstract_pattern)
  * XXX: We don't actually have any way of querying the backend for
  *      the filter radius, so we just guess base on what we know that
  *      backends do currently (see bug #10508)
- */
+ **/
 cairo_filter_t
 _cairo_pattern_analyze_filter (const cairo_pattern_t	*pattern,
 			       double			*pad_out)
@@ -4082,7 +4082,7 @@ cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern,
  * pattern.
  *
  * Since: 1.4
- */
+ **/
 cairo_status_t
 cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern,
 				    int *count)
@@ -4207,7 +4207,7 @@ cairo_pattern_get_radial_circles (cairo_pattern_t *pattern,
  * pattern.
  *
  * Since: 1.12
- */
+ **/
 cairo_status_t
 cairo_mesh_pattern_get_patch_count (cairo_pattern_t *pattern,
 				    unsigned int *count)
@@ -4247,7 +4247,7 @@ slim_hidden_def (cairo_mesh_pattern_get_patch_count);
  * status %CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned.
  *
  * Since: 1.12
- */
+ **/
 cairo_path_t *
 cairo_mesh_pattern_get_path (cairo_pattern_t *pattern,
 			     unsigned int patch_num)
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index b758d00..9658957 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -130,7 +130,7 @@
  *
  * The PDF surface is used to render cairo graphics to Adobe
  * PDF files and is a multi-page vector surface backend.
- */
+ **/
 
 static cairo_bool_t
 _cairo_pdf_surface_get_extents (void		        *abstract_surface,
@@ -141,7 +141,7 @@ _cairo_pdf_surface_get_extents (void		        *abstract_surface,
  *
  * Defined if the PDF surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 static const cairo_pdf_version_t _cairo_pdf_versions[] =
 {
@@ -461,7 +461,7 @@ BAIL0:
  * occurs. You can use cairo_surface_status() to check for this.
  *
  * Since: 1.2
- */
+ **/
 cairo_surface_t *
 cairo_pdf_surface_create_for_stream (cairo_write_func_t		 write_func,
 				     void			*closure,
@@ -1295,7 +1295,7 @@ _get_source_surface_size (cairo_surface_t         *source,
  *
  * Only one of @source_pattern or @source_surface is to be
  * specified. Set the other to NULL.
- */
+ **/
 static cairo_status_t
 _cairo_pdf_surface_add_source_surface (cairo_pdf_surface_t	    *surface,
 				       cairo_surface_t	            *source_surface,
diff --git a/src/cairo-pdf.h b/src/cairo-pdf.h
index 50460cc..1ddee3d 100644
--- a/src/cairo-pdf.h
+++ b/src/cairo-pdf.h
@@ -52,7 +52,7 @@ CAIRO_BEGIN_DECLS
  * specification that a generated PDF file will conform to.
  *
  * Since 1.10
- */
+ **/
 typedef enum _cairo_pdf_version {
     CAIRO_PDF_VERSION_1_4,
     CAIRO_PDF_VERSION_1_5
diff --git a/src/cairo-png.c b/src/cairo-png.c
index 59bbe68..b36c8df 100644
--- a/src/cairo-png.c
+++ b/src/cairo-png.c
@@ -62,7 +62,7 @@
  * cairo_image_surface_get_data() or a backend-specific access
  * function, and process it with another library, e.g. gdk-pixbuf or
  * libpng.
- */
+ **/
 
 /**
  * CAIRO_HAS_PNG_FUNCTIONS:
@@ -70,7 +70,7 @@
  * Defined if the PNG functions are available.
  * This macro can be used to conditionally compile code using the cairo
  * PNG functions.
- */
+ **/
 
 struct png_read_closure_t {
     cairo_read_func_t		 read_func;
diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c
index 88c4834..c881516 100644
--- a/src/cairo-ps-surface.c
+++ b/src/cairo-ps-surface.c
@@ -104,14 +104,14 @@
  *
  * The PostScript surface is used to render cairo graphics to Adobe
  * PostScript files and is a multi-page vector surface backend.
- */
+ **/
 
 /**
  * CAIRO_HAS_PS_SURFACE:
  * 
  * Defined if the PostScript surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 typedef enum {
     CAIRO_PS_COMPRESS_NONE,
@@ -1121,7 +1121,7 @@ cairo_ps_surface_create (const char		*filename,
  * occurs. You can use cairo_surface_status() to check for this.
  *
  * Since: 1.2
- */
+ **/
 cairo_surface_t *
 cairo_ps_surface_create_for_stream (cairo_write_func_t	write_func,
 				    void	       *closure,
diff --git a/src/cairo-ps.h b/src/cairo-ps.h
index fd1d21d..edd1e95 100644
--- a/src/cairo-ps.h
+++ b/src/cairo-ps.h
@@ -55,7 +55,7 @@ CAIRO_BEGIN_DECLS
  * #cairo_ps_level_t is used to describe the language level of the
  * PostScript Language Reference that a generated PostScript file will
  * conform to.
- */
+ **/
 typedef enum _cairo_ps_level {
     CAIRO_PS_LEVEL_2,
     CAIRO_PS_LEVEL_3
diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c
index 53d5c35..0336972 100644
--- a/src/cairo-quartz-font.c
+++ b/src/cairo-quartz-font.c
@@ -53,14 +53,14 @@
  * 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.
- */
+ **/
 
 /**
  * CAIRO_HAS_QUARTZ_FONT:
  *
  * Defined if the Quartz font backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 static CFDataRef (*CGFontCopyTableForTagPtr) (CGFontRef font, uint32_t tag) = NULL;
 
@@ -351,7 +351,7 @@ const cairo_font_face_backend_t _cairo_quartz_font_face_backend = {
  *  cairo_font_face_destroy() when you are done using it.
  *
  * Since: 1.6
- */
+ **/
 cairo_font_face_t *
 cairo_quartz_font_face_create_for_cgfont (CGFontRef font)
 {
diff --git a/src/cairo-quartz-image-surface.c b/src/cairo-quartz-image-surface.c
index 5adf521..763ce96 100644
--- a/src/cairo-quartz-image-surface.c
+++ b/src/cairo-quartz-image-surface.c
@@ -296,7 +296,7 @@ static const cairo_surface_backend_t cairo_quartz_image_surface_backend = {
  * Return value: the newly created surface.
  *
  * Since: 1.6
- */
+ **/
 cairo_surface_t *
 cairo_quartz_image_surface_create (cairo_surface_t *surface)
 {
diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c
index cdd5865..1141cd5 100644
--- a/src/cairo-quartz-surface.c
+++ b/src/cairo-quartz-surface.c
@@ -74,14 +74,14 @@
  *
  * The Quartz surface is used to render cairo graphics targeting the
  * Apple OS X Quartz rendering system.
- */
+ **/
 
 /**
  * CAIRO_HAS_QUARTZ_SURFACE:
  *
  * Defined if the Quartz surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050
 /* This method is private, but it exists.  Its params are are exposed
diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c
index ebe6f50..4b42dab 100644
--- a/src/cairo-recording-surface.c
+++ b/src/cairo-recording-surface.c
@@ -74,7 +74,7 @@
  * 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.
- */
+ **/
 
 #include "cairoint.h"
 
@@ -105,7 +105,7 @@ static const cairo_surface_backend_t cairo_recording_surface_backend;
  * This macro was added for completeness in cairo 1.10.
  *
  * Since: 1.10
- */
+ **/
 
 /* Currently all recording surfaces do have a size which should be passed
  * in as the maximum size of any target surface against which the
diff --git a/src/cairo-region.c b/src/cairo-region.c
index 9e03272..c3785eb 100644
--- a/src/cairo-region.c
+++ b/src/cairo-region.c
@@ -52,7 +52,7 @@
  * 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.
- */
+ **/
 
 static const cairo_region_t _cairo_region_nil = {
     CAIRO_REFERENCE_COUNT_INVALID,	/* ref_count */
@@ -848,7 +848,7 @@ slim_hidden_def (cairo_region_translate);
  *     partially outside the region.
  * 
  * Used as the return value for cairo_region_contains_rectangle().
- */
+ **/
 
 /**
  * cairo_region_contains_rectangle:
diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c
index b1c4b87..29cea06 100644
--- a/src/cairo-scaled-font.c
+++ b/src/cairo-scaled-font.c
@@ -59,7 +59,7 @@
  *
  * #cairo_scaled_font_t represents a realization of a font face at a particular
  * size and transformation and a certain set of font options.
- */
+ **/
 
 static uint32_t
 _cairo_scaled_font_compute_hash (cairo_scaled_font_t *scaled_font);
diff --git a/src/cairo-script-surface.c b/src/cairo-script-surface.c
index f235be9..e307c1b 100644
--- a/src/cairo-script-surface.c
+++ b/src/cairo-script-surface.c
@@ -52,7 +52,7 @@
  * script that matches the cairo drawing model. The scripts can
  * be replayed using tools under the util/cairo-script directoriy,
  * or with cairo-perf-trace.
- */
+ **/
 
 /**
  * CAIRO_HAS_SCRIPT_SURFACE:
@@ -61,7 +61,7 @@
  * The script surface backend is always built in since 1.12.
  *
  * @Since: 1.10
- */
+ **/
 
 
 #include "cairoint.h"
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index 237a17c..066c30c 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -93,7 +93,7 @@
  * Note that for other surface types it might be necessary to acquire the
  * surface's device first. See cairo_device_acquire() for a discussion of
  * devices.
- */
+ **/
 
 #define DEFINE_NIL_SURFACE(status, name)			\
 const cairo_surface_t name = {					\
@@ -1085,7 +1085,7 @@ _cairo_mime_data_destroy (void *ptr)
  * The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1).
  *
  * @Since: 1.10
- */
+ **/
 
 /**
  * CAIRO_MIME_TYPE_JPEG:
@@ -1093,7 +1093,7 @@ _cairo_mime_data_destroy (void *ptr)
  * The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1).
  *
  * @Since: 1.10
- */
+ **/
 
 /**
  * CAIRO_MIME_TYPE_PNG:
@@ -1101,7 +1101,7 @@ _cairo_mime_data_destroy (void *ptr)
  * The Portable Network Graphics image file format (ISO/IEC 15948).
  *
  * @Since: 1.10
- */
+ **/
 
 /**
  * CAIRO_MIME_TYPE_URI:
@@ -1109,7 +1109,7 @@ _cairo_mime_data_destroy (void *ptr)
  * URI for an image file (unofficial MIME type).
  *
  * @Since: 1.10
- */
+ **/
 
 /**
  * CAIRO_MIME_TYPE_UNIQUE_ID:
@@ -1117,7 +1117,7 @@ _cairo_mime_data_destroy (void *ptr)
  * Unique identifier for a surface (cairo specific MIME type).
  *
  * @Since: 1.12
- */
+ **/
 
 /**
  * cairo_surface_set_mime_data:
@@ -1380,7 +1380,7 @@ slim_hidden_def (cairo_surface_flush);
  * 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 cairo_surface_flush() before doing such drawing.
- */
+ **/
 void
 cairo_surface_mark_dirty (cairo_surface_t *surface)
 {
@@ -1403,7 +1403,7 @@ slim_hidden_def (cairo_surface_mark_dirty);
  * 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.
- */
+ **/
 void
 cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface,
 				    int              x,
@@ -2069,7 +2069,7 @@ _cairo_surface_fill (cairo_surface_t		*surface,
  * namely cairo_copy_page().
  *
  * Since: 1.6
- */
+ **/
 void
 cairo_surface_copy_page (cairo_surface_t *surface)
 {
@@ -2147,7 +2147,7 @@ slim_hidden_def (cairo_surface_show_page);
  *
  * This behavior would have to be changed is we ever exported a public
  * variant of this function.
- */
+ **/
 cairo_bool_t
 _cairo_surface_get_extents (cairo_surface_t         *surface,
 			    cairo_rectangle_int_t   *extents)
@@ -2345,7 +2345,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t	    *surface,
  * Set the actual surface resolution of @surface to the given x and y DPI.
  * Mainly used for correctly computing the scale factor when fallback
  * rendering needs to take place in the paginated surface.
- */
+ **/
 void
 _cairo_surface_set_resolution (cairo_surface_t *surface,
 			       double x_res,
diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c
index 7f87c93..950cb1f 100644
--- a/src/cairo-svg-surface.c
+++ b/src/cairo-svg-surface.c
@@ -66,14 +66,14 @@
  *
  * The SVG surface is used to render cairo graphics to
  * SVG files and is a multi-page vector surface backend.
- */
+ **/
 
 /**
  * CAIRO_HAS_SVG_SURFACE:
  *
  * Defined if the SVG surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 typedef struct cairo_svg_page cairo_svg_page_t;
 
@@ -205,7 +205,7 @@ static const cairo_paginated_surface_backend_t cairo_svg_surface_paginated_backe
  * occurs. You can use cairo_surface_status() to check for this.
  *
  * Since: 1.2
- */
+ **/
 cairo_surface_t *
 cairo_svg_surface_create_for_stream (cairo_write_func_t		 write_func,
 				     void			*closure,
diff --git a/src/cairo-svg.h b/src/cairo-svg.h
index 0f739fc..18fef32 100644
--- a/src/cairo-svg.h
+++ b/src/cairo-svg.h
@@ -45,7 +45,7 @@ CAIRO_BEGIN_DECLS
  *
  * #cairo_svg_version_t is used to describe the version number of the SVG
  * specification that a generated SVG file will conform to.
- */
+ **/
 typedef enum _cairo_svg_version {
     CAIRO_SVG_VERSION_1_1,
     CAIRO_SVG_VERSION_1_2
diff --git a/src/cairo-types-private.h b/src/cairo-types-private.h
index 7fcdd1d..3c2d21a 100644
--- a/src/cairo-types-private.h
+++ b/src/cairo-types-private.h
@@ -52,7 +52,7 @@ CAIRO_BEGIN_DECLS
  * @Short_Description: Generic data types
  *
  * This section lists generic data types used in the cairo API.
- */
+ **/
 
 typedef struct _cairo_array cairo_array_t;
 typedef struct _cairo_backend cairo_backend_t;
diff --git a/src/cairo-user-font.c b/src/cairo-user-font.c
index 1b507fc..bdac6e4 100644
--- a/src/cairo-user-font.c
+++ b/src/cairo-user-font.c
@@ -49,7 +49,7 @@
  * 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.
- */
+ **/
 
 /**
  * CAIRO_HAS_USER_FONT:
@@ -60,7 +60,7 @@
  * this feature (1.8 and later).
  *
  * @Since: 1.8
- */
+ **/
 
 typedef struct _cairo_user_scaled_font_methods {
     cairo_user_scaled_font_init_func_t			init;
diff --git a/src/cairo-version.c b/src/cairo-version.c
index bc7fe10..11f919d 100644
--- a/src/cairo-version.c
+++ b/src/cairo-version.c
@@ -137,39 +137,39 @@
  * </programlisting></informalexample>
  * </para>
  * </refsect2>
- */
+ **/
 
 /**
  * CAIRO_VERSION:
  *
  * The version of cairo available at compile-time, encoded using
  * CAIRO_VERSION_ENCODE().
- */
+ **/
 
 /**
  * CAIRO_VERSION_MAJOR:
  *
  * The major component of the version of cairo available at compile-time.
- */
+ **/
 
 /**
  * CAIRO_VERSION_MINOR:
  *
  * The minor component of the version of cairo available at compile-time.
- */
+ **/
 
 /**
  * CAIRO_VERSION_MICRO:
  *
  * The micro component of the version of cairo available at compile-time.
- */
+ **/
 
 /**
  * CAIRO_VERSION_STRING:
  *
  * A human-readable string literal containing the version of cairo available
  * at compile-time, in the form of "X.Y.Z".
- */
+ **/
 
 /**
  * CAIRO_VERSION_ENCODE:
@@ -183,7 +183,7 @@
  * that later versions compare greater than earlier versions.
  *
  * @Returns: the encoded version.
- */
+ **/
 
 /**
  * CAIRO_VERSION_STRINGIZE:
@@ -198,7 +198,7 @@
  * @Returns: a string literal containing the version.
  *
  * @Since: 1.8
- */
+ **/
 
 /**
  * cairo_version:
diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c
index 13d92f7..b1f6ec8 100644
--- a/src/cairo-xcb-surface-render.c
+++ b/src/cairo-xcb-surface-render.c
@@ -58,7 +58,7 @@
  *
  * Note that the XCB surface automatically takes advantage of the X Render
  * extension if it is available.
- */
+ **/
 
 static cairo_status_t
 _clip_and_composite_boxes (cairo_xcb_surface_t *dst,
diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c
index b254e2f..fff4f52 100644
--- a/src/cairo-xcb-surface.c
+++ b/src/cairo-xcb-surface.c
@@ -65,7 +65,7 @@ slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format);
  *
  * Note that the XCB surface automatically takes advantage of the X render
  * extension if it is available.
- */
+ **/
 
 /**
  * CAIRO_HAS_XCB_SURFACE:
@@ -74,7 +74,7 @@ slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format);
  * This macro can be used to conditionally compile backend-specific code.
  *
  * Since: 1.12
- */
+ **/
 
 cairo_surface_t *
 _cairo_xcb_surface_create_similar (void			*abstract_other,
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index 4664c96..0d47311 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -125,14 +125,14 @@ _x_bread_crumb (Display *dpy,
  *
  * Note that the XLib surface automatically takes advantage of X render extension
  * if it is available.
- */
+ **/
 
 /**
  * CAIRO_HAS_XLIB_SURFACE:
  *
  * Defined if the Xlib surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 /**
  * SECTION:cairo-xlib-xrender
@@ -145,14 +145,14 @@ _x_bread_crumb (Display *dpy,
  *
  * Note that the XLib surface automatically takes advantage of X Render extension
  * if it is available.
- */
+ **/
 
 /**
  * CAIRO_HAS_XLIB_XRENDER_SURFACE:
  *
  * Defined if the XLib/XRender surface functions are available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 /* Xlib doesn't define a typedef, so define one ourselves */
 typedef int (*cairo_xlib_error_func_t) (Display     *display,
diff --git a/src/cairo.c b/src/cairo.c
index 002d199..08ecff3 100644
--- a/src/cairo.c
+++ b/src/cairo.c
@@ -65,7 +65,7 @@
  * #cairo_t<!-- -->'s can be pushed to a stack via cairo_save().
  * They may then safely be changed, without losing the current state.
  * Use cairo_restore() to restore to the saved state.
- */
+ **/
 
 /**
  * SECTION:cairo-text
@@ -92,7 +92,7 @@
  * 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>.
- */
+ **/
 
 /**
  * SECTION:cairo-transforms
@@ -105,7 +105,7 @@
  * drawing instruments from the <firstterm>user space</firstterm> into the
  * surface's canonical coordinate system, also known as the <firstterm>device
  * space</firstterm>.
- */
+ **/
 
 #define DEFINE_NIL_CONTEXT(status)					\
     {									\
@@ -468,7 +468,7 @@ slim_hidden_def(cairo_restore);
  * </programlisting></informalexample>
  *
  * Since: 1.2
- */
+ **/
 void
 cairo_push_group (cairo_t *cr)
 {
@@ -493,7 +493,7 @@ cairo_push_group (cairo_t *cr)
  * detailed description of group rendering.
  *
  * Since: 1.2
- */
+ **/
 void
 cairo_push_group_with_content (cairo_t *cr, cairo_content_t content)
 {
@@ -1052,7 +1052,7 @@ cairo_set_dash (cairo_t	     *cr,
  * Return value: the length of the dash array, or 0 if no dash array set.
  *
  * Since: 1.4
- */
+ **/
 int
 cairo_get_dash_count (cairo_t *cr)
 {
@@ -1951,7 +1951,7 @@ cairo_paint_with_alpha (cairo_t *cr,
  * using the alpha channel of @pattern as a mask. (Opaque
  * areas of @pattern are painted with the source, transparent
  * areas are not painted.)
- */
+ **/
 void
 cairo_mask (cairo_t         *cr,
 	    cairo_pattern_t *pattern)
@@ -1988,7 +1988,7 @@ slim_hidden_def (cairo_mask);
  * using the alpha channel of @surface as a mask. (Opaque
  * areas of @surface are painted with the source, transparent
  * areas are not painted.)
- */
+ **/
 void
 cairo_mask_surface (cairo_t         *cr,
 		    cairo_surface_t *surface,
diff --git a/src/cairo.h b/src/cairo.h
index 37fdf0c..5a4d6b1 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -2824,7 +2824,7 @@ cairo_pattern_get_extend (cairo_pattern_t *pattern);
  * applied when reading pixel values from patterns. See
  * cairo_pattern_set_filter() for indicating the desired filter to be
  * used with a particular pattern.
- */
+ **/
 typedef enum _cairo_filter {
     CAIRO_FILTER_FAST,
     CAIRO_FILTER_GOOD,
diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c
index a44b878..f393cbe 100644
--- a/src/win32/cairo-win32-display-surface.c
+++ b/src/win32/cairo-win32-display-surface.c
@@ -86,14 +86,14 @@
  *
  * The surface returned by the other win32 constructors is of surface type
  * %CAIRO_SURFACE_TYPE_WIN32 and is a raster surface type.
- */
+ **/
 
 /**
  * CAIRO_HAS_WIN32_SURFACE:
  *
  * Defined if the Microsoft Windows surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 static const cairo_surface_backend_t cairo_win32_display_surface_backend;
 
diff --git a/src/win32/cairo-win32-font.c b/src/win32/cairo-win32-font.c
index d85d5c9..8ad4832 100644
--- a/src/win32/cairo-win32-font.c
+++ b/src/win32/cairo-win32-font.c
@@ -77,14 +77,14 @@
  *
  * The Microsoft Windows font backend is primarily used to render text on
  * Microsoft Windows systems.
- */
+ **/
 
 /**
  * CAIRO_HAS_WIN32_FONT:
  *
  * Defined if the Microsoft Windows font backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 const cairo_scaled_font_backend_t _cairo_win32_scaled_font_backend;
 
diff --git a/src/win32/cairo-win32-surface.c b/src/win32/cairo-win32-surface.c
index cec47a2..0dcbbf8 100644
--- a/src/win32/cairo-win32-surface.c
+++ b/src/win32/cairo-win32-surface.c
@@ -80,14 +80,14 @@
  *
  * The surface returned by the other win32 constructors is of surface type
  * %CAIRO_SURFACE_TYPE_WIN32 and is a raster surface type.
- */
+ **/
 
 /**
  * CAIRO_HAS_WIN32_SURFACE:
  *
  * Defined if the Microsoft Windows surface backend is available.
  * This macro can be used to conditionally compile backend-specific code.
- */
+ **/
 
 /**
  * _cairo_win32_print_gdi_error:
@@ -181,7 +181,7 @@ cairo_win32_surface_get_dc (cairo_surface_t *surface)
  * or %NULL if the win32 surface is not a DIB.
  *
  * Since: 1.4
- */
+ **/
 cairo_surface_t *
 cairo_win32_surface_get_image (cairo_surface_t *surface)
 {
commit c0fc24c889b09b734383c9250a3663d83510479e
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Sat Mar 24 17:53:23 2012 +0100

    doc: Make informational comments syntactically different from docs
    
    This avoids confusion with the documentation comments and fixes some
    malformed docs reports.

diff --git a/src/cairo-qt-surface.cpp b/src/cairo-qt-surface.cpp
index 2e15f47..fbbe5a6 100644
--- a/src/cairo-qt-surface.cpp
+++ b/src/cairo-qt-surface.cpp
@@ -136,9 +136,9 @@ struct cairo_qt_surface_t {
  */
 static cairo_bool_t _qpixmaps_have_no_alpha = FALSE;
 
-/**
- ** Helper methods
- **/
+/*
+ * Helper methods
+ */
 
 static QPainter::CompositionMode
 _qpainter_compositionmode_from_cairo_op (cairo_operator_t op)
@@ -418,9 +418,9 @@ path_to_qt (const cairo_path_fixed_t *path,
     return qpath;
 }
 
-/**
- ** Surface backend methods
- **/
+/*
+ * Surface backend methods
+ */
 static cairo_surface_t *
 _cairo_qt_surface_create_similar (void *abstract_surface,
 				  cairo_content_t content,
@@ -775,9 +775,9 @@ _cairo_qt_surface_set_clip (cairo_qt_surface_t *qs,
     return status;
 }
 
-/**
- ** Brush conversion
- **/
+/*
+ * Brush conversion
+ */
 
 struct PatternToBrushConverter {
     PatternToBrushConverter (const cairo_pattern_t *pattern) :
@@ -1082,9 +1082,9 @@ struct PatternToPenConverter {
     PatternToBrushConverter mBrushConverter;
 };
 
-/**
- ** Core drawing operations
- **/
+/*
+ * Core drawing operations
+ */
 
 static bool
 _cairo_qt_fast_fill (cairo_qt_surface_t *qs,
@@ -1422,9 +1422,9 @@ _cairo_qt_surface_mark_dirty (void *abstract_surface,
     return CAIRO_STATUS_SUCCESS;
 }
 
-/**
- ** Backend struct
- **/
+/*
+ * Backend struct
+ */
 
 static const cairo_surface_backend_t cairo_qt_surface_backend = {
     CAIRO_SURFACE_TYPE_QT,
commit 71123cffe0d10c71d1c7069a125024609ba60f1d
Author: Andrea Canciani <ranma42 at gmail.com>
Date:   Fri Mar 23 11:45:15 2012 +0100

    doc: Add script to enforce stricter validation of documentation comments

diff --git a/src/Makefile.am b/src/Makefile.am
index ef01abb..acf0a82 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -89,7 +89,7 @@ TESTS_ENVIRONMENT = \
 	$(NULL)
 TESTS_SH = \
 	check-def.sh \
-	check-doc-syntax.sh\
+	check-doc-syntax.sh \
 	check-headers.sh \
 	check-plt.sh \
 	check-preprocessor-syntax.sh \
@@ -100,7 +100,7 @@ else
 TESTS += check-link$(EXEEXT)
 endif
 
-EXTRA_DIST += $(TESTS_SH) check-has-hidden-symbols.c
+EXTRA_DIST += $(TESTS_SH) check-has-hidden-symbols.c check-doc-syntax.awk
 check_PROGRAMS += check-link
 check_link_LDADD = libcairo.la
 
diff --git a/src/check-doc-syntax.awk b/src/check-doc-syntax.awk
new file mode 100755
index 0000000..d4325ce
--- /dev/null
+++ b/src/check-doc-syntax.awk
@@ -0,0 +1,105 @@
+#!/usr/bin/awk -f
+
+BEGIN {
+    name_found = 1
+    SECTION_DOC = 0
+    PUBLIC_DOC = 1
+    PRIVATE_DOC = 2
+}
+
+function log_msg(severity, msg)
+{
+    printf "%s (%d): %s: %s %s\n", FILENAME, FNR, severity, doc_name, msg
+}
+
+function log_error(msg)
+{
+    log_msg("ERROR", msg)
+}
+
+function log_warning(msg)
+{
+    log_msg("WARNING", msg)
+}
+
+/^\/\*\*$/ {
+    in_doc = 1
+    doc_line = 0
+}
+
+/^(\/\*\*$| \*[ \t]| \*$| \*\*\/$)/ {
+    valid_doc = 1
+}
+
+in_doc {
+    if (!valid_doc)
+	log_error("bad line: '" $0 "'")
+    valid_doc = 0
+
+    doc_line++
+    if (doc_line == 2) {
+	# new doc name. Did we find the previous one?
+	# (macros are not expected to be found in the same place as
+	# their documentation)
+	if (!name_found && doc_name !~ /CAIRO_/)
+	    log_warning("not found")
+	doc_name = $2
+	if (doc_name ~ /^SECTION:.*$/) {
+	    doc_type = SECTION_DOC
+	    name_found = 1
+	} else if (tolower(doc_name) ~ /^cairo_[a-z0-9_]*:$/) {
+	    doc_type = PUBLIC_DOC
+	    name_found = 0
+	    real_name = substr(doc_name, 1, length(doc_name) - 1)
+	} else if (tolower(doc_name) ~ /^_[a-z0-9_]*:$/) {
+	    doc_type = PRIVATE_DOC
+	    name_found = 0
+	    real_name = substr(doc_name, 1, length(doc_name) - 1)
+	} else {
+	    log_error("invalid doc id (should be 'cairo_...:')")
+	    name_found = 1
+	}
+    }
+}
+
+!in_doc {
+    regex = "(^|[ \\t\\*])" real_name "([ ;()]|$)"
+    if ($0 ~ regex)
+	name_found = 1
+}
+
+/^ \* Since: ([0-9]*.[0-9]*|TBD)$/ {
+    doc_has_since = doc_line
+}
+
+/^ \*\*\// {
+    if (doc_type == PUBLIC_DOC) {
+	if (!doc_has_since) {
+	    # private types can start with cairo_
+	    if (doc_name ~ /^cairo_.*_t:$/)
+		log_warning("missing 'Since' field (is it a private type?)")
+	    else
+		log_error("missing 'Since' field")
+	} else if (doc_has_since != doc_line - 1)
+	    log_warning("misplaced 'Since' field (should be right before the end of the comment)")
+    } else {
+	if (doc_has_since)
+	    log_warning("'Since' field in non-public element")
+    }
+
+    in_doc = 0
+    doc_has_since = 0
+    doc_type = 0
+}
+
+/\*\// {
+    if (in_doc) {
+	in_doc = 0
+ 	log_error("documentation comment not closed with **/")
+    }
+}
+
+END {
+    if (!name_found)
+	log_warning("not found")
+}
\ No newline at end of file
diff --git a/src/check-doc-syntax.sh b/src/check-doc-syntax.sh
index 8390e5e..570b9d9 100755
--- a/src/check-doc-syntax.sh
+++ b/src/check-doc-syntax.sh
@@ -70,4 +70,8 @@ if echo $FILES | xargs grep "$note_regexp" /dev/null; then
 	echo Be civil and replace it by 'Note' please.
 fi >&2
 
+if echo $FILES | xargs ./check-doc-syntax.awk ; then
+	stat=1
+fi >&2
+
 exit $stat


More information about the cairo-commit mailing list