<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gtk" version="3.0"/>
  <namespace name="GooCanvas"
             version="2.0"
             shared-library="libgoocanvas-2.0.so.0.0"
             c:identifier-prefixes="Goo"
             c:symbol-prefixes="goo">
    <constant name="CANVAS_POLYLINE_NUM_ARROW_POINTS"
              value="5"
              c:type="GOO_CANVAS_POLYLINE_NUM_ARROW_POINTS">
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="CairoAntialias"
                 glib:type-name="GooCairoAntialias"
                 glib:get-type="goo_cairo_antialias_get_type"
                 c:type="GooCairoAntialias">
      <doc xml:space="preserve">#GooCairoAntialias is simply a wrapper for the #cairo_antialias_t type,
allowing it to be used for #GObject properties.

See the #cairo_antialias_t documentation.</doc>
      <member name="default"
              value="0"
              c:identifier="CAIRO_ANTIALIAS_DEFAULT"
              glib:nick="default">
      </member>
      <member name="none"
              value="1"
              c:identifier="CAIRO_ANTIALIAS_NONE"
              glib:nick="none">
      </member>
      <member name="gray"
              value="2"
              c:identifier="CAIRO_ANTIALIAS_GRAY"
              glib:nick="gray">
      </member>
      <member name="subpixel"
              value="3"
              c:identifier="CAIRO_ANTIALIAS_SUBPIXEL"
              glib:nick="subpixel">
      </member>
    </enumeration>
    <enumeration name="CairoFillRule"
                 glib:type-name="GooCairoFillRule"
                 glib:get-type="goo_cairo_fill_rule_get_type"
                 c:type="GooCairoFillRule">
      <doc xml:space="preserve">#GooCairoFillRule is simply a wrapper for the #cairo_fill_rule_t type,
allowing it to be used for #GObject properties.

See the #cairo_fill_rule_t documentation.</doc>
      <member name="winding"
              value="0"
              c:identifier="CAIRO_FILL_RULE_WINDING"
              glib:nick="winding">
      </member>
      <member name="even_odd"
              value="1"
              c:identifier="CAIRO_FILL_RULE_EVEN_ODD"
              glib:nick="even-odd">
      </member>
    </enumeration>
    <enumeration name="CairoHintMetrics"
                 glib:type-name="GooCairoHintMetrics"
                 glib:get-type="goo_cairo_hint_metrics_get_type"
                 c:type="GooCairoHintMetrics">
      <doc xml:space="preserve">#GooCairoHintMetrics is simply a wrapper for the #cairo_hint_metrics_t type,
allowing it to be used for #GObject properties.

See the #cairo_hint_metrics_t documentation.</doc>
      <member name="default"
              value="0"
              c:identifier="CAIRO_HINT_METRICS_DEFAULT"
              glib:nick="default">
      </member>
      <member name="off"
              value="1"
              c:identifier="CAIRO_HINT_METRICS_OFF"
              glib:nick="off">
      </member>
      <member name="on"
              value="2"
              c:identifier="CAIRO_HINT_METRICS_ON"
              glib:nick="on">
      </member>
    </enumeration>
    <enumeration name="CairoLineCap"
                 glib:type-name="GooCairoLineCap"
                 glib:get-type="goo_cairo_line_cap_get_type"
                 c:type="GooCairoLineCap">
      <doc xml:space="preserve">#GooCairoLineCap is simply a wrapper for the #cairo_line_cap_t type,
allowing it to be used for #GObject properties.

See the #cairo_line_cap_t documentation.</doc>
      <member name="butt"
              value="0"
              c:identifier="CAIRO_LINE_CAP_BUTT"
              glib:nick="butt">
      </member>
      <member name="round"
              value="1"
              c:identifier="CAIRO_LINE_CAP_ROUND"
              glib:nick="round">
      </member>
      <member name="square"
              value="2"
              c:identifier="CAIRO_LINE_CAP_SQUARE"
              glib:nick="square">
      </member>
    </enumeration>
    <enumeration name="CairoLineJoin"
                 glib:type-name="GooCairoLineJoin"
                 glib:get-type="goo_cairo_line_join_get_type"
                 c:type="GooCairoLineJoin">
      <doc xml:space="preserve">#GooCairoLineJoin is simply a wrapper for the #cairo_line_join_t type,
allowing it to be used for #GObject properties.

See the #cairo_line_join_t documentation.</doc>
      <member name="miter"
              value="0"
              c:identifier="CAIRO_LINE_JOIN_MITER"
              glib:nick="miter">
      </member>
      <member name="round"
              value="1"
              c:identifier="CAIRO_LINE_JOIN_ROUND"
              glib:nick="round">
      </member>
      <member name="bevel"
              value="2"
              c:identifier="CAIRO_LINE_JOIN_BEVEL"
              glib:nick="bevel">
      </member>
    </enumeration>
    <glib:boxed glib:name="CairoMatrix"
                c:symbol-prefix="cairo_matrix"
                glib:type-name="GooCairoMatrix"
                glib:get-type="goo_cairo_matrix_get_type">
      <function name="copy" c:identifier="goo_cairo_matrix_copy">
        <return-value transfer-ownership="full">
          <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
        </return-value>
        <parameters>
          <parameter name="matrix" transfer-ownership="none">
            <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </function>
      <function name="free" c:identifier="goo_cairo_matrix_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="matrix" transfer-ownership="none">
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </function>
    </glib:boxed>
    <enumeration name="CairoOperator"
                 glib:type-name="GooCairoOperator"
                 glib:get-type="goo_cairo_operator_get_type"
                 c:type="GooCairoOperator">
      <doc xml:space="preserve">#GooCairoOperator is simply a wrapper for the #cairo_operator_t type,
allowing it to be used for #GObject properties.

See the #cairo_operator_t documentation.</doc>
      <member name="clear"
              value="0"
              c:identifier="CAIRO_OPERATOR_CLEAR"
              glib:nick="clear">
      </member>
      <member name="source"
              value="1"
              c:identifier="CAIRO_OPERATOR_SOURCE"
              glib:nick="source">
      </member>
      <member name="over"
              value="2"
              c:identifier="CAIRO_OPERATOR_OVER"
              glib:nick="over">
      </member>
      <member name="in"
              value="3"
              c:identifier="CAIRO_OPERATOR_IN"
              glib:nick="in">
      </member>
      <member name="out"
              value="4"
              c:identifier="CAIRO_OPERATOR_OUT"
              glib:nick="out">
      </member>
      <member name="atop"
              value="5"
              c:identifier="CAIRO_OPERATOR_ATOP"
              glib:nick="atop">
      </member>
      <member name="dest"
              value="6"
              c:identifier="CAIRO_OPERATOR_DEST"
              glib:nick="dest">
      </member>
      <member name="dest_over"
              value="7"
              c:identifier="CAIRO_OPERATOR_DEST_OVER"
              glib:nick="dest-over">
      </member>
      <member name="dest_in"
              value="8"
              c:identifier="CAIRO_OPERATOR_DEST_IN"
              glib:nick="dest-in">
      </member>
      <member name="dest_out"
              value="9"
              c:identifier="CAIRO_OPERATOR_DEST_OUT"
              glib:nick="dest-out">
      </member>
      <member name="dest_atop"
              value="10"
              c:identifier="CAIRO_OPERATOR_DEST_ATOP"
              glib:nick="dest-atop">
      </member>
      <member name="xor"
              value="11"
              c:identifier="CAIRO_OPERATOR_XOR"
              glib:nick="xor">
      </member>
      <member name="add"
              value="12"
              c:identifier="CAIRO_OPERATOR_ADD"
              glib:nick="add">
      </member>
      <member name="saturate"
              value="13"
              c:identifier="CAIRO_OPERATOR_SATURATE"
              glib:nick="saturate">
      </member>
    </enumeration>
    <glib:boxed glib:name="CairoPattern"
                c:symbol-prefix="cairo_pattern"
                glib:type-name="GooCairoPattern"
                glib:get-type="goo_cairo_pattern_get_type">
    </glib:boxed>
    <class name="Canvas"
           c:symbol-prefix="canvas"
           c:type="GooCanvas"
           parent="Gtk.Container"
           glib:type-name="GooCanvas"
           glib:get-type="goo_canvas_get_type"
           glib:type-struct="CanvasClass">
      <doc xml:space="preserve">#GooCanvas is the main widget containing a number of canvas items.

Here is a simple example:

&lt;informalexample&gt;&lt;programlisting&gt;
 &amp;num;include &amp;lt;goocanvas.h&amp;gt;

 static gboolean on_rect_button_press (GooCanvasItem  *view,
                                       GooCanvasItem  *target,
                                       GdkEventButton *event,
                                       gpointer        data);

 int
 main (int argc, char *argv[])
 {
   GtkWidget *window, *scrolled_win, *canvas;
   GooCanvasItem *root, *rect_item, *text_item;

   /&amp;ast; Initialize GTK+. &amp;ast;/
   gtk_init (&amp;amp;argc, &amp;amp;argv);

   /&amp;ast; Create the window and widgets. &amp;ast;/
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_default_size (GTK_WINDOW (window), 640, 600);
   gtk_widget_show (window);
   g_signal_connect (window, "delete_event", (GtkSignalFunc) on_delete_event,
                     NULL);

   scrolled_win = gtk_scrolled_window_new (NULL, NULL);
   gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win),
                                        GTK_SHADOW_IN);
   gtk_widget_show (scrolled_win);
   gtk_container_add (GTK_CONTAINER (window), scrolled_win);

   canvas = goo_canvas_new&amp;nbsp;();
   gtk_widget_set_size_request (canvas, 600, 450);
   goo_canvas_set_bounds (GOO_CANVAS (canvas), 0, 0, 1000, 1000);
   gtk_widget_show (canvas);
   gtk_container_add (GTK_CONTAINER (scrolled_win), canvas);

   root = goo_canvas_get_root_item (GOO_CANVAS (canvas));

   /&amp;ast; Add a few simple items. &amp;ast;/
   rect_item = goo_canvas_rect_new (root, 100, 100, 400, 400,
                                    "line-width", 10.0,
                                    "radius-x", 20.0,
                                    "radius-y", 10.0,
                                    "stroke-color", "yellow",
                                    "fill-color", "red",
                                    NULL);

   text_item = goo_canvas_text_new (root, "Hello World", 300, 300, -1,
                                    GOO_CANVAS_ANCHOR_CENTER,
                                    "font", "Sans 24",
                                    NULL);
   goo_canvas_item_rotate (text_item, 45, 300, 300);

   /&amp;ast; Connect a signal handler for the rectangle item. &amp;ast;/
   g_signal_connect (rect_item, "button_press_event",
                     (GtkSignalFunc) on_rect_button_press, NULL);

   /&amp;ast; Pass control to the GTK+ main event loop. &amp;ast;/
   gtk_main&amp;nbsp;();

   return 0;
 }


 /&amp;ast; This handles button presses in item views. We simply output a message to
    the console. &amp;ast;/
 static gboolean
 on_rect_button_press (GooCanvasItem  *item,
                       GooCanvasItem  *target,
                       GdkEventButton *event,
                       gpointer        data)
 {
   g_print ("rect item received button press event\n");
   return TRUE;
 }

&lt;/programlisting&gt;&lt;/informalexample&gt;

A #GooCanvas widget is usually placed inside a #GtkScrolledWindow widget
and can be scrolled with the scrollbar or with the scroll wheel on a mouse.
To disable mouse wheel scrolling, do this:
&lt;informalexample&gt;&lt;programlisting&gt;
 g_signal_connect (canvas, "scroll-event", G_CALLBACK (gtk_true), NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
      <implements name="Atk.ImplementorIface"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.Scrollable"/>
      <constructor name="new" c:identifier="goo_canvas_new">
        <doc xml:space="preserve">Creates a new #GooCanvas widget.

A #GooCanvasGroup is created automatically as the root item of the canvas,
though this can be overriden with goo_canvas_set_root_item() or
goo_canvas_set_root_item_model().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #GooCanvas widget.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
      </constructor>
      <function name="boolean_handled_accumulator"
                c:identifier="goo_canvas_boolean_handled_accumulator">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ihint" transfer-ownership="none">
            <type name="GObject.SignalInvocationHint"
                  c:type="GSignalInvocationHint*"/>
          </parameter>
          <parameter name="return_accu" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="handler_return" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="dummy" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="cairo_pattern_from_pixbuf"
                c:identifier="goo_canvas_cairo_pattern_from_pixbuf">
        <return-value transfer-ownership="full">
          <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
        </return-value>
        <parameters>
          <parameter name="pixbuf" transfer-ownership="none">
            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
          </parameter>
        </parameters>
      </function>
      <function name="cairo_surface_from_pixbuf"
                c:identifier="goo_canvas_cairo_surface_from_pixbuf">
        <return-value transfer-ownership="full">
          <type name="cairo.Surface" c:type="cairo_surface_t*"/>
        </return-value>
        <parameters>
          <parameter name="pixbuf" transfer-ownership="none">
            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
          </parameter>
        </parameters>
      </function>
      <function name="convert_colors_to_rgba"
                c:identifier="goo_canvas_convert_colors_to_rgba">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="red" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="green" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="blue" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="alpha" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_path"
                c:identifier="goo_canvas_create_path"
                introspectable="0">
        <doc xml:space="preserve">Creates the path specified by the given #GooCanvasPathCommand array.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="commands" transfer-ownership="none">
            <doc xml:space="preserve">an array of #GooCanvasPathCommand.</doc>
            <array name="GLib.Array" c:type="GArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_pattern_from_color_value"
                c:identifier="goo_canvas_create_pattern_from_color_value">
        <return-value transfer-ownership="full">
          <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_pattern_from_gdk_rgba_value"
                c:identifier="goo_canvas_create_pattern_from_gdk_rgba_value">
        <return-value transfer-ownership="full">
          <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_pattern_from_pixbuf_value"
                c:identifier="goo_canvas_create_pattern_from_pixbuf_value">
        <return-value transfer-ownership="full">
          <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_pattern_from_rgba_value"
                c:identifier="goo_canvas_create_pattern_from_rgba_value">
        <return-value transfer-ownership="full">
          <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_gdk_rgba_value_from_pattern"
                c:identifier="goo_canvas_get_gdk_rgba_value_from_pattern">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="pattern" transfer-ownership="none">
            <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_rgba_value_from_pattern"
                c:identifier="goo_canvas_get_rgba_value_from_pattern">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="pattern" transfer-ownership="none">
            <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </function>
      <function name="marshal_BOOLEAN__BOXED"
                c:identifier="goo_canvas_marshal_BOOLEAN__BOXED">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="n_param_values" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="param_values" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="invocation_hint" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="marshal_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="marshal_BOOLEAN__DOUBLE_DOUBLE_BOOLEAN_OBJECT"
                c:identifier="goo_canvas_marshal_BOOLEAN__DOUBLE_DOUBLE_BOOLEAN_OBJECT">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="n_param_values" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="param_values" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="invocation_hint" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="marshal_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="marshal_BOOLEAN__OBJECT_BOXED"
                c:identifier="goo_canvas_marshal_BOOLEAN__OBJECT_BOXED">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="n_param_values" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="param_values" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="invocation_hint" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="marshal_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="marshal_VOID__INT_INT"
                c:identifier="goo_canvas_marshal_VOID__INT_INT">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="n_param_values" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="param_values" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="invocation_hint" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="marshal_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="marshal_VOID__OBJECT_OBJECT"
                c:identifier="goo_canvas_marshal_VOID__OBJECT_OBJECT">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="closure" transfer-ownership="none">
            <type name="GObject.Closure" c:type="GClosure*"/>
          </parameter>
          <parameter name="return_value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="n_param_values" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="param_values" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="invocation_hint" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="marshal_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="parse_path_data"
                c:identifier="goo_canvas_parse_path_data">
        <doc xml:space="preserve">Parses the given SVG path specification string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GArray of #GooCanvasPathCommand elements.</doc>
          <array name="GLib.Array" c:type="GArray*">
            <type name="CanvasPathCommand"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="path_data" transfer-ownership="none">
            <doc xml:space="preserve">the sequence of path commands, specified as a string using the
 same syntax as in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;Scalable
 Vector Graphics (SVG)&lt;/ulink&gt; path element.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="set_style_property_from_pattern"
                c:identifier="goo_canvas_set_style_property_from_pattern">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="style" transfer-ownership="none">
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
          <parameter name="pattern" transfer-ownership="none">
            <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_ptr_array_find_index"
                c:identifier="goo_canvas_util_ptr_array_find_index"
                introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="ptr_array" transfer-ownership="none">
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_ptr_array_insert"
                c:identifier="goo_canvas_util_ptr_array_insert"
                introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ptr_array" transfer-ownership="none">
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="index" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_ptr_array_move"
                c:identifier="goo_canvas_util_ptr_array_move"
                introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="ptr_array" transfer-ownership="none">
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
          <parameter name="old_index" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_index" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="create_item" invoker="create_item">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, typically container items such as #GooCanvasGroup.

It creates a new canvas item for the given item model, and recursively
creates items for any children.

It uses the create_item() virtual method if it has been set.
Subclasses of #GooCanvas can define this method if they want to use
custom views for items.

It emits the #GooCanvas::item-created signal after creating the view, so
application code can connect signal handlers to the new view if desired.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new canvas item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">the item model to create a canvas item for.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="item_created">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="convert_bounds_to_item_space"
              c:identifier="goo_canvas_convert_bounds_to_item_space">
        <doc xml:space="preserve">Converts the given bounds in the canvas coordinate space to a bounding box
in item space. This is useful in the item paint() methods to convert the
bounds to be painted to the item's coordinate space.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds in canvas coordinate space, to be converted.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_from_item_space"
              c:identifier="goo_canvas_convert_from_item_space">
        <doc xml:space="preserve">Converts a coordinate from the given item's coordinate space to the canvas
coordinate space, applying all transformation matrices including the
item's own transformation matrix, if it has one.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="x"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the x coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the y coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_from_pixels"
              c:identifier="goo_canvas_convert_from_pixels">
        <doc xml:space="preserve">Converts a coordinate from pixels to the canvas coordinate space.

The pixel coordinate space specifies pixels from the top-left of the entire
canvas window, according to the current scale setting.
See goo_canvas_set_scale().

The canvas coordinate space is specified in the call to
goo_canvas_set_bounds().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the x coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the y coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_to_item_space"
              c:identifier="goo_canvas_convert_to_item_space">
        <doc xml:space="preserve">Converts a coordinate from the canvas coordinate space to the given
item's coordinate space, applying all transformation matrices including the
item's own transformation matrix, if it has one.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="x"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the x coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the y coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_to_pixels"
              c:identifier="goo_canvas_convert_to_pixels">
        <doc xml:space="preserve">Converts a coordinate from the canvas coordinate space to pixels.

The canvas coordinate space is specified in the call to
goo_canvas_set_bounds().

The pixel coordinate space specifies pixels from the top-left of the entire
canvas window, according to the current scale setting.
See goo_canvas_set_scale().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the x coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the y coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_units_from_pixels"
              c:identifier="goo_canvas_convert_units_from_pixels"
              version="2.0.1">
        <doc xml:space="preserve">Converts a coordinate from pixels to the canvas's units,
ignoring scaling and ignoring the coordinate space specified
in the call to goo_canvas_set_bounds().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the x coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the y coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_units_to_pixels"
              c:identifier="goo_canvas_convert_units_to_pixels"
              version="2.0.1">
        <doc xml:space="preserve">Converts a coordinate from the canvas's units to pixels,
ignoring scaling and ignoring the coordinate space specified
in the call to goo_canvas_set_bounds().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the x coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a pointer to the y coordinate to convert.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_cairo_context"
              c:identifier="goo_canvas_create_cairo_context">
        <doc xml:space="preserve">Creates a cairo context, initialized with the default canvas settings.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new cairo context. It should be freed with cairo_destroy().</doc>
          <type name="cairo.Context" c:type="cairo_t*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_item" c:identifier="goo_canvas_create_item">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, typically container items such as #GooCanvasGroup.

It creates a new canvas item for the given item model, and recursively
creates items for any children.

It uses the create_item() virtual method if it has been set.
Subclasses of #GooCanvas can define this method if they want to use
custom views for items.

It emits the #GooCanvas::item-created signal after creating the view, so
application code can connect signal handlers to the new view if desired.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new canvas item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">the item model to create a canvas item for.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bounds" c:identifier="goo_canvas_get_bounds">
        <doc xml:space="preserve">Gets the bounds of the canvas, in canvas units.

By default, canvas units are pixels, though the #GooCanvas:units property
can be used to change the units to points, inches or millimeters.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="left" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to a #gdouble to return the left edge, or %NULL.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="top" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to a #gdouble to return the top edge, or %NULL.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="right" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to a #gdouble to return the right edge, or %NULL.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="bottom" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to a #gdouble to return the bottom edge, or %NULL.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_default_line_width"
              c:identifier="goo_canvas_get_default_line_width">
        <doc xml:space="preserve">Gets the default line width, which depends on the current units setting.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the default line width of the canvas.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_item" c:identifier="goo_canvas_get_item">
        <doc xml:space="preserve">Gets the canvas item associated with the given #GooCanvasItemModel.
This is only useful when goo_canvas_set_root_item_model() has been used to
set a model for the canvas.

For simple applications you can use goo_canvas_get_item() to set up
signal handlers for your items, e.g.

&lt;informalexample&gt;&lt;programlisting&gt;
   item = goo_canvas_get_item (GOO_CANVAS (canvas), my_item);
   g_signal_connect (item, "button_press_event",
                     (GtkSignalFunc) on_my_item_button_press, NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

More complex applications may want to use the #GooCanvas::item-created
signal to hook up their signal handlers.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the canvas item corresponding to the given
 #GooCanvasItemModel, or %NULL if no canvas item has been created for it yet.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_item_at" c:identifier="goo_canvas_get_item_at">
        <doc xml:space="preserve">Gets the item at the given point.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the item found at the given point, or %NULL if no
 item was found.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the point</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="is_pointer_event" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the "pointer-events" property of
 items should be used to determine which parts of the item are tested.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_items_at" c:identifier="goo_canvas_get_items_at">
        <doc xml:space="preserve">Gets all items at the given point.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">a list of
 items found at the given point, with the top item at the start of the list,
 or %NULL if no items were found. The list must be freed with g_list_free().</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="CanvasItem"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the point</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="is_pointer_event" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the "pointer-events" property of
 items should be used to determine which parts of the item are tested.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_items_in_area"
              c:identifier="goo_canvas_get_items_in_area">
        <doc xml:space="preserve">Gets a list of items inside or outside a given area.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">a list of
 items in the given area, or %NULL if no items are found.
 The list should be freed with g_list_free().</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="CanvasItem"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="area" transfer-ownership="none">
            <doc xml:space="preserve">the area to compare with each item's bounds.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="inside_area" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if items inside @area should be returned, or %FALSE if
 items outside @area should be returned.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="allow_overlaps" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if items which are partly inside and partly outside
 should be returned.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="include_containers" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if containers should be checked as well as
 normal items.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_root_item" c:identifier="goo_canvas_get_root_item">
        <doc xml:space="preserve">Gets the root item of the canvas, usually a #GooCanvasGroup.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the root item, or %NULL if there is no root item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_root_item_model"
              c:identifier="goo_canvas_get_root_item_model">
        <doc xml:space="preserve">Gets the root item model of the canvas.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the root item model, or %NULL if there is no root
item model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scale" c:identifier="goo_canvas_get_scale">
        <doc xml:space="preserve">Gets the current scale of the canvas.

The scale specifies the magnification factor of the canvas, e.g. if an item
has a width of 2 pixels and the scale is set to 3, it will be displayed with
a width of 2 x 3 = 6 pixels.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current scale setting.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_static_root_item"
              c:identifier="goo_canvas_get_static_root_item">
        <doc xml:space="preserve">Gets the static root item of the canvas.

Static items are exactly the same as ordinary canvas items, except that
they do not move or change size when the canvas is scrolled or the scale
changes.

Static items are added to the static root item in exactly the same way that
ordinary items are added to the root item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the static root item, or %NULL.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_static_root_item_model"
              c:identifier="goo_canvas_get_static_root_item_model">
        <doc xml:space="preserve">Gets the static root item model of the canvas.

Static item models are exactly the same as ordinary item models, except that
the corresponding items do not move or change size when the canvas is
scrolled or the scale changes.

Static items models are added to the static root item model in exactly the
same way that ordinary item models are added to the root item model.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the static root item model, or %NULL.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="grab_focus" c:identifier="goo_canvas_grab_focus">
        <doc xml:space="preserve">Grabs the keyboard focus for the given item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the item to grab the focus.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="keyboard_grab" c:identifier="goo_canvas_keyboard_grab">
        <doc xml:space="preserve">Attempts to grab the keyboard for the given item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%GDK_GRAB_SUCCESS if the grab succeeded.</doc>
          <type name="Gdk.GrabStatus" c:type="GdkGrabStatus"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the item to grab the keyboard for.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="owner_events" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if keyboard events for this application will be
 reported normally, or %FALSE if all keyboard events will be reported with
 respect to the grab item.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="time" transfer-ownership="none">
            <doc xml:space="preserve">the time of the event that lead to the keyboard grab. This should
 come from the relevant #GdkEvent.</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="keyboard_ungrab" c:identifier="goo_canvas_keyboard_ungrab">
        <doc xml:space="preserve">Ungrabs the keyboard, if the given item has the keyboard grab.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the item that has the keyboard grab.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="time" transfer-ownership="none">
            <doc xml:space="preserve">the time of the event that lead to the keyboard ungrab. This should
 come from the relevant #GdkEvent.</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="pointer_grab" c:identifier="goo_canvas_pointer_grab">
        <doc xml:space="preserve">Attempts to grab the pointer for the given item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%GDK_GRAB_SUCCESS if the grab succeeded.</doc>
          <type name="Gdk.GrabStatus" c:type="GdkGrabStatus"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the item to grab the pointer for.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event_mask" transfer-ownership="none">
            <doc xml:space="preserve">the events to receive during the grab.</doc>
            <type name="Gdk.EventMask" c:type="GdkEventMask"/>
          </parameter>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">the cursor to display during the grab, or NULL.</doc>
            <type name="Gdk.Cursor" c:type="GdkCursor*"/>
          </parameter>
          <parameter name="time" transfer-ownership="none">
            <doc xml:space="preserve">the time of the event that lead to the pointer grab. This should
 come from the relevant #GdkEvent.</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="pointer_ungrab" c:identifier="goo_canvas_pointer_ungrab">
        <doc xml:space="preserve">Ungrabs the pointer, if the given item has the pointer grab.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the item that has the grab.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="time" transfer-ownership="none">
            <doc xml:space="preserve">the time of the event that lead to the pointer ungrab. This should
 come from the relevant #GdkEvent.</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_widget_item"
              c:identifier="goo_canvas_register_widget_item">
        <doc xml:space="preserve">This function should only be used by #GooCanvasWidget and subclass
implementations.

It registers a widget item with the canvas, so that the canvas can do the
necessary actions to move and resize the widget as needed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="witem" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasWidget item.</doc>
            <type name="CanvasWidget" c:type="GooCanvasWidget*"/>
          </parameter>
        </parameters>
      </method>
      <method name="render" c:identifier="goo_canvas_render">
        <doc xml:space="preserve">Renders all or part of a canvas to the given cairo context.

This example code could be used in a #GtkPrintOperation
#GtkPrintOperation::draw-page callback to print each page in a multi-page
document (assuming the pages appear one after the other vertically in the
canvas). Note the call to cairo_translate() to translate the output to
the correct position on the printed page.

&lt;informalexample&gt;&lt;programlisting&gt;
   GooCanvasBounds bounds;
   bounds.x1 = 0;
   bounds.x2 = A4_PAGE_WIDTH;
   bounds.y1 = A4_PAGE_HEIGHT * page_num;
   bounds.y2 = A4_PAGE_HEIGHT * (page_num + 1);

   cr = gtk_print_context_get_cairo_context (print_context);
   cairo_translate (cr, 0, -A4_PAGE_HEIGHT * page_num);
   goo_canvas_render (GOO_CANVAS (canvas), cr, &amp;bounds, 0.0);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the area to render, or %NULL to render the entire canvas.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the scale to compare with each item's visibility
threshold to see if they should be rendered. This only affects items that
have their visibility set to %GOO_CANVAS_ITEM_VISIBLE_ABOVE_THRESHOLD.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_item_redraw"
              c:identifier="goo_canvas_request_item_redraw">
        <doc xml:space="preserve">This function is only intended to be used by subclasses of #GooCanvas or
#GooCanvasItem implementations.

Requests that the given bounds be redrawn. If @is_static is %TRUE the bounds
are assumed to be in the static item coordinate space, otherwise they are
assumed to be in the canvas coordinate space.

If @is_static is %FALSE this function behaves the same as
goo_canvas_request_redraw().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds of the item to redraw.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="is_static" transfer-ownership="none">
            <doc xml:space="preserve">if the item is static.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_redraw" c:identifier="goo_canvas_request_redraw">
        <doc xml:space="preserve">This function is only intended to be used by subclasses of #GooCanvas or
#GooCanvasItem implementations.

Requests that the given bounds be redrawn. The bounds must be in the canvas
coordinate space.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds to redraw, in device space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_update" c:identifier="goo_canvas_request_update">
        <doc xml:space="preserve">This function is only intended to be used by subclasses of #GooCanvas or
#GooCanvasItem implementations.

It schedules an update of the #GooCanvas. This will be performed in
the idle loop, after all pending events have been handled, but before
the canvas has been repainted.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="scroll_to" c:identifier="goo_canvas_scroll_to">
        <doc xml:space="preserve">Scrolls the canvas, placing the given point as close to the top-left of
the view as possible.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="left" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate to scroll to.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="top" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate to scroll to.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bounds" c:identifier="goo_canvas_set_bounds">
        <doc xml:space="preserve">Sets the bounds of the #GooCanvas, in canvas units.

By default, canvas units are pixels, though the #GooCanvas:units property
can be used to change the units to points, inches or millimeters.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="left" transfer-ownership="none">
            <doc xml:space="preserve">the left edge.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="top" transfer-ownership="none">
            <doc xml:space="preserve">the top edge.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="right" transfer-ownership="none">
            <doc xml:space="preserve">the right edge.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="bottom" transfer-ownership="none">
            <doc xml:space="preserve">the bottom edge.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_root_item" c:identifier="goo_canvas_set_root_item">
        <doc xml:space="preserve">Sets the root item of the canvas. Any existing canvas items are removed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the root canvas item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_root_item_model"
              c:identifier="goo_canvas_set_root_item_model">
        <doc xml:space="preserve">Sets the root item model of the canvas.

A hierarchy of canvas items will be created, corresponding to the hierarchy
of items in the model. Any current canvas items will be removed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_scale" c:identifier="goo_canvas_set_scale">
        <doc xml:space="preserve">Sets the scale of the canvas.

The scale specifies the magnification factor of the canvas, e.g. if an item
has a width of 2 pixels and the scale is set to 3, it will be displayed with
a width of 2 x 3 = 6 pixels.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the new scale setting.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_static_root_item"
              c:identifier="goo_canvas_set_static_root_item">
        <doc xml:space="preserve">Sets the static root item. Any existing static items are removed.

Static items are exactly the same as ordinary canvas items, except that
they do not move or change size when the canvas is scrolled or the scale
changes.

Static items are added to the static root item in exactly the same way that
ordinary items are added to the root item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the static root item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_static_root_item_model"
              c:identifier="goo_canvas_set_static_root_item_model">
        <doc xml:space="preserve">Sets the static root item model. Any existing static item models are
removed.

Static item models are exactly the same as ordinary item models, except that
the corresponding items do not move or change size when the canvas is
scrolled or the scale changes.

Static items models are added to the static root item model in exactly the
 same way that ordinary item models are added to the root item model.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">the static root item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister_item" c:identifier="goo_canvas_unregister_item">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items.

It should be called in the finalize method of #GooCanvasItem
objects, to remove the canvas item from the #GooCanvas's hash table.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">the item model whose canvas item is being finalized.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister_widget_item"
              c:identifier="goo_canvas_unregister_widget_item">
        <doc xml:space="preserve">This function should only be used by #GooCanvasWidget and subclass
implementations.

It unregisters a widget item from the canvas, when the item is no longer in
the canvas.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
          <parameter name="witem" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasWidget item.</doc>
            <type name="CanvasWidget" c:type="GooCanvasWidget*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update" c:identifier="goo_canvas_update">
        <doc xml:space="preserve">This function is only intended to be used by subclasses of #GooCanvas or
#GooCanvasItem implementations.

It updates any items that need updating.

If the bounds of items change, they will request a redraw of the old and
new bounds so the display is updated correctly.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="anchor" writable="1" transfer-ownership="none">
        <type name="CanvasAnchorType"/>
      </property>
      <property name="automatic-bounds" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="background-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="background-color-gdk-rgba"
                version="2.0.1"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The color to use for the canvas background, specified as a GdkRGBA.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="background-color-rgb"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="bounds-from-origin"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="bounds-padding" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="clear-background" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="integer-layout" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="redraw-when-scrolled"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="resolution-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="resolution-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="scale" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="scale-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="scale-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="units" writable="1" transfer-ownership="none">
        <type name="Gtk.Unit"/>
      </property>
      <property name="x1" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x2" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y1" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y2" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="container">
        <type name="Gtk.Container" c:type="GtkContainer"/>
      </field>
      <field name="root_item_model">
        <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
      </field>
      <field name="root_item">
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="bounds">
        <type name="CanvasBounds" c:type="GooCanvasBounds"/>
      </field>
      <field name="scale_x">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="scale_y">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="scale">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="anchor">
        <type name="CanvasAnchorType" c:type="GooCanvasAnchorType"/>
      </field>
      <field name="idle_id">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="need_update" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="need_entire_subtree_update" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="integer_layout" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="automatic_bounds" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="bounds_from_origin" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="clear_background" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="redraw_when_scrolled" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="before_initial_draw" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="hscroll_policy" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="vscroll_policy" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="bounds_padding">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="pointer_item">
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="pointer_grab_item">
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="pointer_grab_initial_item">
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="pointer_grab_button">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="focused_item">
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="keyboard_grab_item">
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="crossing_event">
        <type name="Gdk.EventCrossing" c:type="GdkEventCrossing"/>
      </field>
      <field name="canvas_window">
        <type name="Gdk.Window" c:type="GdkWindow*"/>
      </field>
      <field name="canvas_x_offset">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="canvas_y_offset">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="hadjustment">
        <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
      </field>
      <field name="vadjustment">
        <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
      </field>
      <field name="freeze_count">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="tmp_window">
        <type name="Gdk.Window" c:type="GdkWindow*"/>
      </field>
      <field name="model_to_item">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="units">
        <type name="Gtk.Unit" c:type="GtkUnit"/>
      </field>
      <field name="resolution_x">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="resolution_y">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="device_to_pixels_x">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="device_to_pixels_y">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="widget_items">
        <type name="GLib.List" c:type="GList*">
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <glib:signal name="item-created" when="last">
        <doc xml:space="preserve">This is emitted when a new canvas item is created, in model/view mode.

Applications can set up signal handlers for the new items here.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the new item.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">the item's model.</doc>
            <type name="CanvasItemModel"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <class name="CanvasAccessibleFactory"
           c:symbol-prefix="canvas_accessible_factory"
           parent="Atk.ObjectFactory"
           glib:type-name="GooCanvasAccessibleFactory"
           glib:get-type="goo_canvas_accessible_factory_get_type">
    </class>
    <enumeration name="CanvasAnchorType"
                 glib:type-name="GooCanvasAnchorType"
                 glib:get-type="goo_canvas_anchor_type_get_type"
                 c:type="GooCanvasAnchorType">
      <doc xml:space="preserve">GooCanvasAnchorType is used to specify the positions of objects relative to
a particular anchor point.</doc>
      <member name="center"
              value="0"
              c:identifier="GOO_CANVAS_ANCHOR_CENTER"
              glib:nick="center">
        <doc xml:space="preserve">the anchor is in the center of the object.</doc>
      </member>
      <member name="north"
              value="1"
              c:identifier="GOO_CANVAS_ANCHOR_NORTH"
              glib:nick="north">
        <doc xml:space="preserve">the anchor is at the top of the object, centered horizontally.</doc>
      </member>
      <member name="north_west"
              value="2"
              c:identifier="GOO_CANVAS_ANCHOR_NORTH_WEST"
              glib:nick="north-west">
        <doc xml:space="preserve">the anchor is at the top-left of the object.</doc>
      </member>
      <member name="north_east"
              value="3"
              c:identifier="GOO_CANVAS_ANCHOR_NORTH_EAST"
              glib:nick="north-east">
        <doc xml:space="preserve">the anchor is at the top-right of the object.</doc>
      </member>
      <member name="south"
              value="4"
              c:identifier="GOO_CANVAS_ANCHOR_SOUTH"
              glib:nick="south">
        <doc xml:space="preserve">the anchor is at the bottom of the object, centered horizontally.</doc>
      </member>
      <member name="south_west"
              value="5"
              c:identifier="GOO_CANVAS_ANCHOR_SOUTH_WEST"
              glib:nick="south-west">
        <doc xml:space="preserve">the anchor is at the bottom-left of the object.</doc>
      </member>
      <member name="south_east"
              value="6"
              c:identifier="GOO_CANVAS_ANCHOR_SOUTH_EAST"
              glib:nick="south-east">
        <doc xml:space="preserve">the anchor is at the bottom-right of the object.</doc>
      </member>
      <member name="west"
              value="7"
              c:identifier="GOO_CANVAS_ANCHOR_WEST"
              glib:nick="west">
        <doc xml:space="preserve">the anchor is on the left of the object, centered vertically.</doc>
      </member>
      <member name="east"
              value="8"
              c:identifier="GOO_CANVAS_ANCHOR_EAST"
              glib:nick="east">
        <doc xml:space="preserve">the anchor is on the right of the object, centered vertically.</doc>
      </member>
      <member name="n"
              value="1"
              c:identifier="GOO_CANVAS_ANCHOR_N"
              glib:nick="n">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_NORTH.</doc>
      </member>
      <member name="nw"
              value="2"
              c:identifier="GOO_CANVAS_ANCHOR_NW"
              glib:nick="nw">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_NORTH_WEST.</doc>
      </member>
      <member name="ne"
              value="3"
              c:identifier="GOO_CANVAS_ANCHOR_NE"
              glib:nick="ne">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_NORTH_EAST.</doc>
      </member>
      <member name="s"
              value="4"
              c:identifier="GOO_CANVAS_ANCHOR_S"
              glib:nick="s">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_SOUTH.</doc>
      </member>
      <member name="sw"
              value="5"
              c:identifier="GOO_CANVAS_ANCHOR_SW"
              glib:nick="sw">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_SOUTH_WEST.</doc>
      </member>
      <member name="se"
              value="6"
              c:identifier="GOO_CANVAS_ANCHOR_SE"
              glib:nick="se">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_SOUTH_EAST.</doc>
      </member>
      <member name="w"
              value="7"
              c:identifier="GOO_CANVAS_ANCHOR_W"
              glib:nick="w">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_WEST.</doc>
      </member>
      <member name="e"
              value="8"
              c:identifier="GOO_CANVAS_ANCHOR_E"
              glib:nick="e">
        <doc xml:space="preserve">see GOO_CANVAS_ANCHOR_EAST.</doc>
      </member>
    </enumeration>
    <enumeration name="CanvasAnimateType"
                 glib:type-name="GooCanvasAnimateType"
                 glib:get-type="goo_canvas_animate_type_get_type"
                 c:type="GooCanvasAnimateType">
      <doc xml:space="preserve">#GooCanvasAnimateType is used to specify what happens when the end of an
animation is reached.</doc>
      <member name="freeze"
              value="0"
              c:identifier="GOO_CANVAS_ANIMATE_FREEZE"
              glib:nick="freeze">
        <doc xml:space="preserve">the item remains in the final position.</doc>
      </member>
      <member name="reset"
              value="1"
              c:identifier="GOO_CANVAS_ANIMATE_RESET"
              glib:nick="reset">
        <doc xml:space="preserve">the item is moved back to the initial position.</doc>
      </member>
      <member name="restart"
              value="2"
              c:identifier="GOO_CANVAS_ANIMATE_RESTART"
              glib:nick="restart">
        <doc xml:space="preserve">the animation is restarted from the initial
 position.</doc>
      </member>
      <member name="bounce"
              value="3"
              c:identifier="GOO_CANVAS_ANIMATE_BOUNCE"
              glib:nick="bounce">
        <doc xml:space="preserve">the animation bounces back and forth between the
 start and end positions.</doc>
      </member>
    </enumeration>
    <record name="CanvasBounds"
            c:type="GooCanvasBounds"
            glib:type-name="GooCanvasBounds"
            glib:get-type="goo_canvas_bounds_get_type"
            c:symbol-prefix="canvas_bounds">
      <doc xml:space="preserve">#GooCanvasBounds represents the bounding box of an item in the canvas.</doc>
      <field name="x1" writable="1">
        <doc xml:space="preserve">the left edge.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y1" writable="1">
        <doc xml:space="preserve">the top edge.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="x2" writable="1">
        <doc xml:space="preserve">the right edge.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y2" writable="1">
        <doc xml:space="preserve">the bottom edge.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
    </record>
    <record name="CanvasClass"
            c:type="GooCanvasClass"
            glib:is-gtype-struct-for="Canvas">
      <doc xml:space="preserve">The #GooCanvasClass-struct struct contains one virtual method that
subclasses may override.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="Gtk.ContainerClass" c:type="GtkContainerClass"/>
      </field>
      <field name="create_item">
        <callback name="create_item">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">a new canvas item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </return-value>
          <parameters>
            <parameter name="canvas" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvas.</doc>
              <type name="Canvas" c:type="GooCanvas*"/>
            </parameter>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">the item model to create a canvas item for.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="item_created">
        <callback name="item_created">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="canvas" transfer-ownership="none">
              <type name="Canvas" c:type="GooCanvas*"/>
            </parameter>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved5" introspectable="0">
        <callback name="_goo_canvas_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved6" introspectable="0">
        <callback name="_goo_canvas_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved7" introspectable="0">
        <callback name="_goo_canvas_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved8" introspectable="0">
        <callback name="_goo_canvas_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasEllipse"
           c:symbol-prefix="canvas_ellipse"
           c:type="GooCanvasEllipse"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasEllipse"
           glib:get-type="goo_canvas_ellipse_get_type"
           glib:type-struct="CanvasEllipseClass">
      <doc xml:space="preserve">GooCanvasEllipse represents an ellipse item.

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

To create a #GooCanvasEllipse use goo_canvas_ellipse_new().

To get or set the properties of an existing #GooCanvasEllipse, use
g_object_get() and g_object_set().

The ellipse can be specified either with the "center-x", "center-y",
"radius-x" and "radius-y" properties, or with the "x", "y", "width" and
"height" properties.</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_ellipse_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new ellipse item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create an ellipse centered at (100.0,
100.0), with a horizontal radius of 50.0 and a vertical radius of 30.0.
It is drawn with a red outline with a width of 5.0 and filled with blue:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *ellipse = goo_canvas_ellipse_new (mygroup, 100.0, 100.0, 50.0, 30.0,
                                                  "stroke-color", "red",
                                                  "line-width", 5.0,
                                                  "fill-color", "blue",
                                                  NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new ellipse item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="center_x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the center of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="center_y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the center of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="radius_x" transfer-ownership="none">
            <doc xml:space="preserve">the horizontal radius of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="radius_y" transfer-ownership="none">
            <doc xml:space="preserve">the vertical radius of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="center-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="center-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="ellipse_data">
        <type name="CanvasEllipseData" c:type="GooCanvasEllipseData*"/>
      </field>
    </class>
    <record name="CanvasEllipseClass"
            c:type="GooCanvasEllipseClass"
            glib:is-gtype-struct-for="CanvasEllipse">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasEllipseData" c:type="GooCanvasEllipseData">
      <field name="center_x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="center_y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="radius_x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="radius_y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
    </record>
    <class name="CanvasEllipseModel"
           c:symbol-prefix="canvas_ellipse_model"
           c:type="GooCanvasEllipseModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasEllipseModel"
           glib:get-type="goo_canvas_ellipse_model_get_type"
           glib:type-struct="CanvasEllipseModelClass">
      <doc xml:space="preserve">GooCanvasEllipseModel represents a model for ellipse items.

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

To create a #GooCanvasEllipseModel use goo_canvas_ellipse_model_new().

To get or set the properties of an existing #GooCanvasEllipseModel, use
g_object_get() and g_object_set().

The ellipse can be specified either with the "center-x", "center-y",
"radius-x" and "radius-y" properties, or with the "x", "y", "width" and
"height" properties.

To respond to events such as mouse clicks on the ellipse you must connect
to the signal handlers of the corresponding #GooCanvasEllipse objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_ellipse_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new ellipse model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create an ellipse centered at (100.0,
100.0), with a horizontal radius of 50.0 and a vertical radius of 30.0.
It is drawn with a red outline with a width of 5.0 and filled with blue:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *ellipse = goo_canvas_ellipse_model_new (mygroup, 100.0, 100.0, 50.0, 30.0,
                                                             "stroke-color", "red",
                                                             "line-width", 5.0,
                                                             "fill-color", "blue",
                                                             NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new ellipse model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="center_x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the center of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="center_y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the center of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="radius_x" transfer-ownership="none">
            <doc xml:space="preserve">the horizontal radius of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="radius_y" transfer-ownership="none">
            <doc xml:space="preserve">the vertical radius of the ellipse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="center-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="center-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="ellipse_data">
        <type name="CanvasEllipseData" c:type="GooCanvasEllipseData"/>
      </field>
    </class>
    <record name="CanvasEllipseModelClass"
            c:type="GooCanvasEllipseModelClass"
            glib:is-gtype-struct-for="CanvasEllipseModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasGrid"
           c:symbol-prefix="canvas_grid"
           c:type="GooCanvasGrid"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasGrid"
           glib:get-type="goo_canvas_grid_get_type"
           glib:type-struct="CanvasGridClass">
      <doc xml:space="preserve">GooCanvasGrid represents a grid item.
A grid consists of a number of equally-spaced horizontal and vertical
grid lines, plus an optional border.

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

To create a #GooCanvasGrid use goo_canvas_grid_new().

To get or set the properties of an existing #GooCanvasGrid, use
g_object_get() and g_object_set().

The grid's position and size is specified with the #GooCanvasGrid:x,
#GooCanvasGrid:y, #GooCanvasGrid:width and #GooCanvasGrid:height properties.

The #GooCanvasGrid:x-step and #GooCanvasGrid:y-step properties specify the
distance between grid lines. The  #GooCanvasGrid:x-offset and
#GooCanvasGrid:y-offset properties specify the distance before the first
grid lines.

The horizontal or vertical grid lines can be hidden using the
#GooCanvasGrid:show-horz-grid-lines and #GooCanvasGrid:show-vert-grid-lines
properties.

The width of the border can be set using the #GooCanvasGrid:border-width
property. The border is drawn outside the area specified with the
#GooCanvasGrid:x, #GooCanvasGrid:y, #GooCanvasGrid:width and
#GooCanvasGrid:height properties.

Other properties allow the colors and widths of the grid lines to be set.
The grid line color and width properties override the standard
#GooCanvasItemSimple:stroke-color and #GooCanvasItemSimple:line-width
properties, enabling different styles for horizontal and vertical grid lines.</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_grid_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new grid item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a grid:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *grid = goo_canvas_grid_new (mygroup, 100.0, 100.0, 400.0, 200.0,
                                            20.0, 20.0, 10.0, 10.0,
                                            "horz-grid-line-width", 4.0,
                                            "horz-grid-line-color", "yellow",
                                            "vert-grid-line-width", 2.0,
                                            "vert-grid-line-color", "red",
                                            "border-width", 3.0,
                                            "border-color", "white",
                                            "fill-color", "blue",
                                            NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new grid item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the left of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the top of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="x_step" transfer-ownership="none">
            <doc xml:space="preserve">the distance between the vertical grid lines.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y_step" transfer-ownership="none">
            <doc xml:space="preserve">the distance between the horizontal grid lines.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="x_offset" transfer-ownership="none">
            <doc xml:space="preserve">the distance before the first vertical grid line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y_offset" transfer-ownership="none">
            <doc xml:space="preserve">the distance before the first horizontal grid line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="border-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="border-color-gdk-rgba"
                version="2.0.1"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The color to use for the border, specified as a GdkRGBA.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="border-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="border-pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="border-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="border-width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="horz-grid-line-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="horz-grid-line-color-gdk-rgba"
                version="2.0.1"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The color to use for the horizontal grid lines, specified as a GdkRGBA.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="horz-grid-line-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="horz-grid-line-pattern"
                writable="1"
                transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="horz-grid-line-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="horz-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="show-horz-grid-lines"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="show-vert-grid-lines"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="vert-grid-line-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="vert-grid-line-color-gdk-rgba"
                version="2.0.1"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The color to use for the vertical grid lines, specified as a GdkRGBA.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="vert-grid-line-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="vert-grid-line-pattern"
                writable="1"
                transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="vert-grid-line-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="vert-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="vert-grid-lines-on-top"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x-offset" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x-step" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y-offset" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y-step" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="grid_data">
        <type name="CanvasGridData" c:type="GooCanvasGridData*"/>
      </field>
    </class>
    <record name="CanvasGridClass"
            c:type="GooCanvasGridClass"
            glib:is-gtype-struct-for="CanvasGrid">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasGridData" c:type="GooCanvasGridData">
      <field name="x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="height" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="x_step" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y_step" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="x_offset" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y_offset" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="horz_grid_line_width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="vert_grid_line_width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="horz_grid_line_pattern" writable="1">
        <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
      </field>
      <field name="vert_grid_line_pattern" writable="1">
        <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
      </field>
      <field name="border_width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="border_pattern" writable="1">
        <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
      </field>
      <field name="show_horz_grid_lines" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="show_vert_grid_lines" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="vert_grid_lines_on_top" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <class name="CanvasGridModel"
           c:symbol-prefix="canvas_grid_model"
           c:type="GooCanvasGridModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasGridModel"
           glib:get-type="goo_canvas_grid_model_get_type"
           glib:type-struct="CanvasGridModelClass">
      <doc xml:space="preserve">GooCanvasGridModel represents a model for grid items.
A grid consists of a number of equally-spaced horizontal and vertical
grid lines, plus an optional border.

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

To create a #GooCanvasGridModel use goo_canvas_grid_model_new().

To get or set the properties of an existing #GooCanvasGridModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the grid you must connect
to the signal handlers of the corresponding #GooCanvasGrid objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)

The grid's position and size is specified with the #GooCanvasGridModel:x,
#GooCanvasGridModel:y, #GooCanvasGridModel:width and
#GooCanvasGridModel:height properties.

The #GooCanvasGridModel:x-step and #GooCanvasGridModel:y-step properties
specify the distance between grid lines. The  #GooCanvasGridModel:x-offset
and #GooCanvasGridModel:y-offset properties specify the distance before the
first grid lines.

The horizontal or vertical grid lines can be hidden using the
#GooCanvasGridModel:show-horz-grid-lines and
#GooCanvasGridModel:show-vert-grid-lines properties.

The width of the border can be set using the #GooCanvasGridModel:border-width
property. The border is drawn outside the area specified with the
#GooCanvasGridModel:x, #GooCanvasGridModel:y, #GooCanvasGridModel:width and
#GooCanvasGridModel:height properties.

Other properties allow the colors and widths of the grid lines to be set.
The grid line color and width properties override the standard
#GooCanvasItemModelSimple:stroke-color and
#GooCanvasItemModelSimple:line-width properties, enabling different styles
for horizontal and vertical grid lines.</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_grid_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new grid model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a grid:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *grid = goo_canvas_grid_model_new (mygroup, 100.0, 100.0, 400.0, 200.0,
                                                       20.0, 20.0, 10.0, 10.0,
                                                       "horz-grid-line-width", 4.0,
                                                       "horz-grid-line-color", "yellow",
                                                       "vert-grid-line-width", 2.0,
                                                       "vert-grid-line-color", "red",
                                                       "border-width", 3.0,
                                                       "border-color", "white",
                                                       "fill-color", "blue",
                                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new grid model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the left of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the top of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the grid.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="x_step" transfer-ownership="none">
            <doc xml:space="preserve">the distance between the vertical grid lines.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y_step" transfer-ownership="none">
            <doc xml:space="preserve">the distance between the horizontal grid lines.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="x_offset" transfer-ownership="none">
            <doc xml:space="preserve">the distance before the first vertical grid line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y_offset" transfer-ownership="none">
            <doc xml:space="preserve">the distance before the first horizontal grid line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="border-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="border-color-gdk-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="Gdk.RGBA"/>
      </property>
      <property name="border-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="border-pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="border-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="border-width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="horz-grid-line-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="horz-grid-line-color-gdk-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="Gdk.RGBA"/>
      </property>
      <property name="horz-grid-line-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="horz-grid-line-pattern"
                writable="1"
                transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="horz-grid-line-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="horz-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="show-horz-grid-lines"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="show-vert-grid-lines"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="vert-grid-line-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="vert-grid-line-color-gdk-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="Gdk.RGBA"/>
      </property>
      <property name="vert-grid-line-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="vert-grid-line-pattern"
                writable="1"
                transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="vert-grid-line-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="vert-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="vert-grid-lines-on-top"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x-offset" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x-step" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y-offset" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y-step" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="grid_data">
        <type name="CanvasGridData" c:type="GooCanvasGridData"/>
      </field>
    </class>
    <record name="CanvasGridModelClass"
            c:type="GooCanvasGridModelClass"
            glib:is-gtype-struct-for="CanvasGridModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasGroup"
           c:symbol-prefix="canvas_group"
           c:type="GooCanvasGroup"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasGroup"
           glib:get-type="goo_canvas_group_get_type"
           glib:type-struct="CanvasGroupClass">
      <doc xml:space="preserve">#GooCanvasGroup represents a group of items. Groups can be nested to
any depth, to create a hierarchy of items. Items are ordered within each
group, with later items being displayed above earlier items.

#GooCanvasGroup is a subclass of #GooCanvasItemSimple and so
inherits all of the style properties such as "stroke-color", "fill-color"
and "line-width". Setting a style property on a #GooCanvasGroup will affect
all children of the #GooCanvasGroup (unless the children override the
property setting).

#GooCanvasGroup implements the #GooCanvasItem interface, so you can use
the #GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate(), and the properties such as "visibility" and
"pointer-events".

If the #GooCanvasGroup:width and #GooCanvasGroup:height properties are
set to positive values then the group is clipped to the given size.

To create a #GooCanvasGroup use goo_canvas_group_new().

To get or set the properties of an existing #GooCanvasGroup, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_group_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new group item.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new group item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="items">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="CanvasGroupClass"
            c:type="GooCanvasGroupClass"
            glib:is-gtype-struct-for="CanvasGroup">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasGroupModel"
           c:symbol-prefix="canvas_group_model"
           c:type="GooCanvasGroupModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasGroupModel"
           glib:get-type="goo_canvas_group_model_get_type"
           glib:type-struct="CanvasGroupModelClass">
      <doc xml:space="preserve">#GooCanvasGroupModel represents a group of items. Groups can be nested to
any depth, to create a hierarchy of items. Items are ordered within each
group, with later items being displayed above earlier items.

#GooCanvasGroupModel is a subclass of #GooCanvasItemModelSimple and so
inherits all of the style properties such as "stroke-color", "fill-color"
and "line-width". Setting a style property on a #GooCanvasGroupModel will
affect all children of the #GooCanvasGroupModel (unless the children
override the property setting).

#GooCanvasGroupModel implements the #GooCanvasItemModel interface, so you
can use the #GooCanvasItemModel functions such as
goo_canvas_item_model_raise() and goo_canvas_item_model_rotate(), and the
properties such as "visibility" and "pointer-events".

To create a #GooCanvasGroupModel use goo_canvas_group_model_new().

To get or set the properties of an existing #GooCanvasGroupModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the group you must connect
to the signal handlers of the corresponding #GooCanvasGroup objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_group_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new group item.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new group model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="children">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="CanvasGroupModelClass"
            c:type="GooCanvasGroupModelClass"
            glib:is-gtype-struct-for="CanvasGroupModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasImage"
           c:symbol-prefix="canvas_image"
           c:type="GooCanvasImage"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasImage"
           glib:get-type="goo_canvas_image_get_type"
           glib:type-struct="CanvasImageClass">
      <doc xml:space="preserve">GooCanvasImage represents an image item.

&lt;note&gt;&lt;para&gt;
It is usually necessary to set the "scale-to-fit" property to %TRUE to
scale the image to fit the given rectangle.
&lt;/para&gt;&lt;/note&gt;

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "operator" and "pointer-events".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

To create a #GooCanvasImage use goo_canvas_image_new().

To get or set the properties of an existing #GooCanvasImage, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_image_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new image item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create an image at (100.0, 100.0), using
the given pixbuf at its natural width and height:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *image = goo_canvas_image_new (mygroup, pixbuf, 100.0, 100.0,
                                              NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

This example creates an image scaled to a size of 200x200:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *image = goo_canvas_image_new (mygroup, pixbuf, 100.0, 100.0,
                                              "width", 200.0,
                                              "height", 200.0,
                                              "scale-to-fit", TRUE,
                                              NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new image item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="pixbuf"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GdkPixbuf containing the image data, or %NULL.</doc>
            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the image.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the image.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="alpha" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="scale-to-fit" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="image_data">
        <type name="CanvasImageData" c:type="GooCanvasImageData*"/>
      </field>
    </class>
    <record name="CanvasImageClass"
            c:type="GooCanvasImageClass"
            glib:is-gtype-struct-for="CanvasImage">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasImageData" c:type="GooCanvasImageData">
      <field name="pattern" writable="1">
        <type name="cairo.Pattern" c:type="cairo_pattern_t*"/>
      </field>
      <field name="x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="height" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
    </record>
    <class name="CanvasImageModel"
           c:symbol-prefix="canvas_image_model"
           c:type="GooCanvasImageModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasImageModel"
           glib:get-type="goo_canvas_image_model_get_type"
           glib:type-struct="CanvasImageModelClass">
      <doc xml:space="preserve">GooCanvasImageModel represent a model for image items.

&lt;note&gt;&lt;para&gt;
It is usually necessary to set the "scale-to-fit" property to %TRUE to
scale the image to fit the given rectangle. When using units other than
%GTK_UNIT_PIXEL it is also necessary to set the "width" and "height"
properties to set the desired size.
&lt;/para&gt;&lt;/note&gt;

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "operator" and "pointer-events".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

To create a #GooCanvasImageModel use goo_canvas_image_model_new().

To get or set the properties of an existing #GooCanvasImageModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the image you must connect
to the signal handlers of the corresponding #GooCanvasImage objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_image_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new image model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create an image at (100.0, 100.0), using
the given pixbuf at its natural width and height:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *image = goo_canvas_image_model_new (mygroup, pixbuf, 100.0, 100.0,
                                                         NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

This example creates an image scaled to a size of 200x200:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *image = goo_canvas_image_model_new (mygroup, pixbuf, 100.0, 100.0,
                                                         "width", 200.0,
                                                         "height", 200.0,
                                                         "scale-to-fit", TRUE,
                                                         NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new image model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="pixbuf"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the #GdkPixbuf containing the image data, or %NULL.</doc>
            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the image.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the image.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="alpha" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="scale-to-fit" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="image_data">
        <type name="CanvasImageData" c:type="GooCanvasImageData"/>
      </field>
    </class>
    <record name="CanvasImageModelClass"
            c:type="GooCanvasImageModelClass"
            glib:is-gtype-struct-for="CanvasImageModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <interface name="CanvasItem"
               c:symbol-prefix="canvas_item"
               c:type="GooCanvasItem"
               glib:type-name="GooCanvasItem"
               glib:get-type="goo_canvas_item_get_type"
               glib:type-struct="CanvasItemIface">
      <doc xml:space="preserve">#GooCanvasItem defines the interface that canvas items must implement,
and contains methods for operating on canvas items.</doc>
      <function name="class_find_child_property"
                c:identifier="goo_canvas_item_class_find_child_property">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout container items such as #GooCanvasTable.

It finds a child property of a canvas item class by name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GParamSpec of the
 child property or %NULL if @class has no child property with that name.</doc>
          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
        </return-value>
        <parameters>
          <parameter name="iclass" transfer-ownership="none">
            <doc xml:space="preserve">a #GObjectClass</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the child property to find</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="class_install_child_property"
                c:identifier="goo_canvas_item_class_install_child_property">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout container items such as #GooCanvasTable.

It installs a child property on a canvas item class.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="iclass" transfer-ownership="none">
            <doc xml:space="preserve">a #GObjectClass</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <doc xml:space="preserve">the id for the property</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <doc xml:space="preserve">the #GParamSpec for the property</doc>
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </function>
      <function name="class_list_child_properties"
                c:identifier="goo_canvas_item_class_list_child_properties">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout container items such as #GooCanvasTable.

It returns all child properties of a canvas item class.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated
 array of #GParamSpec*. The array must be freed with g_free().</doc>
          <array length="1" zero-terminated="0" c:type="GParamSpec**">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="iclass" transfer-ownership="none">
            <doc xml:space="preserve">a #GObjectClass</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
          <parameter name="n_properties"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to return the number of child properties found</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="add_child" invoker="add_child">
        <doc xml:space="preserve">Adds a child item to a container item at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the container to add the item to.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">the item to add.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve">the position of the item, or -1 to place it last (at the top of
 the stacking order).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="allocate_area" invoker="allocate_area">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It allocates an area to a child #GooCanvasItem.

Note that the parent layout item will use a transform to move each of its
children for the layout, so there is no need for the child item to
reposition itself. It only needs to recalculate its device bounds.

To help recalculate the item's device bounds, the @x_offset and @y_offset
of the child item's allocated position from its requested position are
provided. Simple items can just add these to their bounds.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="requested_area" transfer-ownership="none">
            <doc xml:space="preserve">the area that the item originally requested, in the
 parent's coordinate space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="allocated_area" transfer-ownership="none">
            <doc xml:space="preserve">the area that the item has been allocated, in the parent's
 coordinate space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="x_offset" transfer-ownership="none">
            <doc xml:space="preserve">the x offset of the allocated area from the requested area in
 the device coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y_offset" transfer-ownership="none">
            <doc xml:space="preserve">the y offset of the allocated area from the requested area in
 the device coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="animation_finished">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="stopped" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="button_press_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="button_release_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_notify">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="pspec" transfer-ownership="none">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="enter_notify_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventCrossing" c:type="GdkEventCrossing*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="focus_in_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventFocus" c:type="GdkEventFocus*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="focus_out_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventFocus" c:type="GdkEventFocus*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_bounds" invoker="get_bounds">
        <doc xml:space="preserve">Gets the bounds of the item.

Note that the bounds includes the entire fill and stroke extents of the
item, whether they are painted or not.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="bounds"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the bounds in.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_canvas" invoker="get_canvas">
        <doc xml:space="preserve">Returns the #GooCanvas containing the given #GooCanvasItem.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GooCanvas.</doc>
          <type name="Canvas" c:type="GooCanvas*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_child" invoker="get_child">
        <doc xml:space="preserve">Gets the child item at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the child item at the given stack position, or
 %NULL if @child_num is out of range.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of a child in the container's stack.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_child_property">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_is_static" invoker="get_is_static">
        <doc xml:space="preserve">Returns %TRUE if the item is static. Static items do not move or change
size when the canvas is scrolled or the scale changes.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item is static.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_items_at" invoker="get_items_at">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

It gets the items at the given point.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the
 @found_items list, with any more found items
 added onto the start of the list, leaving the top item first.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="CanvasItem"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo contect.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="is_pointer_event" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the "pointer-events" properties of items should
 be used to determine which parts of the item are tested.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="parent_is_visible" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the parent item is visible (which
 implies that all ancestors are also visible).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="found_items" transfer-ownership="none">
            <doc xml:space="preserve">the list of items found
 so far.</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="CanvasItem"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_model" invoker="get_model">
        <doc xml:space="preserve">Gets the model of the given canvas item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the item's model, or %NULL if it has no model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_children" invoker="get_n_children">
        <doc xml:space="preserve">Gets the number of children of the container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of children.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_parent" invoker="get_parent">
        <doc xml:space="preserve">Gets the parent of the given item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parent item, or %NULL if the item has no parent.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_requested_area" invoker="get_requested_area">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It gets the requested area of a child item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item should be allocated space.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="requested_area" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the requested area in, in the
 parent's coordinate space.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_requested_area_for_width"
                      invoker="get_requested_area_for_width"
                      version="2.0.1">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It gets the requested area of a child item, assuming it is allocated the
given width. This is useful for text items whose requested height may change
depending on the allocated width.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item's requested area changes due to the new allocated
width.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the allocated width.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="requested_area" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the requested area in, in the
 parent's coordinate space. If %FALSE is returned, this is undefined.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_requested_height"
                      invoker="get_requested_height">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It gets the requested height of a child item, assuming it is allocated the
given width. This is useful for text items whose requested height may change
depending on the allocated width.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the requested height of the item, given the allocated width,
 or %-1 if the item doesn't support this method or its height doesn't
 change when allocated different widths.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width that the item may be allocated.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_style" invoker="get_style">
        <doc xml:space="preserve">Gets the item's style. If the item doesn't have its own style it will return
its parent's style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the item's style.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_transform" invoker="get_transform">
        <doc xml:space="preserve">Gets the transformation matrix of an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="transform"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">the place to store the transform.</doc>
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_transform_for_child"
                      invoker="get_transform_for_child">
        <doc xml:space="preserve">Gets the transformation matrix of an item combined with any special
transform needed for the given child. These special transforms are used
by layout items such as #GooCanvasTable.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child of @item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="transform"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">the place to store the transform.</doc>
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="grab_broken_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventGrabBroken" c:type="GdkEventGrabBroken*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_visible" invoker="is_visible">
        <doc xml:space="preserve">Checks if the item is visible.

This entails checking the item's own visibility setting, as well as those
of its ancestors.

Note that the item may be scrolled off the screen and so may not
be actually visible to the user.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item is visible.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_press_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_release_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="leave_notify_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventCrossing" c:type="GdkEventCrossing*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="motion_notify_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventMotion" c:type="GdkEventMotion*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="move_child" invoker="move_child">
        <doc xml:space="preserve">Moves a child item to a new stack position within the container.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="old_position" transfer-ownership="none">
            <doc xml:space="preserve">the current position of the child item.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_position" transfer-ownership="none">
            <doc xml:space="preserve">the new position of the child item.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="paint" invoker="paint">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

It paints the item and all children if they intersect the given bounds.

Note that the @scale argument may be different to the current scale in the
#GooCanvasItem, e.g. when the canvas is being printed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds that need to be repainted, in device space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the scale to use to determine whether an item should be painted.
 See #GooCanvasItem:visibility-threshold.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="query_tooltip">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="keyboard_tooltip" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="tooltip" transfer-ownership="none">
            <type name="Gtk.Tooltip" c:type="GtkTooltip*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_child" invoker="remove_child">
        <doc xml:space="preserve">Removes the child item at the given position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of the child item to remove.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="request_update" invoker="request_update">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items.

It requests that an update of the item is scheduled. It will be performed
as soon as the application is idle, and before the canvas is redrawn.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="scroll_event">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="target" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <type name="Gdk.EventScroll" c:type="GdkEventScroll*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_canvas" invoker="set_canvas">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

It sets the canvas of the item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_child_property">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_is_static" invoker="set_is_static">
        <doc xml:space="preserve">Notifies the item that it is static. Static items do not move or change
size when the canvas is scrolled or the scale changes.

Container items such as #GooCanvasGroup should call this function when
children are added, to notify children whether they are static or not.
Containers should also pass on any changes in their own status to children.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="is_static" transfer-ownership="none">
            <doc xml:space="preserve">if the item is static.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_model" invoker="set_model">
        <doc xml:space="preserve">Sets the model of the given canvas item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_parent" invoker="set_parent">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items (specifically container items such as #GooCanvasGroup).
It sets the parent of the child item.
&lt;!--PARAMETERS--&gt;
&lt;note&gt;&lt;para&gt;
This function cannot be used to add an item to a group
or to change the parent of an item.
To do that use the #GooCanvasItem:parent property.
&lt;/para&gt;&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve">the new parent item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_style" invoker="set_style">
        <doc xml:space="preserve">Sets the item's style, by copying the properties from the given style.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_transform" invoker="set_transform">
        <doc xml:space="preserve">Sets the transformation matrix of an item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="transform"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the new transformation matrix, or %NULL to reset the
 transformation to the identity matrix.</doc>
            <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="update" invoker="update">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

Updates the item, if needed, and any children.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="entire_tree" transfer-ownership="none">
            <doc xml:space="preserve">if the entire subtree should be updated.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the new bounds in.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_child" c:identifier="goo_canvas_item_add_child">
        <doc xml:space="preserve">Adds a child item to a container item at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the container to add the item to.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">the item to add.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve">the position of the item, or -1 to place it last (at the top of
 the stacking order).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="allocate_area"
              c:identifier="goo_canvas_item_allocate_area">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It allocates an area to a child #GooCanvasItem.

Note that the parent layout item will use a transform to move each of its
children for the layout, so there is no need for the child item to
reposition itself. It only needs to recalculate its device bounds.

To help recalculate the item's device bounds, the @x_offset and @y_offset
of the child item's allocated position from its requested position are
provided. Simple items can just add these to their bounds.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="requested_area" transfer-ownership="none">
            <doc xml:space="preserve">the area that the item originally requested, in the
 parent's coordinate space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="allocated_area" transfer-ownership="none">
            <doc xml:space="preserve">the area that the item has been allocated, in the parent's
 coordinate space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="x_offset" transfer-ownership="none">
            <doc xml:space="preserve">the x offset of the allocated area from the requested area in
 the device coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y_offset" transfer-ownership="none">
            <doc xml:space="preserve">the y offset of the allocated area from the requested area in
 the device coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="animate" c:identifier="goo_canvas_item_animate">
        <doc xml:space="preserve">Animates an item from its current position to the given offsets, scale
and rotation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the final x coordinate.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the final y coordinate.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the final scale.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the final rotation. This can be negative to rotate anticlockwise,
 and can also be greater than 360 to rotate a number of times.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="absolute" transfer-ownership="none">
            <doc xml:space="preserve">if the @x, @y, @scale and @degrees values are absolute, or
 relative to the current transform. Note that absolute animations only work
 if the item currently has a simple transform. If the item has a shear or
 some other complicated transform it may result in strange animations.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="duration" transfer-ownership="none">
            <doc xml:space="preserve">the duration of the animation, in milliseconds (1/1000ths of a
 second).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="step_time" transfer-ownership="none">
            <doc xml:space="preserve">the time between each animation step, in milliseconds.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">specifies what happens when the animation finishes.</doc>
            <type name="CanvasAnimateType" c:type="GooCanvasAnimateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="ensure_updated"
              c:identifier="goo_canvas_item_ensure_updated">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items.

It updates the canvas immediately, if an update is scheduled.
This ensures that all item bounds are up-to-date.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find_child" c:identifier="goo_canvas_item_find_child">
        <doc xml:space="preserve">Attempts to find the given child item with the container's stack.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the position of the given @child item, or -1 if it isn't found.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">the child item to find.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bounds" c:identifier="goo_canvas_item_get_bounds">
        <doc xml:space="preserve">Gets the bounds of the item.

Note that the bounds includes the entire fill and stroke extents of the
item, whether they are painted or not.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="bounds"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the bounds in.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_canvas" c:identifier="goo_canvas_item_get_canvas">
        <doc xml:space="preserve">Returns the #GooCanvas containing the given #GooCanvasItem.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GooCanvas.</doc>
          <type name="Canvas" c:type="GooCanvas*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_child" c:identifier="goo_canvas_item_get_child">
        <doc xml:space="preserve">Gets the child item at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the child item at the given stack position, or
 %NULL if @child_num is out of range.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of a child in the container's stack.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_properties"
              c:identifier="goo_canvas_item_get_child_properties"
              introspectable="0">
        <doc xml:space="preserve">Gets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and value pointers, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_properties_valist"
              c:identifier="goo_canvas_item_get_child_properties_valist"
              introspectable="0">
        <doc xml:space="preserve">Gets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and value pointers, and a terminating
 %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_property"
              c:identifier="goo_canvas_item_get_child_property">
        <doc xml:space="preserve">Gets a child property of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the child property to get.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a location to return the value.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_is_static"
              c:identifier="goo_canvas_item_get_is_static">
        <doc xml:space="preserve">Returns %TRUE if the item is static. Static items do not move or change
size when the canvas is scrolled or the scale changes.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item is static.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_items_at" c:identifier="goo_canvas_item_get_items_at">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

It gets the items at the given point.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the
 @found_items list, with any more found items
 added onto the start of the list, leaving the top item first.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="CanvasItem"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo contect.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="is_pointer_event" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the "pointer-events" properties of items should
 be used to determine which parts of the item are tested.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="parent_is_visible" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the parent item is visible (which
 implies that all ancestors are also visible).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="found_items" transfer-ownership="none">
            <doc xml:space="preserve">the list of items found
 so far.</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="CanvasItem"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_model" c:identifier="goo_canvas_item_get_model">
        <doc xml:space="preserve">Gets the model of the given canvas item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the item's model, or %NULL if it has no model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_children"
              c:identifier="goo_canvas_item_get_n_children">
        <doc xml:space="preserve">Gets the number of children of the container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of children.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent" c:identifier="goo_canvas_item_get_parent">
        <doc xml:space="preserve">Gets the parent of the given item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parent item, or %NULL if the item has no parent.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_requested_area"
              c:identifier="goo_canvas_item_get_requested_area">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It gets the requested area of a child item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item should be allocated space.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="requested_area" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the requested area in, in the
 parent's coordinate space.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_requested_area_for_width"
              c:identifier="goo_canvas_item_get_requested_area_for_width"
              version="2.0.1">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It gets the requested area of a child item, assuming it is allocated the
given width. This is useful for text items whose requested height may change
depending on the allocated width.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item's requested area changes due to the new allocated
width.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the allocated width.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="requested_area" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the requested area in, in the
 parent's coordinate space. If %FALSE is returned, this is undefined.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_requested_height"
              c:identifier="goo_canvas_item_get_requested_height">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout items such as #GooCanvasTable.

It gets the requested height of a child item, assuming it is allocated the
given width. This is useful for text items whose requested height may change
depending on the allocated width.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the requested height of the item, given the allocated width,
 or %-1 if the item doesn't support this method or its height doesn't
 change when allocated different widths.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width that the item may be allocated.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_simple_transform"
              c:identifier="goo_canvas_item_get_simple_transform">
        <doc xml:space="preserve">This function can be used to get the position, scale and rotation of an
item, providing that the item has a simple transformation matrix
(e.g. set with goo_canvas_item_set_simple_transform(), or using a
combination of simple translate, scale and rotate operations). If the item
has a complex transformation matrix the results will be incorrect.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">returns the x coordinate of the origin of the item's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">returns the y coordinate of the origin of the item's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="scale"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">returns the scale of the item.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="rotation"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">returns the clockwise rotation of the item, in degrees (0-360).</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_style" c:identifier="goo_canvas_item_get_style">
        <doc xml:space="preserve">Gets the item's style. If the item doesn't have its own style it will return
its parent's style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the item's style.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_transform"
              c:identifier="goo_canvas_item_get_transform">
        <doc xml:space="preserve">Gets the transformation matrix of an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="transform"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">the place to store the transform.</doc>
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_transform_for_child"
              c:identifier="goo_canvas_item_get_transform_for_child">
        <doc xml:space="preserve">Gets the transformation matrix of an item combined with any special
transform needed for the given child. These special transforms are used
by layout items such as #GooCanvasTable.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child of @item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="transform"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">the place to store the transform.</doc>
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_container" c:identifier="goo_canvas_item_is_container">
        <doc xml:space="preserve">Tests to see if the given item is a container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item is a container.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_visible" c:identifier="goo_canvas_item_is_visible">
        <doc xml:space="preserve">Checks if the item is visible.

This entails checking the item's own visibility setting, as well as those
of its ancestors.

Note that the item may be scrolled off the screen and so may not
be actually visible to the user.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item is visible.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lower" c:identifier="goo_canvas_item_lower">
        <doc xml:space="preserve">Lowers an item in the stacking order.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="below"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the item to lower @item below, or %NULL to lower @item to the
 bottom of the stack.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="move_child" c:identifier="goo_canvas_item_move_child">
        <doc xml:space="preserve">Moves a child item to a new stack position within the container.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="old_position" transfer-ownership="none">
            <doc xml:space="preserve">the current position of the child item.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_position" transfer-ownership="none">
            <doc xml:space="preserve">the new position of the child item.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="paint" c:identifier="goo_canvas_item_paint">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

It paints the item and all children if they intersect the given bounds.

Note that the @scale argument may be different to the current scale in the
#GooCanvasItem, e.g. when the canvas is being printed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds that need to be repainted, in device space.</doc>
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the scale to use to determine whether an item should be painted.
 See #GooCanvasItem:visibility-threshold.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="raise" c:identifier="goo_canvas_item_raise">
        <doc xml:space="preserve">Raises an item in the stacking order.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="above"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the item to raise @item above, or %NULL to raise @item to the top
 of the stack.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="goo_canvas_item_remove">
        <doc xml:space="preserve">Removes an item from its parent. If the item is in a canvas it will be
removed.

This would normally also result in the item being freed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_child" c:identifier="goo_canvas_item_remove_child">
        <doc xml:space="preserve">Removes the child item at the given position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a container item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of the child item to remove.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_update"
              c:identifier="goo_canvas_item_request_update">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items.

It requests that an update of the item is scheduled. It will be performed
as soon as the application is idle, and before the canvas is redrawn.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="rotate" c:identifier="goo_canvas_item_rotate">
        <doc xml:space="preserve">Rotates the item's coordinate system by the given amount, about the given
origin.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the clockwise angle of rotation.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cx" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the rotation.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cy" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the rotation.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="scale" c:identifier="goo_canvas_item_scale">
        <doc xml:space="preserve">Scales the item's coordinate system by the given amounts.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="sx" transfer-ownership="none">
            <doc xml:space="preserve">the amount to scale the horizontal axis.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="sy" transfer-ownership="none">
            <doc xml:space="preserve">the amount to scale the vertical axis.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_canvas" c:identifier="goo_canvas_item_set_canvas">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

It sets the canvas of the item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="canvas" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvas</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_child_properties"
              c:identifier="goo_canvas_item_set_child_properties"
              introspectable="0">
        <doc xml:space="preserve">Sets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_child_properties_valist"
              c:identifier="goo_canvas_item_set_child_properties_valist"
              introspectable="0">
        <doc xml:space="preserve">Sets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and values, and a terminating %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_child_property"
              c:identifier="goo_canvas_item_set_child_property">
        <doc xml:space="preserve">Sets a child property of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the child property to set.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value to set the property to.</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_is_static"
              c:identifier="goo_canvas_item_set_is_static">
        <doc xml:space="preserve">Notifies the item that it is static. Static items do not move or change
size when the canvas is scrolled or the scale changes.

Container items such as #GooCanvasGroup should call this function when
children are added, to notify children whether they are static or not.
Containers should also pass on any changes in their own status to children.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="is_static" transfer-ownership="none">
            <doc xml:space="preserve">if the item is static.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_model" c:identifier="goo_canvas_item_set_model">
        <doc xml:space="preserve">Sets the model of the given canvas item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent" c:identifier="goo_canvas_item_set_parent">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items (specifically container items such as #GooCanvasGroup).
It sets the parent of the child item.
&lt;!--PARAMETERS--&gt;
&lt;note&gt;&lt;para&gt;
This function cannot be used to add an item to a group
or to change the parent of an item.
To do that use the #GooCanvasItem:parent property.
&lt;/para&gt;&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve">the new parent item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_simple_transform"
              c:identifier="goo_canvas_item_set_simple_transform">
        <doc xml:space="preserve">A convenience function to set the item's transformation matrix.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the item's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the item's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the scale of the item.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="rotation" transfer-ownership="none">
            <doc xml:space="preserve">the clockwise rotation of the item, in degrees.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_style" c:identifier="goo_canvas_item_set_style">
        <doc xml:space="preserve">Sets the item's style, by copying the properties from the given style.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_transform"
              c:identifier="goo_canvas_item_set_transform">
        <doc xml:space="preserve">Sets the transformation matrix of an item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="transform"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the new transformation matrix, or %NULL to reset the
 transformation to the identity matrix.</doc>
            <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="skew_x" c:identifier="goo_canvas_item_skew_x">
        <doc xml:space="preserve">Skews the item's coordinate system along the x axis by the given amount,
about the given origin.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the skew angle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cx" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cy" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="skew_y" c:identifier="goo_canvas_item_skew_y">
        <doc xml:space="preserve">Skews the item's coordinate system along the y axis by the given amount,
about the given origin.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the skew angle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cx" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cy" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="stop_animation"
              c:identifier="goo_canvas_item_stop_animation">
        <doc xml:space="preserve">Stops any current animation for the given item, leaving it at its current
position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="translate" c:identifier="goo_canvas_item_translate">
        <doc xml:space="preserve">Translates the origin of the item's coordinate system by the given amounts.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">an item.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="tx" transfer-ownership="none">
            <doc xml:space="preserve">the amount to move the origin in the horizontal direction.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="ty" transfer-ownership="none">
            <doc xml:space="preserve">the amount to move the origin in the vertical direction.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="update" c:identifier="goo_canvas_item_update">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically container items such as #GooCanvasGroup.

Updates the item, if needed, and any children.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItem.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </instance-parameter>
          <parameter name="entire_tree" transfer-ownership="none">
            <doc xml:space="preserve">if the entire subtree should be updated.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasBounds to return the new bounds in.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <property name="can-focus" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="description" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="parent" writable="1" transfer-ownership="none">
        <type name="CanvasItem"/>
      </property>
      <property name="pointer-events" writable="1" transfer-ownership="none">
        <type name="CanvasPointerEvents"/>
      </property>
      <property name="title" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="tooltip" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The tooltip to display for the item, or %NULL to display no tooltip.

Note that this property has no effect unless the
#GtkWidget:has-tooltip property is set to %TRUE on the #GooCanvas
containing this item.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="transform" writable="1" transfer-ownership="none">
        <type name="CairoMatrix"/>
      </property>
      <property name="visibility" writable="1" transfer-ownership="none">
        <type name="CanvasItemVisibility"/>
      </property>
      <property name="visibility-threshold"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <glib:signal name="animation-finished" when="last">
        <doc xml:space="preserve">Emitted when the item animation has finished.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stopped" transfer-ownership="none">
            <doc xml:space="preserve">if the animation was explicitly stopped.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="button-press-event" when="last">
        <doc xml:space="preserve">Emitted when a mouse button is pressed in an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data. The x &amp; y fields contain the mouse position
 in the item's coordinate space. The x_root &amp; y_root fields contain
 the same coordinates converted to the canvas coordinate space.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="button-release-event" when="last">
        <doc xml:space="preserve">Emitted when a mouse button is released in an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data. The x &amp; y fields contain the mouse position
 in the item's coordinate space. The x_root &amp; y_root fields contain
 the same coordinates converted to the canvas coordinate space.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-notify"
                   when="first"
                   no-recurse="1"
                   detailed="1"
                   no-hooks="1">
        <doc xml:space="preserve">Emitted for each child property that has changed.
The signal's detail holds the property name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="pspec" transfer-ownership="none">
            <doc xml:space="preserve">the #GParamSpec of the changed child property.</doc>
            <type name="GObject.ParamSpec"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="enter-notify-event" when="last">
        <doc xml:space="preserve">Emitted when the mouse enters an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data. The x &amp; y fields contain the mouse position
 in the item's coordinate space. The x_root &amp; y_root fields contain
 the same coordinates converted to the canvas coordinate space.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="focus-in-event" when="last">
        <doc xml:space="preserve">Emitted when the item receives the keyboard focus.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="focus-out-event" when="last">
        <doc xml:space="preserve">Emitted when the item loses the keyboard focus.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="grab-broken-event" when="last">
        <doc xml:space="preserve">Emitted when the item's keyboard or pointer grab was lost
unexpectedly.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-press-event" when="last">
        <doc xml:space="preserve">Emitted when a key is pressed and the item has the keyboard
focus.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-release-event" when="last">
        <doc xml:space="preserve">Emitted when a key is released and the item has the keyboard
focus.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="leave-notify-event" when="last">
        <doc xml:space="preserve">Emitted when the mouse leaves an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data. The x &amp; y fields contain the mouse position
 in the item's coordinate space. The x_root &amp; y_root fields contain
 the same coordinates converted to the canvas coordinate space.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="motion-notify-event" when="last">
        <doc xml:space="preserve">Emitted when the mouse moves within an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data. The x &amp; y fields contain the mouse position
 in the item's coordinate space. The x_root &amp; y_root fields contain
 the same coordinates converted to the canvas coordinate space.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="query-tooltip" when="last">
        <doc xml:space="preserve">Emitted when the mouse has paused over the item for a certain amount
of time, or the tooltip was requested via the keyboard.

Note that if @keyboard_mode is %TRUE, the values of @x and @y are
undefined and should not be used.

If the item wants to display a tooltip it should update @tooltip
and return %TRUE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item has set a tooltip to show.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the mouse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the mouse.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="keyboard_mode" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the tooltip was triggered using the keyboard.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="tooltip" transfer-ownership="none">
            <doc xml:space="preserve">a #GtkTooltip.</doc>
            <type name="Gtk.Tooltip"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="scroll-event" when="last">
        <doc xml:space="preserve">Emitted when a button in the 4 to 7 range is pressed. Wheel mice are
usually configured to generate button press events for buttons 4 and 5
when the wheel is turned in an item.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE to stop the signal emission, or %FALSE to let it
 continue.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="target_item" transfer-ownership="none">
            <doc xml:space="preserve">the target of the event.</doc>
            <type name="CanvasItem"/>
          </parameter>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve">the event data. The x &amp; y fields contain the mouse position
 in the item's coordinate space. The x_root &amp; y_root fields contain
 the same coordinates converted to the canvas coordinate space.</doc>
            <type name="Gdk.Event"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <class name="CanvasItemAccessibleFactory"
           c:symbol-prefix="canvas_item_accessible_factory"
           parent="Atk.ObjectFactory"
           glib:type-name="GooCanvasItemAccessibleFactory"
           glib:get-type="goo_canvas_item_accessible_factory_get_type">
    </class>
    <record name="CanvasItemIface"
            c:type="GooCanvasItemIface"
            glib:is-gtype-struct-for="CanvasItem">
      <doc xml:space="preserve">#GooCanvasItemIFace holds the virtual methods that make up the
#GooCanvasItem interface.

Simple canvas items only need to implement the get_parent(), set_parent(),
get_bounds(), get_items_at(), update() and paint() methods (and also
get_requested_area() and allocate_area() if they are going to be used
inside a layout container like #GooCanvasTable).

Items that support transforms should also implement get_transform() and
set_transform(). Items that support styles should implement get_style()
and set_style().

Container items must implement get_canvas(), set_canvas(),
get_n_children(), get_child() and request_update(). Containers that support
dynamic changes to their children should implement add_child(),
move_child() and remove_child(). Layout containers like #GooCanvasTable
may implement get_child_property(), set_child_property() and
get_transform_for_child().</doc>
      <field name="base_iface" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_canvas">
        <callback name="get_canvas">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the #GooCanvas.</doc>
            <type name="Canvas" c:type="GooCanvas*"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_canvas">
        <callback name="set_canvas">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="canvas" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvas</doc>
              <type name="Canvas" c:type="GooCanvas*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_children">
        <callback name="get_n_children">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of children.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a container item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_child">
        <callback name="get_child">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the child item at the given stack position, or
 %NULL if @child_num is out of range.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a container item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="child_num" transfer-ownership="none">
              <doc xml:space="preserve">the position of a child in the container's stack.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="request_update">
        <callback name="request_update">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_child">
        <callback name="add_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">the container to add the item to.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <doc xml:space="preserve">the item to add.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <doc xml:space="preserve">the position of the item, or -1 to place it last (at the top of
 the stacking order).</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="move_child">
        <callback name="move_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a container item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="old_position" transfer-ownership="none">
              <doc xml:space="preserve">the current position of the child item.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="new_position" transfer-ownership="none">
              <doc xml:space="preserve">the new position of the child item.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_child">
        <callback name="remove_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a container item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="child_num" transfer-ownership="none">
              <doc xml:space="preserve">the position of the child item to remove.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_child_property">
        <callback name="get_child_property">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="property_id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
            <parameter name="pspec" transfer-ownership="none">
              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_child_property">
        <callback name="set_child_property">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="property_id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type name="GObject.Value" c:type="const GValue*"/>
            </parameter>
            <parameter name="pspec" transfer-ownership="none">
              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_transform_for_child">
        <callback name="get_transform_for_child">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if a transform is set.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <doc xml:space="preserve">a child of @item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="transform"
                       direction="out"
                       caller-allocates="1"
                       transfer-ownership="none">
              <doc xml:space="preserve">the place to store the transform.</doc>
              <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_parent">
        <callback name="get_parent">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the parent item, or %NULL if the item has no parent.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_parent">
        <callback name="set_parent">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="parent" transfer-ownership="none">
              <doc xml:space="preserve">the new parent item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_bounds">
        <callback name="get_bounds">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="bounds"
                       direction="out"
                       caller-allocates="1"
                       transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasBounds to return the bounds in.</doc>
              <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_items_at">
        <callback name="get_items_at">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the
 @found_items list, with any more found items
 added onto the start of the list, leaving the top item first.</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="CanvasItem"/>
            </type>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:space="preserve">the x coordinate of the point.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:space="preserve">the y coordinate of the point.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo contect.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="is_pointer_event" transfer-ownership="none">
              <doc xml:space="preserve">%TRUE if the "pointer-events" properties of items should
 be used to determine which parts of the item are tested.</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="parent_is_visible" transfer-ownership="none">
              <doc xml:space="preserve">%TRUE if the parent item is visible (which
 implies that all ancestors are also visible).</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="found_items" transfer-ownership="none">
              <doc xml:space="preserve">the list of items found
 so far.</doc>
              <type name="GLib.List" c:type="GList*">
                <type name="CanvasItem"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="update">
        <callback name="update">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="entire_tree" transfer-ownership="none">
              <doc xml:space="preserve">if the entire subtree should be updated.</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo context.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="bounds" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasBounds to return the new bounds in.</doc>
              <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="paint">
        <callback name="paint">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo context.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="bounds" transfer-ownership="none">
              <doc xml:space="preserve">the bounds that need to be repainted, in device space.</doc>
              <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
            </parameter>
            <parameter name="scale" transfer-ownership="none">
              <doc xml:space="preserve">the scale to use to determine whether an item should be painted.
 See #GooCanvasItem:visibility-threshold.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_requested_area">
        <callback name="get_requested_area">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the item should be allocated space.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo context.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="requested_area" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasBounds to return the requested area in, in the
 parent's coordinate space.</doc>
              <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="allocate_area">
        <callback name="allocate_area">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo context.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="requested_area" transfer-ownership="none">
              <doc xml:space="preserve">the area that the item originally requested, in the
 parent's coordinate space.</doc>
              <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
            </parameter>
            <parameter name="allocated_area" transfer-ownership="none">
              <doc xml:space="preserve">the area that the item has been allocated, in the parent's
 coordinate space.</doc>
              <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
            </parameter>
            <parameter name="x_offset" transfer-ownership="none">
              <doc xml:space="preserve">the x offset of the allocated area from the requested area in
 the device coordinate space.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="y_offset" transfer-ownership="none">
              <doc xml:space="preserve">the y offset of the allocated area from the requested area in
 the device coordinate space.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_transform">
        <callback name="get_transform">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if a transform is set.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="transform"
                       direction="out"
                       caller-allocates="1"
                       transfer-ownership="none">
              <doc xml:space="preserve">the place to store the transform.</doc>
              <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_transform">
        <callback name="set_transform">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="transform"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">the new transformation matrix, or %NULL to reset the
 transformation to the identity matrix.</doc>
              <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_style">
        <callback name="get_style">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the item's style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_style">
        <callback name="set_style">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="style" transfer-ownership="none">
              <doc xml:space="preserve">a style.</doc>
              <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_visible">
        <callback name="is_visible">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the item is visible.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_requested_height">
        <callback name="get_requested_height">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the requested height of the item, given the allocated width,
 or %-1 if the item doesn't support this method or its height doesn't
 change when allocated different widths.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo context.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:space="preserve">the width that the item may be allocated.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_model">
        <callback name="get_model">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the item's model, or %NULL if it has no model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_model">
        <callback name="set_model">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="enter_notify_event">
        <callback name="enter_notify_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventCrossing" c:type="GdkEventCrossing*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="leave_notify_event">
        <callback name="leave_notify_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventCrossing" c:type="GdkEventCrossing*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="motion_notify_event">
        <callback name="motion_notify_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventMotion" c:type="GdkEventMotion*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="button_press_event">
        <callback name="button_press_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="button_release_event">
        <callback name="button_release_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="focus_in_event">
        <callback name="focus_in_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventFocus" c:type="GdkEventFocus*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="focus_out_event">
        <callback name="focus_out_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventFocus" c:type="GdkEventFocus*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_press_event">
        <callback name="key_press_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_release_event">
        <callback name="key_release_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="grab_broken_event">
        <callback name="grab_broken_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventGrabBroken" c:type="GdkEventGrabBroken*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_notify">
        <callback name="child_notify">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="pspec" transfer-ownership="none">
              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="query_tooltip">
        <callback name="query_tooltip">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="keyboard_tooltip" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="tooltip" transfer-ownership="none">
              <type name="Gtk.Tooltip" c:type="GtkTooltip*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_is_static">
        <callback name="get_is_static">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the item is static.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_is_static">
        <callback name="set_is_static">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">an item.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="is_static" transfer-ownership="none">
              <doc xml:space="preserve">if the item is static.</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="animation_finished">
        <callback name="animation_finished">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="stopped" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="scroll_event">
        <callback name="scroll_event">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="target" transfer-ownership="none">
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="event" transfer-ownership="none">
              <type name="Gdk.EventScroll" c:type="GdkEventScroll*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_requested_area_for_width">
        <callback name="get_requested_area_for_width">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the item's requested area changes due to the new allocated
width.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasItem.</doc>
              <type name="CanvasItem" c:type="GooCanvasItem*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <doc xml:space="preserve">a cairo context.</doc>
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="width" transfer-ownership="none">
              <doc xml:space="preserve">the allocated width.</doc>
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="requested_area" transfer-ownership="none">
              <doc xml:space="preserve">a #GooCanvasBounds to return the requested area in, in the
 parent's coordinate space. If %FALSE is returned, this is undefined.</doc>
              <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <interface name="CanvasItemModel"
               c:symbol-prefix="canvas_item_model"
               c:type="GooCanvasItemModel"
               glib:type-name="GooCanvasItemModel"
               glib:get-type="goo_canvas_item_model_get_type"
               glib:type-struct="CanvasItemModelIface">
      <doc xml:space="preserve">#GooCanvasItemModel defines the interface that models for canvas items must
implement, and contains methods for operating on canvas item models.

&lt;note&gt;&lt;para&gt;
	The Model/View canvas feature may be removed in a future version of
	GooCanvas.
&lt;/para&gt;&lt;/note&gt;</doc>
      <function name="class_find_child_property"
                c:identifier="goo_canvas_item_model_class_find_child_property">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models, specifically layout container item models such as
#GooCanvasTableModel.

It finds a child property of a canvas item class by name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The #GParamSpec of the child
 property or %NULL if @class has no child property with that name.</doc>
          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
        </return-value>
        <parameters>
          <parameter name="mclass" transfer-ownership="none">
            <doc xml:space="preserve">a #GObjectClass</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the child property to find</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="class_install_child_property"
                c:identifier="goo_canvas_item_model_class_install_child_property">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models, specifically layout container item models such as
#GooCanvasTableModel.

It installs a child property on a canvas item class.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="mclass" transfer-ownership="none">
            <doc xml:space="preserve">a #GObjectClass</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <doc xml:space="preserve">the id for the property</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <doc xml:space="preserve">the #GParamSpec for the property</doc>
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </function>
      <function name="class_list_child_properties"
                c:identifier="goo_canvas_item_model_class_list_child_properties">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models, specifically layout container item models such as
#GooCanvasTableModel.

It returns all child properties of a canvas item class.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">
 a newly allocated array of #GParamSpec*. The array must be freed with g_free().</doc>
          <array length="1" zero-terminated="0" c:type="GParamSpec**">
            <type name="GObject.ParamSpec"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="mclass" transfer-ownership="none">
            <doc xml:space="preserve">a #GObjectClass</doc>
            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
          </parameter>
          <parameter name="n_properties"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to return the number of child properties found</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="add_child" invoker="add_child">
        <doc xml:space="preserve">Adds a child at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">the child to add.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve">the position of the child, or -1 to place it last (at the top of
 the stacking order).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="animation_finished">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="stopped" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="recompute_bounds" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_added">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_moved">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="old_child_num" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_child_num" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_notify">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="pspec" transfer-ownership="none">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_removed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_item" introspectable="0">
        <return-value>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="canvas" transfer-ownership="none">
            <type name="Canvas" c:type="GooCanvas*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_child" invoker="get_child">
        <doc xml:space="preserve">Gets the child at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the child at the given stack position, or %NULL
 if @child_num is out of range.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of a child in the container's stack.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_child_property">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_children" invoker="get_n_children">
        <doc xml:space="preserve">Gets the number of children of the container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of children.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_parent" invoker="get_parent">
        <doc xml:space="preserve">Gets the parent of the given model.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parent model, or %NULL if the model has no parent.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_style" invoker="get_style">
        <doc xml:space="preserve">Gets the model's style. If the model doesn't have its own style it will
return its parent's style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the model's style.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_transform" invoker="get_transform">
        <doc xml:space="preserve">Gets the transformation matrix of an item model.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="transform" transfer-ownership="none">
            <doc xml:space="preserve">the place to store the transform.</doc>
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="move_child" invoker="move_child">
        <doc xml:space="preserve">Moves a child to a new stack position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="old_position" transfer-ownership="none">
            <doc xml:space="preserve">the current position of the child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_position" transfer-ownership="none">
            <doc xml:space="preserve">the new position of the child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_child" invoker="remove_child">
        <doc xml:space="preserve">Removes the child at the given position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of the child to remove.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_child_property">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="property_id" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
          <parameter name="pspec" transfer-ownership="none">
            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_parent" invoker="set_parent">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models (specifically container models such as #GooCanvasGroupModel).
It sets the parent of the child model.
&lt;!--PARAMETERS--&gt;
&lt;note&gt;&lt;para&gt;
This function cannot be used to add a model to a group
or to change the parent of a model.
To do that use the #GooCanvasItemModel:parent property.
&lt;/para&gt;&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve">the new parent item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_style" invoker="set_style">
        <doc xml:space="preserve">Sets the model's style, by copying the properties from the given style.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_transform" invoker="set_transform">
        <doc xml:space="preserve">Sets the transformation matrix of an item model.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="transform"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the new transformation matrix, or %NULL to reset the
 transformation to the identity matrix.</doc>
            <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_child" c:identifier="goo_canvas_item_model_add_child">
        <doc xml:space="preserve">Adds a child at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">the child to add.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve">the position of the child, or -1 to place it last (at the top of
 the stacking order).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="animate" c:identifier="goo_canvas_item_model_animate">
        <doc xml:space="preserve">Animates a model from its current position to the given offsets, scale
and rotation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the final x coordinate.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the final y coordinate.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the final scale.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the final rotation. This can be negative to rotate anticlockwise,
 and can also be greater than 360 to rotate a number of times.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="absolute" transfer-ownership="none">
            <doc xml:space="preserve">if the @x, @y, @scale and @degrees values are absolute, or
 relative to the current transform. Note that absolute animations only work
 if the model currently has a simple transform. If the model has a shear or
 some other complicated transform it may result in strange animations.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="duration" transfer-ownership="none">
            <doc xml:space="preserve">the duration of the animation, in milliseconds (1/1000ths of a
 second).</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="step_time" transfer-ownership="none">
            <doc xml:space="preserve">the time between each animation step, in milliseconds.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">specifies what happens when the animation finishes.</doc>
            <type name="CanvasAnimateType" c:type="GooCanvasAnimateType"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_child"
              c:identifier="goo_canvas_item_model_find_child">
        <doc xml:space="preserve">Attempts to find the given child with the container's stack.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the position of the given @child, or -1 if it isn't found.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">the child to find.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child" c:identifier="goo_canvas_item_model_get_child">
        <doc xml:space="preserve">Gets the child at the given stack position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the child at the given stack position, or %NULL
 if @child_num is out of range.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of a child in the container's stack.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_properties"
              c:identifier="goo_canvas_item_model_get_child_properties"
              introspectable="0">
        <doc xml:space="preserve">Gets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and value pointers, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_properties_valist"
              c:identifier="goo_canvas_item_model_get_child_properties_valist"
              introspectable="0">
        <doc xml:space="preserve">Gets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and value pointers, and a terminating
 %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child_property"
              c:identifier="goo_canvas_item_model_get_child_property">
        <doc xml:space="preserve">Gets a child property of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the child property to get.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a location to return the value.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_children"
              c:identifier="goo_canvas_item_model_get_n_children">
        <doc xml:space="preserve">Gets the number of children of the container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of children.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="goo_canvas_item_model_get_parent">
        <doc xml:space="preserve">Gets the parent of the given model.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parent model, or %NULL if the model has no parent.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_simple_transform"
              c:identifier="goo_canvas_item_model_get_simple_transform">
        <doc xml:space="preserve">This function can be used to get the position, scale and rotation of an
item model, providing that the model has a simple transformation matrix
(e.g. set with goo_canvas_item_model_set_simple_transform(), or using a
combination of simple translate, scale and rotate operations). If the model
has a complex transformation matrix the results will be incorrect.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">returns the x coordinate of the origin of the model's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">returns the y coordinate of the origin of the model's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">returns the scale of the model.</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="rotation" transfer-ownership="none">
            <doc xml:space="preserve">returns the clockwise rotation of the model, in degrees (0-360).</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_style" c:identifier="goo_canvas_item_model_get_style">
        <doc xml:space="preserve">Gets the model's style. If the model doesn't have its own style it will
return its parent's style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the model's style.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_transform"
              c:identifier="goo_canvas_item_model_get_transform">
        <doc xml:space="preserve">Gets the transformation matrix of an item model.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a transform is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="transform" transfer-ownership="none">
            <doc xml:space="preserve">the place to store the transform.</doc>
            <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_container"
              c:identifier="goo_canvas_item_model_is_container">
        <doc xml:space="preserve">Tests to see if the given item model is a container.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the item model is a container.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lower" c:identifier="goo_canvas_item_model_lower">
        <doc xml:space="preserve">Lowers a model in the stacking order.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="below"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the item model to lower @model below, or %NULL to lower @model to the
 bottom of the stack.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="move_child"
              c:identifier="goo_canvas_item_model_move_child">
        <doc xml:space="preserve">Moves a child to a new stack position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="old_position" transfer-ownership="none">
            <doc xml:space="preserve">the current position of the child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_position" transfer-ownership="none">
            <doc xml:space="preserve">the new position of the child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="raise" c:identifier="goo_canvas_item_model_raise">
        <doc xml:space="preserve">Raises a model in the stacking order.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="above"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the item model to raise @model above, or %NULL to raise @model to the top
 of the stack.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="goo_canvas_item_model_remove">
        <doc xml:space="preserve">Removes a model from its parent. If the model is in a canvas it will be
removed.

This would normally also result in the model being freed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_child"
              c:identifier="goo_canvas_item_model_remove_child">
        <doc xml:space="preserve">Removes the child at the given position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the position of the child to remove.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="rotate" c:identifier="goo_canvas_item_model_rotate">
        <doc xml:space="preserve">Rotates the model's coordinate system by the given amount, about the given
origin.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the clockwise angle of rotation.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cx" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the rotation.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cy" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the rotation.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="scale" c:identifier="goo_canvas_item_model_scale">
        <doc xml:space="preserve">Scales the model's coordinate system by the given amounts.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="sx" transfer-ownership="none">
            <doc xml:space="preserve">the amount to scale the horizontal axis.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="sy" transfer-ownership="none">
            <doc xml:space="preserve">the amount to scale the vertical axis.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_child_properties"
              c:identifier="goo_canvas_item_model_set_child_properties"
              introspectable="0">
        <doc xml:space="preserve">Sets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_child_properties_valist"
              c:identifier="goo_canvas_item_model_set_child_properties_valist"
              introspectable="0">
        <doc xml:space="preserve">Sets the values of one or more child properties of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve">pairs of property names and values, and a terminating %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_child_property"
              c:identifier="goo_canvas_item_model_set_child_property">
        <doc xml:space="preserve">Sets a child property of @child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve">a child #GooCanvasItemModel.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the child property to set.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value to set the property to.</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent"
              c:identifier="goo_canvas_item_model_set_parent">
        <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models (specifically container models such as #GooCanvasGroupModel).
It sets the parent of the child model.
&lt;!--PARAMETERS--&gt;
&lt;note&gt;&lt;para&gt;
This function cannot be used to add a model to a group
or to change the parent of a model.
To do that use the #GooCanvasItemModel:parent property.
&lt;/para&gt;&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve">the new parent item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_simple_transform"
              c:identifier="goo_canvas_item_model_set_simple_transform">
        <doc xml:space="preserve">A convenience function to set the item model's transformation matrix.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the model's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the model's coordinate space.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve">the scale of the model.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="rotation" transfer-ownership="none">
            <doc xml:space="preserve">the clockwise rotation of the model, in degrees.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_style" c:identifier="goo_canvas_item_model_set_style">
        <doc xml:space="preserve">Sets the model's style, by copying the properties from the given style.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_transform"
              c:identifier="goo_canvas_item_model_set_transform">
        <doc xml:space="preserve">Sets the transformation matrix of an item model.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="transform"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the new transformation matrix, or %NULL to reset the
 transformation to the identity matrix.</doc>
            <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="skew_x" c:identifier="goo_canvas_item_model_skew_x">
        <doc xml:space="preserve">Skews the model's coordinate system along the x axis by the given amount,
about the given origin.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the skew angle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cx" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cy" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="skew_y" c:identifier="goo_canvas_item_model_skew_y">
        <doc xml:space="preserve">Skews the model's coordinate system along the y axis by the given amount,
about the given origin.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="degrees" transfer-ownership="none">
            <doc xml:space="preserve">the skew angle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cx" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cy" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the origin of the skew transform.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="stop_animation"
              c:identifier="goo_canvas_item_model_stop_animation">
        <doc xml:space="preserve">Stops any current animation for the given model, leaving it at its current
position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="translate" c:identifier="goo_canvas_item_model_translate">
        <doc xml:space="preserve">Translates the origin of the model's coordinate system by the given amounts.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">an item model.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </instance-parameter>
          <parameter name="tx" transfer-ownership="none">
            <doc xml:space="preserve">the amount to move the origin in the horizontal direction.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="ty" transfer-ownership="none">
            <doc xml:space="preserve">the amount to move the origin in the vertical direction.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <property name="can-focus" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="description" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="parent" writable="1" transfer-ownership="none">
        <type name="CanvasItemModel"/>
      </property>
      <property name="pointer-events" writable="1" transfer-ownership="none">
        <type name="CanvasPointerEvents"/>
      </property>
      <property name="title" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="tooltip" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="transform" writable="1" transfer-ownership="none">
        <type name="CairoMatrix"/>
      </property>
      <property name="visibility" writable="1" transfer-ownership="none">
        <type name="CanvasItemVisibility"/>
      </property>
      <property name="visibility-threshold"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <glib:signal name="animation-finished" when="last">
        <doc xml:space="preserve">Emitted when the item model animation has finished.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stopped" transfer-ownership="none">
            <doc xml:space="preserve">if the animation was explicitly stopped.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="changed" when="last">
        <doc xml:space="preserve">Emitted when the item model has been changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="recompute_bounds" transfer-ownership="none">
            <doc xml:space="preserve">if the bounds of the item need to be recomputed.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-added" when="last">
        <doc xml:space="preserve">Emitted when a child has been added.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the index of the new child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-moved" when="last">
        <doc xml:space="preserve">Emitted when a child has been moved in the stacking order.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="old_child_num" transfer-ownership="none">
            <doc xml:space="preserve">the old index of the child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="new_child_num" transfer-ownership="none">
            <doc xml:space="preserve">the new index of the child.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-notify"
                   when="first"
                   no-recurse="1"
                   detailed="1"
                   no-hooks="1">
        <doc xml:space="preserve">Emitted for each child property that has changed.
The signal's detail holds the property name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="pspec" transfer-ownership="none">
            <doc xml:space="preserve">the #GParamSpec of the changed child property.</doc>
            <type name="GObject.ParamSpec"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-removed" when="last">
        <doc xml:space="preserve">Emitted when a child has been removed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child_num" transfer-ownership="none">
            <doc xml:space="preserve">the index of the child that was removed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="CanvasItemModelIface"
            c:type="GooCanvasItemModelIface"
            glib:is-gtype-struct-for="CanvasItemModel">
      <doc xml:space="preserve">#GooCanvasItemModelIFace holds the virtual methods that make up the
#GooCanvasItemModel interface.

Simple item models only need to implement the get_parent(), set_parent()
and create_item() methods.

Items that support transforms should also implement get_transform() and
set_transform(). Items that support styles should implement get_style()
and set_style().

Container items must implement get_n_children() and get_child().
Containers that support dynamic changes to their children should implement
add_child(), move_child() and remove_child().
Layout containers like #GooCanvasTable may implement
get_child_property() and set_child_property().</doc>
      <field name="base_iface" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_n_children">
        <callback name="get_n_children">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of children.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_child">
        <callback name="get_child">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the child at the given stack position, or %NULL
 if @child_num is out of range.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child_num" transfer-ownership="none">
              <doc xml:space="preserve">the position of a child in the container's stack.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_child">
        <callback name="add_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <doc xml:space="preserve">the child to add.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <doc xml:space="preserve">the position of the child, or -1 to place it last (at the top of
 the stacking order).</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="move_child">
        <callback name="move_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="old_position" transfer-ownership="none">
              <doc xml:space="preserve">the current position of the child.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="new_position" transfer-ownership="none">
              <doc xml:space="preserve">the new position of the child.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_child">
        <callback name="remove_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child_num" transfer-ownership="none">
              <doc xml:space="preserve">the position of the child to remove.</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_child_property">
        <callback name="get_child_property">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="property_id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
            <parameter name="pspec" transfer-ownership="none">
              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_child_property">
        <callback name="set_child_property">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="item" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="property_id" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type name="GObject.Value" c:type="const GValue*"/>
            </parameter>
            <parameter name="pspec" transfer-ownership="none">
              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_parent">
        <callback name="get_parent">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the parent model, or %NULL if the model has no parent.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_parent">
        <callback name="set_parent">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="parent" transfer-ownership="none">
              <doc xml:space="preserve">the new parent item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_item" introspectable="0">
        <callback name="create_item" introspectable="0">
          <return-value>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="canvas" transfer-ownership="none">
              <type name="Canvas" c:type="GooCanvas*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_transform">
        <callback name="get_transform">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if a transform is set.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="transform" transfer-ownership="none">
              <doc xml:space="preserve">the place to store the transform.</doc>
              <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_transform">
        <callback name="set_transform">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="transform"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">the new transformation matrix, or %NULL to reset the
 transformation to the identity matrix.</doc>
              <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_style">
        <callback name="get_style">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the model's style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_style">
        <callback name="set_style">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <doc xml:space="preserve">an item model.</doc>
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="style" transfer-ownership="none">
              <doc xml:space="preserve">a style.</doc>
              <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_added">
        <callback name="child_added">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child_num" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_moved">
        <callback name="child_moved">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="old_child_num" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="new_child_num" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_removed">
        <callback name="child_removed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="child_num" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="recompute_bounds" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_notify">
        <callback name="child_notify">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="pspec" transfer-ownership="none">
              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="animation_finished">
        <callback name="animation_finished">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="model" transfer-ownership="none">
              <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
            </parameter>
            <parameter name="stopped" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved5" introspectable="0">
        <callback name="_goo_canvas_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved6" introspectable="0">
        <callback name="_goo_canvas_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved7" introspectable="0">
        <callback name="_goo_canvas_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasItemModelSimple"
           c:symbol-prefix="canvas_item_model_simple"
           c:type="GooCanvasItemModelSimple"
           parent="GObject.Object"
           glib:type-name="GooCanvasItemModelSimple"
           glib:get-type="goo_canvas_item_model_simple_get_type"
           glib:type-struct="CanvasItemModelSimpleClass">
      <doc xml:space="preserve">#GooCanvasItemModelSimple is used as a base class for the standard canvas
item models. It can also be used as the base class for new custom canvas
item models.

&lt;note&gt;&lt;para&gt;
	The Model/View canvas feature may be removed in a future version of
	GooCanvas.
&lt;/para&gt;&lt;/note&gt;

It provides default implementations for many of the #GooCanvasItemModel
methods.

Subclasses of #GooCanvasItemModelSimple only need to implement the
create_item() method of the #GooCanvasItemModel interface, to create
the default canvas item to view the item model.</doc>
      <implements name="CanvasItemModel"/>
      <property name="antialias" writable="1" transfer-ownership="none">
        <type name="CairoAntialias"/>
      </property>
      <property name="clip-fill-rule" writable="1" transfer-ownership="none">
        <type name="CairoFillRule"/>
      </property>
      <property name="clip-path"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The sequence of commands describing the clip path of the item, specified
as a string using the same syntax
as in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;Scalable Vector
Graphics (SVG)&lt;/ulink&gt; path element.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="fill-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="fill-color-gdk-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="Gdk.RGBA"/>
      </property>
      <property name="fill-color-rgba" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="fill-pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="fill-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="fill-rule" writable="1" transfer-ownership="none">
        <type name="CairoFillRule"/>
      </property>
      <property name="font" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="font-desc" writable="1" transfer-ownership="none">
        <type name="Pango.FontDescription"/>
      </property>
      <property name="hint-metrics" writable="1" transfer-ownership="none">
        <type name="CairoHintMetrics"/>
      </property>
      <property name="line-cap" writable="1" transfer-ownership="none">
        <type name="CairoLineCap"/>
      </property>
      <property name="line-dash" writable="1" transfer-ownership="none">
        <type name="CanvasLineDash"/>
      </property>
      <property name="line-join" writable="1" transfer-ownership="none">
        <type name="CairoLineJoin"/>
      </property>
      <property name="line-join-miter-limit"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="line-width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="operator" writable="1" transfer-ownership="none">
        <type name="CairoOperator"/>
      </property>
      <property name="stroke-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="stroke-color-gdk-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="Gdk.RGBA"/>
      </property>
      <property name="stroke-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="stroke-pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="stroke-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="parent">
        <doc xml:space="preserve">the parent model.</doc>
        <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
      </field>
      <field name="simple_data">
        <doc xml:space="preserve">data used by the canvas item for viewing the model.</doc>
        <type name="CanvasItemSimpleData" c:type="GooCanvasItemSimpleData"/>
      </field>
      <field name="title" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="description" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
    </class>
    <record name="CanvasItemModelSimpleClass"
            c:type="GooCanvasItemModelSimpleClass"
            glib:is-gtype-struct-for="CanvasItemModelSimple">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasItemSimple"
           c:symbol-prefix="canvas_item_simple"
           c:type="GooCanvasItemSimple"
           parent="GObject.Object"
           glib:type-name="GooCanvasItemSimple"
           glib:get-type="goo_canvas_item_simple_get_type"
           glib:type-struct="CanvasItemSimpleClass">
      <doc xml:space="preserve">#GooCanvasItemSimple is used as a base class for all of the standard canvas
items. It can also be used as the base class for new custom canvas items.

It provides default implementations for many of the #GooCanvasItem
methods.

For very simple items, all that is needed is to implement the create_path()
method. (#GooCanvasEllipse, #GooCanvasRect and #GooCanvasPath do this.)

More complicated items need to implement the update(), paint() and
is_item_at() methods instead. (#GooCanvasImage, #GooCanvasPolyline,
#GooCanvasText and #GooCanvasWidget do this.) They may also need to
override some of the other GooCanvasItem methods such as set_canvas(),
set_parent() or allocate_area() if special code is needed. (#GooCanvasWidget
does this to make sure the #GtkWidget is embedded in the #GooCanvas widget
correctly.)</doc>
      <implements name="CanvasItem"/>
      <virtual-method name="simple_create_path">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="simple" transfer-ownership="none">
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="simple_is_item_at">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="simple" transfer-ownership="none">
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="is_pointer_event" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="simple_paint">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="simple" transfer-ownership="none">
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="simple_update">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="simple" transfer-ownership="none">
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="changed" c:identifier="goo_canvas_item_simple_changed">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple.

It is used as a callback for the "changed" signal of the item models.
It requests an update or redraw of the item as appropriate.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="recompute_bounds" transfer-ownership="none">
            <doc xml:space="preserve">if the item's bounds need to be recomputed.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_in_path"
              c:identifier="goo_canvas_item_simple_check_in_path">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple.

It checks if the given point is in the current path, using the item's
style settings.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the given point is in the current path.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the point.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="pointer_events" transfer-ownership="none">
            <doc xml:space="preserve">specifies which parts of the path to check.</doc>
            <type name="CanvasPointerEvents" c:type="GooCanvasPointerEvents"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_style"
              c:identifier="goo_canvas_item_simple_check_style">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple,
typically in their update() or get_requested_area() methods.

It ensures that the item's style is setup correctly. If the item has its
own #GooCanvasStyle it makes sure the parent is set correctly. If it
doesn't have its own style it uses the parent item's style.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_line_width"
              c:identifier="goo_canvas_item_simple_get_line_width">
        <doc xml:space="preserve">Gets the item's line width.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the item's line width.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path_bounds"
              c:identifier="goo_canvas_item_simple_get_path_bounds">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple,
typically in their update() or get_requested_area() methods.

It calculates the bounds of the current path, using the item's style
settings, and stores the results in the given #GooCanvasBounds struct.

The returned bounds contains the bounding box of the path in device space,
converted to user space coordinates. To calculate the bounds completely in
user space, use cairo_identity_matrix() to temporarily reset the current
transformation matrix to the identity matrix.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the #GooCanvasBounds struct to store the resulting bounding box.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="paint_path"
              c:identifier="goo_canvas_item_simple_paint_path">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple.

It paints the current path, using the item's style settings.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_model" c:identifier="goo_canvas_item_simple_set_model">
        <doc xml:space="preserve">This function should be called by subclasses of #GooCanvasItemSimple
in their set_model() method.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve">the model that @item will view.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="user_bounds_to_device"
              c:identifier="goo_canvas_item_simple_user_bounds_to_device">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple,
typically in their update() or get_requested_area() methods.

It converts the item's bounds to a bounding box in the canvas (device)
coordinate space.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds of the item, in the item's coordinate space.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="user_bounds_to_parent"
              c:identifier="goo_canvas_item_simple_user_bounds_to_parent">
        <doc xml:space="preserve">This function is intended to be used by subclasses of #GooCanvasItemSimple,
typically in their get_requested_area() method.

It converts the item's bounds to a bounding box in its parent's coordinate
space. If the item has no transformation matrix set then no conversion is
needed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasItemSimple.</doc>
            <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">the bounds of the item, in the item's coordinate space.</doc>
            <type name="CanvasBounds" c:type="GooCanvasBounds*"/>
          </parameter>
        </parameters>
      </method>
      <property name="antialias" writable="1" transfer-ownership="none">
        <type name="CairoAntialias"/>
      </property>
      <property name="clip-fill-rule" writable="1" transfer-ownership="none">
        <type name="CairoFillRule"/>
      </property>
      <property name="clip-path"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The sequence of commands describing the clip path of the item, specified
as a string using the same syntax
as in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;Scalable Vector
Graphics (SVG)&lt;/ulink&gt; path element.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="fill-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="fill-color-gdk-rgba"
                version="2.0.1"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The color to use to paint the interior of the item, specified as a GdkRGBA. To disable painting set the 'fill-pattern' property to NULL.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="fill-color-rgba" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="fill-pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="fill-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <property name="fill-rule" writable="1" transfer-ownership="none">
        <type name="CairoFillRule"/>
      </property>
      <property name="font" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="font-desc" writable="1" transfer-ownership="none">
        <type name="Pango.FontDescription"/>
      </property>
      <property name="hint-metrics" writable="1" transfer-ownership="none">
        <type name="CairoHintMetrics"/>
      </property>
      <property name="line-cap" writable="1" transfer-ownership="none">
        <type name="CairoLineCap"/>
      </property>
      <property name="line-dash" writable="1" transfer-ownership="none">
        <type name="CanvasLineDash"/>
      </property>
      <property name="line-join" writable="1" transfer-ownership="none">
        <type name="CairoLineJoin"/>
      </property>
      <property name="line-join-miter-limit"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="line-width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="operator" writable="1" transfer-ownership="none">
        <type name="CairoOperator"/>
      </property>
      <property name="stroke-color"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="stroke-color-gdk-rgba"
                version="2.0.1"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The color to use for the item's perimeter, specified as a GdkRGBA. To disable painting set the 'stroke-pattern' property to NULL.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="stroke-color-rgba"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="stroke-pattern" writable="1" transfer-ownership="none">
        <type name="CairoPattern"/>
      </property>
      <property name="stroke-pixbuf"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="GdkPixbuf.Pixbuf"/>
      </property>
      <field name="parent_object" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="canvas">
        <doc xml:space="preserve">the canvas.</doc>
        <type name="Canvas" c:type="GooCanvas*"/>
      </field>
      <field name="parent">
        <doc xml:space="preserve">the parent item.</doc>
        <type name="CanvasItem" c:type="GooCanvasItem*"/>
      </field>
      <field name="model">
        <doc xml:space="preserve">the item's model, if it has one.</doc>
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple*"/>
      </field>
      <field name="simple_data">
        <doc xml:space="preserve">data that is common to both the model and view classes. If
 the canvas item has a model, this will point to the model's
 #GooCanvasItemSimpleData, otherwise the canvas item will have its own
 #GooCanvasItemSimpleData.</doc>
        <type name="CanvasItemSimpleData" c:type="GooCanvasItemSimpleData*"/>
      </field>
      <field name="bounds">
        <doc xml:space="preserve">the bounds of the item, in device space.</doc>
        <type name="CanvasBounds" c:type="GooCanvasBounds"/>
      </field>
      <field name="need_update" bits="1">
        <doc xml:space="preserve">if the item needs to recompute its bounds and redraw.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="need_entire_subtree_update" bits="1">
        <doc xml:space="preserve">if all descendants need to be updated.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </class>
    <record name="CanvasItemSimpleClass"
            c:type="GooCanvasItemSimpleClass"
            glib:is-gtype-struct-for="CanvasItemSimple">
      <doc xml:space="preserve">The #GooCanvasItemSimpleClass-struct struct contains several methods that
subclasses can override.

Simple items need only implement the create_path() method. More complex
items must override the update(), paint() and is_item_at() methods instead.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="simple_create_path">
        <callback name="simple_create_path">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="simple" transfer-ownership="none">
              <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="simple_update">
        <callback name="simple_update">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="simple" transfer-ownership="none">
              <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="simple_paint">
        <callback name="simple_paint">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="simple" transfer-ownership="none">
              <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="bounds" transfer-ownership="none">
              <type name="CanvasBounds" c:type="const GooCanvasBounds*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="simple_is_item_at">
        <callback name="simple_is_item_at">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="simple" transfer-ownership="none">
              <type name="CanvasItemSimple" c:type="GooCanvasItemSimple*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="cr" transfer-ownership="none">
              <type name="cairo.Context" c:type="cairo_t*"/>
            </parameter>
            <parameter name="is_pointer_event" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasItemSimpleData" c:type="GooCanvasItemSimpleData">
      <doc xml:space="preserve">This is the data common to both the model and view classes.</doc>
      <field name="style" writable="1">
        <doc xml:space="preserve">the style to draw with.</doc>
        <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
      </field>
      <field name="transform" writable="1">
        <doc xml:space="preserve">the transformation matrix of the item, or %NULL.</doc>
        <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
      </field>
      <field name="clip_path_commands" writable="1">
        <doc xml:space="preserve">an array of #GooCanvasPathCommand specifying the clip
 path of the item, or %NULL.</doc>
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="tooltip" writable="1">
        <doc xml:space="preserve">the item's tooltip.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="visibility_threshold" writable="1">
        <doc xml:space="preserve">the threshold scale setting at which to show the item
 (if the @visibility setting is set to %VISIBLE_ABOVE_THRESHOLD).</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="visibility" writable="1" bits="2">
        <doc xml:space="preserve">the #GooCanvasItemVisibility setting specifying whether the
 item is visible, invisible, or visible above a given canvas scale setting.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="pointer_events" writable="1" bits="4">
        <doc xml:space="preserve">the #GooCanvasPointerEvents setting specifying the events
 the item should receive.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="can_focus" writable="1" bits="1">
        <doc xml:space="preserve">if the item can take the keyboard focus.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="own_style" writable="1" bits="1">
        <doc xml:space="preserve">if the item has its own style, rather than using its parent's.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="clip_fill_rule" writable="1" bits="4">
        <doc xml:space="preserve">the #cairo_fill_rule_t setting specifying the fill rule
 used for the clip path.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="is_static" writable="1" bits="1">
        <doc xml:space="preserve">if the item is static.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="cache_setting" readable="0" bits="2" private="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="has_tooltip" readable="0" bits="1" private="1">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <enumeration name="CanvasItemVisibility"
                 glib:type-name="GooCanvasItemVisibility"
                 glib:get-type="goo_canvas_item_visibility_get_type"
                 c:type="GooCanvasItemVisibility">
      <doc xml:space="preserve">The #GooCanvasItemVisibility enumeration is used to specify when a canvas
item is visible.</doc>
      <member name="hidden"
              value="0"
              c:identifier="GOO_CANVAS_ITEM_HIDDEN"
              glib:nick="hidden">
        <doc xml:space="preserve">the item is invisible, and is not allocated any
 space in layout container items such as #GooCanvasTable.</doc>
      </member>
      <member name="invisible"
              value="1"
              c:identifier="GOO_CANVAS_ITEM_INVISIBLE"
              glib:nick="invisible">
        <doc xml:space="preserve">the item is invisible, but it is still allocated
 space in layout container items.</doc>
      </member>
      <member name="visible"
              value="2"
              c:identifier="GOO_CANVAS_ITEM_VISIBLE"
              glib:nick="visible">
        <doc xml:space="preserve">the item is visible.</doc>
      </member>
      <member name="visible_above_threshold"
              value="3"
              c:identifier="GOO_CANVAS_ITEM_VISIBLE_ABOVE_THRESHOLD"
              glib:nick="visible-above-threshold">
        <doc xml:space="preserve">the item is visible when the
 canvas scale setting is greater than or equal to the item's visibility
 threshold setting.</doc>
      </member>
    </enumeration>
    <record name="CanvasLineDash"
            c:type="GooCanvasLineDash"
            glib:type-name="GooCanvasLineDash"
            glib:get-type="goo_canvas_line_dash_get_type"
            c:symbol-prefix="canvas_line_dash">
      <doc xml:space="preserve">#GooCanvasLineDash specifies a dash pattern to be used when drawing items.</doc>
      <field name="ref_count" writable="1">
        <doc xml:space="preserve">the reference count of the struct.</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="num_dashes" writable="1">
        <doc xml:space="preserve">the number of dashes and gaps between them.</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="dashes" writable="1">
        <doc xml:space="preserve">the sizes of each dash and gap.</doc>
        <type name="gdouble" c:type="double*"/>
      </field>
      <field name="dash_offset" writable="1">
        <doc xml:space="preserve">the start offset into the dash pattern.</doc>
        <type name="gdouble" c:type="double"/>
      </field>
      <constructor name="new"
                   c:identifier="goo_canvas_line_dash_new"
                   introspectable="0">
        <doc xml:space="preserve">Creates a new dash pattern.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new dash pattern.</doc>
          <type name="CanvasLineDash" c:type="GooCanvasLineDash*"/>
        </return-value>
        <parameters>
          <parameter name="num_dashes" transfer-ownership="none">
            <doc xml:space="preserve">the number of dashes and gaps in the pattern.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">the length of each dash and gap.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="newv" c:identifier="goo_canvas_line_dash_newv">
        <doc xml:space="preserve">Creates a new dash pattern.  Takes ownership of the @dashes vector.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new dash pattern.</doc>
          <type name="CanvasLineDash" c:type="GooCanvasLineDash*"/>
        </return-value>
        <parameters>
          <parameter name="num_dashes" transfer-ownership="none">
            <doc xml:space="preserve">the number of dashes and gaps in the pattern.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="dashes" transfer-ownership="full">
            <doc xml:space="preserve">a g_new-allocated vector
of doubles, the length of each dash and gap.</doc>
            <array length="0" zero-terminated="0" c:type="double*">
              <type name="gdouble" c:type="double"/>
            </array>
          </parameter>
        </parameters>
      </constructor>
      <method name="ref" c:identifier="goo_canvas_line_dash_ref">
        <doc xml:space="preserve">Increments the reference count of the dash pattern.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the dash pattern.</doc>
          <type name="CanvasLineDash" c:type="GooCanvasLineDash*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dash" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasLineDash.</doc>
            <type name="CanvasLineDash" c:type="GooCanvasLineDash*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_offset"
              c:identifier="goo_canvas_line_dash_set_offset"
              version="2.0.2">
        <doc xml:space="preserve">Sets the start offset into the dash pattern.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dash" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasLinedash.</doc>
            <type name="CanvasLineDash" c:type="GooCanvasLineDash*"/>
          </instance-parameter>
          <parameter name="dash_offset" transfer-ownership="none">
            <doc xml:space="preserve">the start offset into the dash pattern.</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="goo_canvas_line_dash_unref">
        <doc xml:space="preserve">Decrements the reference count of the dash pattern. If it falls to 0
it is freed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dash" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasLineDash.</doc>
            <type name="CanvasLineDash" c:type="GooCanvasLineDash*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="CanvasPath"
           c:symbol-prefix="canvas_path"
           c:type="GooCanvasPath"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasPath"
           glib:get-type="goo_canvas_path_get_type"
           glib:type-struct="CanvasPathClass">
      <doc xml:space="preserve">GooCanvasPath represents a path item, which is a series of one or more
lines, bezier curves, or elliptical arcs.

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

#GooCanvasPath uses the same path specification strings as the Scalable
Vector Graphics (SVG) path element. For details see the
&lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;SVG specification&lt;/ulink&gt;.

To create a #GooCanvasPath use goo_canvas_path_new().

To get or set the properties of an existing #GooCanvasPath, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_path_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new path item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a red line from (20,20) to (40,40):

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *path = goo_canvas_path_new (mygroup,
                                            "M 20 20 L 40 40",
                                            "stroke-color", "red",
                                            NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

This example creates a cubic bezier curve from (20,100) to (100,100) with
the control points at (20,50) and (100,50):

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *path = goo_canvas_path_new (mygroup,
                                            "M20,100 C20,50 100,50 100,100",
                                            "stroke-color", "blue",
                                            NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

This example uses an elliptical arc to create a filled circle with one
quarter missing:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *path = goo_canvas_path_new (mygroup,
                                            "M200,500 h-150 a150,150 0 1,0 150,-150 z",
                                            "fill-color", "red",
                                            "stroke-color", "blue",
                                            "line-width", 5.0,
                                            NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new path item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="path_data" transfer-ownership="none">
            <doc xml:space="preserve">the sequence of path commands, specified as a string using the
 same syntax as in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;Scalable
 Vector Graphics (SVG)&lt;/ulink&gt; path element.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="data"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The sequence of path commands, specified as a string using the same syntax
as in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;Scalable Vector
Graphics (SVG)&lt;/ulink&gt; path element.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="path_data">
        <type name="CanvasPathData" c:type="GooCanvasPathData*"/>
      </field>
    </class>
    <record name="CanvasPathClass"
            c:type="GooCanvasPathClass"
            glib:is-gtype-struct-for="CanvasPath">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <union name="CanvasPathCommand" c:type="GooCanvasPathCommand">
      <doc xml:space="preserve">GooCanvasPathCommand holds the data for each command in the path.

The @relative flag specifies that the coordinates for the command are
relative to the current point. Otherwise they are assumed to be absolute
coordinates.</doc>
      <record name="simple" c:type="simple">
        <field name="type" writable="1" bits="5">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="relative" writable="1" bits="1">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="x" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="y" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
      </record>
      <record name="curve" c:type="curve">
        <field name="type" writable="1" bits="5">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="relative" writable="1" bits="1">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="x" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="y" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="x1" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="y1" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="x2" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="y2" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
      </record>
      <record name="arc" c:type="arc">
        <field name="type" writable="1" bits="5">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="relative" writable="1" bits="1">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="large_arc_flag" writable="1" bits="1">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="sweep_flag" writable="1" bits="1">
          <type name="guint" c:type="guint"/>
        </field>
        <field name="rx" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="ry" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="x_axis_rotation" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="x" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
        <field name="y" writable="1">
          <type name="gdouble" c:type="gdouble"/>
        </field>
      </record>
    </union>
    <enumeration name="CanvasPathCommandType"
                 glib:type-name="GooCanvasPathCommandType"
                 glib:get-type="goo_canvas_path_command_type_get_type"
                 c:type="GooCanvasPathCommandType">
      <doc xml:space="preserve">GooCanvasPathCommandType specifies the type of each command in the path.
See the path element in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;
Scalable Vector Graphics (SVG) specification&lt;/ulink&gt; for more details.</doc>
      <member name="move_to"
              value="0"
              c:identifier="GOO_CANVAS_PATH_MOVE_TO"
              glib:nick="move-to">
        <doc xml:space="preserve">move to the given point.</doc>
      </member>
      <member name="close_path"
              value="1"
              c:identifier="GOO_CANVAS_PATH_CLOSE_PATH"
              glib:nick="close-path">
        <doc xml:space="preserve">close the current path, drawing a line from the
 current position to the start of the path.</doc>
      </member>
      <member name="line_to"
              value="2"
              c:identifier="GOO_CANVAS_PATH_LINE_TO"
              glib:nick="line-to">
        <doc xml:space="preserve">draw a line to the given point.</doc>
      </member>
      <member name="horizontal_line_to"
              value="3"
              c:identifier="GOO_CANVAS_PATH_HORIZONTAL_LINE_TO"
              glib:nick="horizontal-line-to">
        <doc xml:space="preserve">draw a horizontal line to the given
 x coordinate.</doc>
      </member>
      <member name="vertical_line_to"
              value="4"
              c:identifier="GOO_CANVAS_PATH_VERTICAL_LINE_TO"
              glib:nick="vertical-line-to">
        <doc xml:space="preserve">draw a vertical line to the given y
 coordinate.</doc>
      </member>
      <member name="curve_to"
              value="5"
              c:identifier="GOO_CANVAS_PATH_CURVE_TO"
              glib:nick="curve-to">
        <doc xml:space="preserve">draw a bezier curve using two control
 points to the given point.</doc>
      </member>
      <member name="smooth_curve_to"
              value="6"
              c:identifier="GOO_CANVAS_PATH_SMOOTH_CURVE_TO"
              glib:nick="smooth-curve-to">
        <doc xml:space="preserve">draw a bezier curve using a reflection
 of the last control point of the last curve as the first control point,
 and one new control point, to the given point.</doc>
      </member>
      <member name="quadratic_curve_to"
              value="7"
              c:identifier="GOO_CANVAS_PATH_QUADRATIC_CURVE_TO"
              glib:nick="quadratic-curve-to">
        <doc xml:space="preserve">draw a quadratic bezier curve using
 a single control point to the given point.</doc>
      </member>
      <member name="smooth_quadratic_curve_to"
              value="8"
              c:identifier="GOO_CANVAS_PATH_SMOOTH_QUADRATIC_CURVE_TO"
              glib:nick="smooth-quadratic-curve-to">
        <doc xml:space="preserve">draw a quadratic bezier curve
 using a reflection of the control point from the previous curve as the
 control point, to the given point.</doc>
      </member>
      <member name="elliptical_arc"
              value="9"
              c:identifier="GOO_CANVAS_PATH_ELLIPTICAL_ARC"
              glib:nick="elliptical-arc">
        <doc xml:space="preserve">draw an elliptical arc, using the given
 2 radii, the x axis rotation, and the 2 flags to disambiguate the arc,
 to the given point.</doc>
      </member>
    </enumeration>
    <record name="CanvasPathData" c:type="GooCanvasPathData">
      <field name="path_commands" writable="1">
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="CanvasPathModel"
           c:symbol-prefix="canvas_path_model"
           c:type="GooCanvasPathModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasPathModel"
           glib:get-type="goo_canvas_path_model_get_type"
           glib:type-struct="CanvasPathModelClass">
      <doc xml:space="preserve">GooCanvasPathModel represents a model for path items, which are a series of
one or more lines, bezier curves, or elliptical arcs.

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

#GooCanvasPathModel uses the same path specification strings as the Scalable
Vector Graphics (SVG) path element. For details see the
&lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;SVG specification&lt;/ulink&gt;.

To create a #GooCanvasPathModel use goo_canvas_path_model_new().

To get or set the properties of an existing #GooCanvasPathModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the path you must connect
to the signal handlers of the corresponding #GooCanvasPath objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_path_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new path model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a red line from (20,20) to (40,40):

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *path = goo_canvas_path_model_new (mygroup,
                                                       "M 20 20 L 40 40",
                                                       "stroke-color", "red",
                                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

This example creates a cubic bezier curve from (20,100) to (100,100) with
the control points at (20,50) and (100,50):

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *path = goo_canvas_path_model_new (mygroup,
                                                       "M20,100 C20,50 100,50 100,100",
                                                       "stroke-color", "blue",
                                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;

This example uses an elliptical arc to create a filled circle with one
quarter missing:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *path = goo_canvas_path_model_new (mygroup,
                                                       "M200,500 h-150 a150,150 0 1,0 150,-150 z",
                                                       "fill-color", "red",
                                                       "stroke-color", "blue",
                                                       "line-width", 5.0,
                                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new path model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="path_data" transfer-ownership="none">
            <doc xml:space="preserve">the sequence of path commands, specified as a string using the
 same syntax as in the &lt;ulink url="http://www.w3.org/Graphics/SVG/"&gt;Scalable
 Vector Graphics (SVG)&lt;/ulink&gt; path element.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="data"
                readable="0"
                writable="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="path_data">
        <type name="CanvasPathData" c:type="GooCanvasPathData"/>
      </field>
    </class>
    <record name="CanvasPathModelClass"
            c:type="GooCanvasPathModelClass"
            glib:is-gtype-struct-for="CanvasPathModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="CanvasPointerEvents"
              glib:type-name="GooCanvasPointerEvents"
              glib:get-type="goo_canvas_pointer_events_get_type"
              c:type="GooCanvasPointerEvents">
      <doc xml:space="preserve">Specifies when an item receives pointer events such as mouse clicks.</doc>
      <member name="visible_mask"
              value="1"
              c:identifier="GOO_CANVAS_EVENTS_VISIBLE_MASK"
              glib:nick="visible-mask">
        <doc xml:space="preserve">a mask indicating that the item only
 receives events when it is visible.</doc>
      </member>
      <member name="painted_mask"
              value="2"
              c:identifier="GOO_CANVAS_EVENTS_PAINTED_MASK"
              glib:nick="painted-mask">
        <doc xml:space="preserve">a mask indicating that the item only
 receives events when the specified parts of it are painted.</doc>
      </member>
      <member name="fill_mask"
              value="4"
              c:identifier="GOO_CANVAS_EVENTS_FILL_MASK"
              glib:nick="fill-mask">
        <doc xml:space="preserve">a mask indicating that the filled part of
 the item receives events.</doc>
      </member>
      <member name="stroke_mask"
              value="8"
              c:identifier="GOO_CANVAS_EVENTS_STROKE_MASK"
              glib:nick="stroke-mask">
        <doc xml:space="preserve">a mask indicating that the stroked part
 of the item receives events.</doc>
      </member>
      <member name="none"
              value="0"
              c:identifier="GOO_CANVAS_EVENTS_NONE"
              glib:nick="none">
        <doc xml:space="preserve">the item doesn't receive events at all.</doc>
      </member>
      <member name="visible_painted"
              value="15"
              c:identifier="GOO_CANVAS_EVENTS_VISIBLE_PAINTED"
              glib:nick="visible-painted">
        <doc xml:space="preserve">the item receives events in its
 painted areas when it is visible (the default).</doc>
      </member>
      <member name="visible_fill"
              value="5"
              c:identifier="GOO_CANVAS_EVENTS_VISIBLE_FILL"
              glib:nick="visible-fill">
        <doc xml:space="preserve">the item's interior receives events
 when it is visible.</doc>
      </member>
      <member name="visible_stroke"
              value="9"
              c:identifier="GOO_CANVAS_EVENTS_VISIBLE_STROKE"
              glib:nick="visible-stroke">
        <doc xml:space="preserve">the item's perimeter receives
 events when it is visible.</doc>
      </member>
      <member name="visible"
              value="13"
              c:identifier="GOO_CANVAS_EVENTS_VISIBLE"
              glib:nick="visible">
        <doc xml:space="preserve">the item receives events when it is visible,
 whether it is painted or not.</doc>
      </member>
      <member name="painted"
              value="14"
              c:identifier="GOO_CANVAS_EVENTS_PAINTED"
              glib:nick="painted">
        <doc xml:space="preserve">the item receives events in its painted areas,
 whether it is visible or not.</doc>
      </member>
      <member name="fill"
              value="4"
              c:identifier="GOO_CANVAS_EVENTS_FILL"
              glib:nick="fill">
        <doc xml:space="preserve">the item's interior receives events, whether it
 is visible or painted or not.</doc>
      </member>
      <member name="stroke"
              value="8"
              c:identifier="GOO_CANVAS_EVENTS_STROKE"
              glib:nick="stroke">
        <doc xml:space="preserve">the item's perimeter receives events, whether
 it is visible or painted or not.</doc>
      </member>
      <member name="all"
              value="12"
              c:identifier="GOO_CANVAS_EVENTS_ALL"
              glib:nick="all">
        <doc xml:space="preserve">the item's perimeter and interior receive events,
 whether it is visible or painted or not.</doc>
      </member>
    </bitfield>
    <record name="CanvasPoints"
            c:type="GooCanvasPoints"
            glib:type-name="GooCanvasPoints"
            glib:get-type="goo_canvas_points_get_type"
            c:symbol-prefix="canvas_points">
      <doc xml:space="preserve">#GooCairoPoints represents an array of points.</doc>
      <field name="coords" writable="1">
        <doc xml:space="preserve">the coordinates of the points, in pairs.</doc>
        <type name="gdouble" c:type="double*"/>
      </field>
      <field name="num_points" writable="1">
        <doc xml:space="preserve">the number of points.</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="ref_count" writable="1">
        <doc xml:space="preserve">the reference count of the struct.</doc>
        <type name="gint" c:type="int"/>
      </field>
      <constructor name="new" c:identifier="goo_canvas_points_new">
        <doc xml:space="preserve">Creates a new #GooCanvasPoints struct with space for the given number of
points. It should be freed with goo_canvas_points_unref().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GooCanvasPoints struct.</doc>
          <type name="CanvasPoints" c:type="GooCanvasPoints*"/>
        </return-value>
        <parameters>
          <parameter name="num_points" transfer-ownership="none">
            <doc xml:space="preserve">the number of points to create space for.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_point"
              c:identifier="goo_canvas_points_get_point"
              version="2.0.1">
        <doc xml:space="preserve">Gets the coordinates of a point in the #GooCanvasPoints struct.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="points" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasPoints struct.</doc>
            <type name="CanvasPoints" c:type="GooCanvasPoints*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve">index of point to get.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="x"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to store x coordinate.</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="y"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to store y coordinate.</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="goo_canvas_points_ref">
        <doc xml:space="preserve">Increments the reference count of the given #GooCanvasPoints struct.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #GooCanvasPoints struct.</doc>
          <type name="CanvasPoints" c:type="GooCanvasPoints*"/>
        </return-value>
        <parameters>
          <instance-parameter name="points" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasPoints struct.</doc>
            <type name="CanvasPoints" c:type="GooCanvasPoints*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_point"
              c:identifier="goo_canvas_points_set_point"
              version="2.0.1">
        <doc xml:space="preserve">Sets the coordinates of a point in the #GooCanvasPoints struct.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="points" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasPoints struct.</doc>
            <type name="CanvasPoints" c:type="GooCanvasPoints*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve">index of point to set.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">x value to set point coordinate to.</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">y value to set point coordinate to.</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="goo_canvas_points_unref">
        <doc xml:space="preserve">Decrements the reference count of the given #GooCanvasPoints struct,
freeing it if the reference count falls to zero.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="points" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasPoints struct.</doc>
            <type name="CanvasPoints" c:type="GooCanvasPoints*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="CanvasPolyline"
           c:symbol-prefix="canvas_polyline"
           c:type="GooCanvasPolyline"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasPolyline"
           glib:get-type="goo_canvas_polyline_get_type"
           glib:type-struct="CanvasPolylineClass">
      <doc xml:space="preserve">GooCanvasPolyline represents a polyline item, which is a series of one or
more lines, with optional arrows at either end.

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

To create a #GooCanvasPolyline use goo_canvas_polyline_new(), or
goo_canvas_polyline_new_line() for a simple line between two points.

To get or set the properties of an existing #GooCanvasPolyline, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_polyline_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new polyline item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a filled triangle with vertices
at (100,100), (300,100), and (200,300).

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *polyline = goo_canvas_polyline_new (mygroup, TRUE, 3,
                                                    100.0, 100.0,
                                                    300.0, 100.0,
                                                    200.0, 300.0,
                                                    "stroke-color", "red",
                                                    "line-width", 5.0,
                                                    "fill-color", "blue",
                                                    NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new polyline item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="close_path" transfer-ownership="none">
            <doc xml:space="preserve">if the last point should be connected to the first.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="num_points" transfer-ownership="none">
            <doc xml:space="preserve">the number of points in the polyline.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">the pairs of coordinates for each point in the line, followed by
 optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <function name="new_line"
                c:identifier="goo_canvas_polyline_new_line"
                introspectable="0">
        <doc xml:space="preserve">Creates a new polyline item with a single line.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a line from (100,100) to (300,300).

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *polyline = goo_canvas_polyline_new_line (mygroup,
                                                         100.0, 100.0,
                                                         300.0, 300.0,
                                                         "stroke-color", "red",
                                                         "line-width", 5.0,
                                                         NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new polyline item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="x1" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the start of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y1" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the start of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="x2" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the end of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y2" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the end of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="arrow-length" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="arrow-tip-length" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="arrow-width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="close-path" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="end-arrow" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="points" writable="1" transfer-ownership="none">
        <type name="CanvasPoints"/>
      </property>
      <property name="start-arrow" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="polyline_data">
        <type name="CanvasPolylineData" c:type="GooCanvasPolylineData*"/>
      </field>
    </class>
    <record name="CanvasPolylineArrowData" c:type="GooCanvasPolylineArrowData">
      <field name="arrow_width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="arrow_length" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="arrow_tip_length" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="line_start" writable="1">
        <array zero-terminated="0" c:type="gdouble" fixed-size="2">
          <type name="gdouble" c:type="gdouble"/>
        </array>
      </field>
      <field name="line_end" writable="1">
        <array zero-terminated="0" c:type="gdouble" fixed-size="2">
          <type name="gdouble" c:type="gdouble"/>
        </array>
      </field>
      <field name="start_arrow_coords" writable="1">
        <array zero-terminated="0" c:type="gdouble" fixed-size="10">
          <type name="gdouble" c:type="gdouble"/>
        </array>
      </field>
      <field name="end_arrow_coords" writable="1">
        <array zero-terminated="0" c:type="gdouble" fixed-size="10">
          <type name="gdouble" c:type="gdouble"/>
        </array>
      </field>
    </record>
    <record name="CanvasPolylineClass"
            c:type="GooCanvasPolylineClass"
            glib:is-gtype-struct-for="CanvasPolyline">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasPolylineData" c:type="GooCanvasPolylineData">
      <field name="coords" writable="1">
        <type name="gdouble" c:type="gdouble*"/>
      </field>
      <field name="arrow_data" writable="1">
        <type name="CanvasPolylineArrowData"
              c:type="GooCanvasPolylineArrowData*"/>
      </field>
      <field name="num_points" writable="1" bits="16">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="close_path" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="start_arrow" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="end_arrow" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="reconfigure_arrows" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <class name="CanvasPolylineModel"
           c:symbol-prefix="canvas_polyline_model"
           c:type="GooCanvasPolylineModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasPolylineModel"
           glib:get-type="goo_canvas_polyline_model_get_type"
           glib:type-struct="CanvasPolylineModelClass">
      <doc xml:space="preserve">GooCanvasPolylineModel represents a model for polyline items, which are a
series of one or more lines, with optional arrows at either end.

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

To create a #GooCanvasPolylineModel use goo_canvas_polyline_model_new(), or
goo_canvas_polyline_model_new_line() for a simple line between two points.

To get or set the properties of an existing #GooCanvasPolylineModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the polyline you must connect
to the signal handlers of the corresponding #GooCanvasPolyline objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_polyline_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new polyline model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a filled triangle with vertices
at (100,100), (300,100), and (200,300).

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *polyline = goo_canvas_polyline_model_new (mygroup, TRUE, 3,
                                                               100.0, 100.0,
                                                               300.0, 100.0,
                                                               200.0, 300.0,
                                                               "stroke-color", "red",
                                                               "line-width", 5.0,
                                                               "fill-color", "blue",
                                                               NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new polyline model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="close_path" transfer-ownership="none">
            <doc xml:space="preserve">if the last point should be connected to the first.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="num_points" transfer-ownership="none">
            <doc xml:space="preserve">the number of points in the polyline.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">the pairs of coordinates for each point in the line, followed by
 optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <function name="new_line"
                c:identifier="goo_canvas_polyline_model_new_line"
                introspectable="0">
        <doc xml:space="preserve">Creates a new polyline model with a single line.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a line from (100,100) to (300,300).

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *polyline = goo_canvas_polyline_model_new_line (mygroup,
                                                                    100.0, 100.0,
                                                                    300.0, 300.0,
                                                                    "stroke-color", "red",
                                                                    "line-width", 5.0,
                                                                    NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new polyline model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="x1" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the start of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y1" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the start of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="x2" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the end of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y2" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the end of the line.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="arrow-length" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="arrow-tip-length" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="arrow-width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="close-path" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="end-arrow" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="points" writable="1" transfer-ownership="none">
        <type name="CanvasPoints"/>
      </property>
      <property name="start-arrow" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="polyline_data">
        <type name="CanvasPolylineData" c:type="GooCanvasPolylineData"/>
      </field>
    </class>
    <record name="CanvasPolylineModelClass"
            c:type="GooCanvasPolylineModelClass"
            glib:is-gtype-struct-for="CanvasPolylineModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasRect"
           c:symbol-prefix="canvas_rect"
           c:type="GooCanvasRect"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasRect"
           glib:get-type="goo_canvas_rect_get_type"
           glib:type-struct="CanvasRectClass">
      <doc xml:space="preserve">GooCanvasRect represents a rectangle item.

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

To create a #GooCanvasRect use goo_canvas_rect_new().

To get or set the properties of an existing #GooCanvasRect, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_rect_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new rectangle item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a rectangle at (100,100) with a
width of 200 and a height of 100.

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *rect = goo_canvas_rect_new (mygroup, 100.0, 100.0, 200.0, 100.0,
                                            "stroke-color", "red",
                                            "line-width", 5.0,
                                            "fill-color", "blue",
                                            NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new rectangle item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the left of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the top of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="rect_data">
        <type name="CanvasRectData" c:type="GooCanvasRectData*"/>
      </field>
    </class>
    <record name="CanvasRectClass"
            c:type="GooCanvasRectClass"
            glib:is-gtype-struct-for="CanvasRect">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasRectData" c:type="GooCanvasRectData">
      <field name="x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="height" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="radius_x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="radius_y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
    </record>
    <class name="CanvasRectModel"
           c:symbol-prefix="canvas_rect_model"
           c:type="GooCanvasRectModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasRectModel"
           glib:get-type="goo_canvas_rect_model_get_type"
           glib:type-struct="CanvasRectModelClass">
      <doc xml:space="preserve">GooCanvasRectModel represents a model for rectangle items.

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "stroke-color", "fill-color" and "line-width".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

To create a #GooCanvasRectModel use goo_canvas_rect_model_new().

To get or set the properties of an existing #GooCanvasRectModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the rectangle you must connect
to the signal handlers of the corresponding #GooCanvasRect objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_rect_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new rectangle item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a rectangle at (100,100) with a
width of 200 and a height of 100.

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *rect = goo_canvas_rect_model_new (mygroup, 100.0, 100.0, 200.0, 100.0,
                                                       "stroke-color", "red",
                                                       "line-width", 5.0,
                                                       "fill-color", "blue",
                                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new rectangle model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the left of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the top of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the rectangle.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="radius-y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="rect_data">
        <type name="CanvasRectData" c:type="GooCanvasRectData"/>
      </field>
    </class>
    <record name="CanvasRectModelClass"
            c:type="GooCanvasRectModelClass"
            glib:is-gtype-struct-for="CanvasRectModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasStyle"
           c:symbol-prefix="canvas_style"
           c:type="GooCanvasStyle"
           parent="GObject.Object"
           glib:type-name="GooCanvasStyle"
           glib:get-type="goo_canvas_style_get_type"
           glib:type-struct="CanvasStyleClass">
      <doc xml:space="preserve">#GooCanvasStyle provides support for cascading style properties for canvas
items. It is intended to be used when implementing new canvas items.

&lt;note&gt;&lt;para&gt;
	The cascading styles canvas feature may be removed in a future version
     of GooCanvas.
&lt;/para&gt;&lt;/note&gt;

Style properties are identified by a unique #GQuark, and contain
arbitrary data stored in a #GValue.

#GooCanvasStyle also provides a few convenience functions such as
goo_canvas_style_set_stroke_options() and
goo_canvas_style_set_fill_options() which efficiently apply an item's
standard style properties to the given cairo_t.</doc>
      <constructor name="new" c:identifier="goo_canvas_style_new">
        <doc xml:space="preserve">Creates a new #GooCanvasStyle.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GooCanvasStyle.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
      </constructor>
      <method name="copy" c:identifier="goo_canvas_style_copy">
        <doc xml:space="preserve">Copies the given #GooCanvasStyle, by copying all of its properties.
Though the parent of the new style is left unset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a copy of the given #GooCanvasStyle.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasStyle.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent" c:identifier="goo_canvas_style_get_parent">
        <doc xml:space="preserve">Gets the parent of the style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parent of the given style, or %NULL.</doc>
          <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_property" c:identifier="goo_canvas_style_get_property">
        <doc xml:space="preserve">Gets the value of a property.

This searches though all the #GooCanvasStyle's own list of property settings
and also all ancestor #GooCanvasStyle objects.

Note that it returns a pointer to the internal #GValue setting, which should
not be changed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the property value, or %NULL if it isn't set.</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
          <parameter name="property_id" transfer-ownership="none">
            <doc xml:space="preserve">the property identifier.</doc>
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fill_options"
              c:identifier="goo_canvas_style_set_fill_options">
        <doc xml:space="preserve">Sets the standard cairo fill options using the given style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a paint source is set, or %FALSE if the fill should
be skipped.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent" c:identifier="goo_canvas_style_set_parent">
        <doc xml:space="preserve">Sets the parent of the style.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve">the new parent.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_property" c:identifier="goo_canvas_style_set_property">
        <doc xml:space="preserve">Sets a property in the style, replacing any current setting.

Note that this will override the property setting in ancestor
#GooCanvasStyle objects.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
          <parameter name="property_id" transfer-ownership="none">
            <doc xml:space="preserve">the property identifier.</doc>
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value of the property.</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stroke_options"
              c:identifier="goo_canvas_style_set_stroke_options">
        <doc xml:space="preserve">Sets the standard cairo stroke options using the given style.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a paint source is set, or %FALSE if the stroke should
be skipped.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="style" transfer-ownership="none">
            <doc xml:space="preserve">a style.</doc>
            <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
          </instance-parameter>
          <parameter name="cr" transfer-ownership="none">
            <doc xml:space="preserve">a cairo context.</doc>
            <type name="cairo.Context" c:type="cairo_t*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="parent">
        <doc xml:space="preserve">the parent style.</doc>
        <type name="CanvasStyle" c:type="GooCanvasStyle*"/>
      </field>
      <field name="properties">
        <doc xml:space="preserve">an array of #GooCanvasStyleProperty property settings.</doc>
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="CanvasStyleClass"
            c:type="GooCanvasStyleClass"
            glib:is-gtype-struct-for="CanvasStyle">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasStyleProperty" c:type="GooCanvasStyleProperty">
      <doc xml:space="preserve">#GooCanvasStyleProperty represents a property setting.</doc>
      <field name="id" writable="1">
        <doc xml:space="preserve">the unique property identifier.</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </field>
      <field name="value" writable="1">
        <doc xml:space="preserve">the value of the property.</doc>
        <type name="GObject.Value" c:type="GValue"/>
      </field>
    </record>
    <class name="CanvasTable"
           c:symbol-prefix="canvas_table"
           c:type="GooCanvasTable"
           parent="CanvasGroup"
           glib:type-name="GooCanvasTable"
           glib:get-type="goo_canvas_table_get_type"
           glib:type-struct="CanvasTableClass">
      <doc xml:space="preserve">#GooCanvasTable is a table container used to lay out other canvas items.
It is used in a similar way to how the GtkTable widget is used to lay out
GTK+ widgets.

Items are added to the table using the normal methods, then
goo_canvas_item_set_child_properties() is used to specify how each child
item is to be positioned within the table (i.e. which row and column it is
in, how much padding it should have and whether it should expand or
shrink).

#GooCanvasTable is a subclass of #GooCanvasItemSimple and so
inherits all of the style properties such as "stroke-color", "fill-color"
and "line-width". Setting a style property on a #GooCanvasTable will affect
all children of the #GooCanvasTable (unless the children override the
property setting).

#GooCanvasTable implements the #GooCanvasItem interface, so you can use
the #GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate(), and the properties such as "visibility" and
"pointer-events".

To create a #GooCanvasTable use goo_canvas_table_new().

To get or set the properties of an existing #GooCanvasTable, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_table_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new table item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a table with a square, a circle and
a triangle in it:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *table, *square, *circle, *triangle;
 
 table = goo_canvas_table_new (root,
                               "row-spacing", 4.0,
                               "column-spacing", 4.0,
                               NULL);
 goo_canvas_item_translate (table, 400, 200);
 
 square = goo_canvas_rect_new (table, 0.0, 0.0, 50.0, 50.0,
                               "fill-color", "red",
                               NULL);
 goo_canvas_item_set_child_properties (table, square,
                                       "row", 0,
                                       "column", 0,
                                       NULL);
 
 circle = goo_canvas_ellipse_new (table, 0.0, 0.0, 25.0, 25.0,
                                  "fill-color", "blue",
                                  NULL);
 goo_canvas_item_set_child_properties (table, circle,
                                       "row", 0,
                                       "column", 1,
                                       NULL);
 
 triangle = goo_canvas_polyline_new (table, TRUE, 3,
                                     25.0, 0.0, 0.0, 50.0, 50.0, 50.0,
                                     "fill-color", "yellow",
                                     NULL);
 goo_canvas_item_set_child_properties (table, triangle,
                                       "row", 0,
                                       "column", 2,
                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new table item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="column-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="homogeneous-columns"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="homogeneous-rows" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="horz-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="row-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="vert-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x-border-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y-border-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent">
        <type name="CanvasGroup" c:type="GooCanvasGroup"/>
      </field>
      <field name="table_data">
        <type name="CanvasTableData" c:type="GooCanvasTableData*"/>
      </field>
    </class>
    <record name="CanvasTableClass"
            c:type="GooCanvasTableClass"
            glib:is-gtype-struct-for="CanvasTable">
      <field name="parent_class">
        <type name="CanvasGroupClass" c:type="GooCanvasGroupClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasTableData" c:type="GooCanvasTableData">
      <field name="width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="height" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="dimensions" writable="1">
        <array zero-terminated="0"
               c:type="GooCanvasTableDimension"
               fixed-size="2">
          <type name="CanvasTableDimension" c:type="GooCanvasTableDimension"/>
        </array>
      </field>
      <field name="border_width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="children" writable="1">
        <array name="GLib.Array" c:type="GArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="layout_data" writable="1">
        <type name="CanvasTableLayoutData" c:type="GooCanvasTableLayoutData*"/>
      </field>
    </record>
    <record name="CanvasTableDimension" c:type="GooCanvasTableDimension">
      <field name="size" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="default_spacing" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="spacings" writable="1">
        <type name="gdouble" c:type="gdouble*"/>
      </field>
      <field name="homogeneous" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <record name="CanvasTableLayoutData"
            c:type="GooCanvasTableLayoutData"
            disguised="1">
    </record>
    <class name="CanvasTableModel"
           c:symbol-prefix="canvas_table_model"
           c:type="GooCanvasTableModel"
           parent="CanvasGroupModel"
           glib:type-name="GooCanvasTableModel"
           glib:get-type="goo_canvas_table_model_get_type"
           glib:type-struct="CanvasTableModelClass">
      <doc xml:space="preserve">#GooCanvasTableModel is a model for a table container used to lay out other
canvas items. It is used in a similar way to how the GtkTable widget is used
to lay out GTK+ widgets.

Item models are added to the table using the normal methods, then
goo_canvas_item_model_set_child_properties() is used to specify how each
child item is to be positioned within the table (i.e. which row and column
it is in, how much padding it should have and whether it should expand or
shrink).

#GooCanvasTableModel is a subclass of #GooCanvasItemModelSimple and so
inherits all of the style properties such as "stroke-color", "fill-color"
and "line-width". Setting a style property on a #GooCanvasTableModel will
affect all children of the #GooCanvasTableModel (unless the children
override the property setting).

#GooCanvasTableModel implements the #GooCanvasItemModel interface, so you
can use the #GooCanvasItemModel functions such as
goo_canvas_item_model_raise() and goo_canvas_item_rotate(), and the
properties such as "visibility" and "pointer-events".

To create a #GooCanvasTableModel use goo_canvas_table_model_new().

To get or set the properties of an existing #GooCanvasTableModel, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_table_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new table model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a table with a square, a circle and
a triangle in it:

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *table, *square, *circle, *triangle;

 table = goo_canvas_table_model_new (root,
                                     "row-spacing", 4.0,
                                     "column-spacing", 4.0,
                                     NULL);
 goo_canvas_item_model_translate (table, 400, 200);

 square = goo_canvas_rect_model_new (table, 0.0, 0.0, 50.0, 50.0,
                                     "fill-color", "red",
                                     NULL);
 goo_canvas_item_model_set_child_properties (table, square,
                                             "row", 0,
                                             "column", 0,
                                             NULL);

 circle = goo_canvas_ellipse_model_new (table, 0.0, 0.0, 25.0, 25.0,
                                        "fill-color", "blue",
                                        NULL);
 goo_canvas_item_model_set_child_properties (table, circle,
                                             "row", 0,
                                             "column", 1,
                                             NULL);

 triangle = goo_canvas_polyline_model_new (table, TRUE, 3,
                                           25.0, 0.0, 0.0, 50.0, 50.0, 50.0,
                                           "fill-color", "yellow",
                                           NULL);
 goo_canvas_item_model_set_child_properties (table, triangle,
                                             "row", 0,
                                             "column", 2,
                                             NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new table model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="column-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="homogeneous-columns"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="homogeneous-rows" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="horz-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="row-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="vert-grid-line-width"
                writable="1"
                transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x-border-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y-border-spacing" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasGroupModel" c:type="GooCanvasGroupModel"/>
      </field>
      <field name="table_data">
        <type name="CanvasTableData" c:type="GooCanvasTableData"/>
      </field>
    </class>
    <record name="CanvasTableModelClass"
            c:type="GooCanvasTableModelClass"
            glib:is-gtype-struct-for="CanvasTableModel">
      <field name="parent_class">
        <type name="CanvasGroupModelClass" c:type="GooCanvasGroupModelClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasText"
           c:symbol-prefix="canvas_text"
           c:type="GooCanvasText"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasText"
           glib:get-type="goo_canvas_text_get_type"
           glib:type-struct="CanvasTextClass">
      <doc xml:space="preserve">GooCanvasText represents a text item.

It is a subclass of #GooCanvasItemSimple and so inherits all of the style
properties such as "fill-color".

It also implements the #GooCanvasItem interface, so you can use the
#GooCanvasItem functions such as goo_canvas_item_raise() and
goo_canvas_item_rotate().

The #GooCanvasText:width and #GooCanvasText:height properties specify the
area of the item. If it exceeds that area because there is too much text,
it is clipped. The properties can be set to -1 to disable clipping.

To create a #GooCanvasText use goo_canvas_text_new().

To get or set the properties of an existing #GooCanvasText, use
g_object_get() and g_object_set().</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_text_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new text item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a text item with the bottom right
of the text box placed at (500,500):

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItem *text = goo_canvas_text_new (mygroup, "Hello World", 500.0, 500.0, 200.0, GOO_CANVAS_ANCHOR_SE,
                                            "fill-color", "blue",
                                            NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new text item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">the text to display.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the text.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the text.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the text item, or -1 for unlimited width.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="anchor" transfer-ownership="none">
            <doc xml:space="preserve">the position of the text relative to the given @x and @y
 coordinates. For example an anchor of %GDK_ANCHOR_NW will result in the
 top-left of the text being placed at the given @x and @y coordinates.
 An anchor of %GDK_ANCHOR_CENTER will result in the center of the text being
 placed at the @x and @y coordinates.</doc>
            <type name="CanvasAnchorType" c:type="GooCanvasAnchorType"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <method name="get_natural_extents"
              c:identifier="goo_canvas_text_get_natural_extents">
        <doc xml:space="preserve">Gets the natural extents of the text, in the text item's coordinate space.

The final extents of the text may be different, if the text item is placed
in a layout container such as #GooCanvasTable.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve">a #GooCanvasText.</doc>
            <type name="CanvasText" c:type="GooCanvasText*"/>
          </instance-parameter>
          <parameter name="ink_rect" transfer-ownership="none">
            <doc xml:space="preserve">the location to return the ink rect, or %NULL.</doc>
            <type name="Pango.Rectangle" c:type="PangoRectangle*"/>
          </parameter>
          <parameter name="logical_rect" transfer-ownership="none">
            <doc xml:space="preserve">the location to return the logical rect, or %NULL.</doc>
            <type name="Pango.Rectangle" c:type="PangoRectangle*"/>
          </parameter>
        </parameters>
      </method>
      <property name="alignment" writable="1" transfer-ownership="none">
        <type name="Pango.Alignment"/>
      </property>
      <property name="anchor" writable="1" transfer-ownership="none">
        <type name="CanvasAnchorType"/>
      </property>
      <property name="ellipsize" writable="1" transfer-ownership="none">
        <type name="Pango.EllipsizeMode"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="text" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="use-markup" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="wrap" writable="1" transfer-ownership="none">
        <type name="Pango.WrapMode"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="text_data">
        <type name="CanvasTextData" c:type="GooCanvasTextData*"/>
      </field>
      <field name="layout_width">
        <type name="gdouble" c:type="gdouble"/>
      </field>
    </class>
    <record name="CanvasTextClass"
            c:type="GooCanvasTextClass"
            glib:is-gtype-struct-for="CanvasText">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CanvasTextData" c:type="GooCanvasTextData">
      <field name="text" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="x" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="width" writable="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="use_markup" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="anchor" writable="1" bits="5">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="alignment" writable="1" bits="3">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="ellipsize" writable="1" bits="3">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="wrap" writable="1" bits="3">
        <type name="guint" c:type="guint"/>
      </field>
    </record>
    <class name="CanvasTextModel"
           c:symbol-prefix="canvas_text_model"
           c:type="GooCanvasTextModel"
           parent="CanvasItemModelSimple"
           glib:type-name="GooCanvasTextModel"
           glib:get-type="goo_canvas_text_model_get_type"
           glib:type-struct="CanvasTextModelClass">
      <doc xml:space="preserve">GooCanvasTextModel represents a model for text items.

It is a subclass of #GooCanvasItemModelSimple and so inherits all of the
style properties such as "fill-color".

It also implements the #GooCanvasItemModel interface, so you can use the
#GooCanvasItemModel functions such as goo_canvas_item_model_raise() and
goo_canvas_item_model_rotate().

To create a #GooCanvasTextModel use goo_canvas_text_model_new().

To get or set the properties of an existing #GooCanvasTextModel, use
g_object_get() and g_object_set().

To respond to events such as mouse clicks on the text item you must connect
to the signal handlers of the corresponding #GooCanvasText objects.
(See goo_canvas_get_item() and #GooCanvas::item-created.)</doc>
      <implements name="CanvasItemModel"/>
      <function name="new"
                c:identifier="goo_canvas_text_model_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new text model.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create a text item with the bottom right
of the text box placed at (500,500):

&lt;informalexample&gt;&lt;programlisting&gt;
 GooCanvasItemModel *text = goo_canvas_text_model_new (mygroup, "Hello World", 500.0, 500.0, 200.0, GOO_CANVAS_ANCHOR_SE,
                                                       "fill-color", "blue",
                                                       NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new text model.</doc>
          <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent model, or %NULL. If a parent is specified, it will
 assume ownership of the item, and the item will automatically be freed when
 it is removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItemModel" c:type="GooCanvasItemModel*"/>
          </parameter>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">the text to display.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the text.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the text.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the text item, or -1 for unlimited width.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="anchor" transfer-ownership="none">
            <doc xml:space="preserve">the position of the text relative to the given @x and @y
 coordinates. For example an anchor of %GDK_ANCHOR_NW will result in the
 top-left of the text being placed at the given @x and @y coordinates.
 An anchor of %GDK_ANCHOR_CENTER will result in the center of the text being
 placed at the @x and @y coordinates.</doc>
            <type name="CanvasAnchorType" c:type="GooCanvasAnchorType"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="alignment" writable="1" transfer-ownership="none">
        <type name="Pango.Alignment"/>
      </property>
      <property name="anchor" writable="1" transfer-ownership="none">
        <type name="CanvasAnchorType"/>
      </property>
      <property name="ellipsize" writable="1" transfer-ownership="none">
        <type name="Pango.EllipsizeMode"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="text" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="use-markup" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="wrap" writable="1" transfer-ownership="none">
        <type name="Pango.WrapMode"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemModelSimple" c:type="GooCanvasItemModelSimple"/>
      </field>
      <field name="text_data">
        <type name="CanvasTextData" c:type="GooCanvasTextData"/>
      </field>
    </class>
    <record name="CanvasTextModelClass"
            c:type="GooCanvasTextModelClass"
            glib:is-gtype-struct-for="CanvasTextModel">
      <field name="parent_class">
        <type name="CanvasItemModelSimpleClass"
              c:type="GooCanvasItemModelSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="CanvasWidget"
           c:symbol-prefix="canvas_widget"
           c:type="GooCanvasWidget"
           parent="CanvasItemSimple"
           glib:type-name="GooCanvasWidget"
           glib:get-type="goo_canvas_widget_get_type"
           glib:type-struct="CanvasWidgetClass">
      <doc xml:space="preserve">GooCanvasWidget provides support for placing any GtkWidget in the canvas.

The #GooCanvasWidget:width and #GooCanvasWidget:height properties specify
the widget's size. If either of them is -1, then the requested size of the
widget is used instead, which is the default for both width and height.

Note that there are a number of limitations in the use of #GooCanvasWidget:

&lt;itemizedlist&gt;&lt;listitem&gt;&lt;para&gt;
It doesn't support any transformation besides simple translation.
This means you can't scale a canvas with a #GooCanvasWidget in it.
&lt;/para&gt;&lt;/listitem&gt;&lt;listitem&gt;&lt;para&gt;
It doesn't support layering, so you can't place other items beneath
or above the #GooCanvasWidget.
&lt;/para&gt;&lt;/listitem&gt;&lt;listitem&gt;&lt;para&gt;
It doesn't support rendering of widgets to a given cairo_t, which
means you can't output the widget to a pdf or postscript file.
&lt;/para&gt;&lt;/listitem&gt;&lt;listitem&gt;&lt;para&gt;
It doesn't have a model/view variant like the other standard items,
so it can only be used in a simple canvas without a model.
&lt;/para&gt;&lt;/listitem&gt;&lt;listitem&gt;&lt;para&gt;
It can't be made a static item.
&lt;/para&gt;&lt;/listitem&gt;&lt;/itemizedlist&gt;</doc>
      <implements name="CanvasItem"/>
      <function name="new"
                c:identifier="goo_canvas_widget_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new widget item.

&lt;!--PARAMETERS--&gt;

Here's an example showing how to create an entry widget centered at (100.0,
100.0):

&lt;informalexample&gt;&lt;programlisting&gt;
 GtkWidget *entry = gtk_entry_new ();
 GooCanvasItem *witem = goo_canvas_widget_new (mygroup, entry,
                                               100, 100, -1, -1,
                                               "anchor", GOO_CANVAS_ANCHOR_CENTER,
                                               NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new widget item.</doc>
          <type name="CanvasItem" c:type="GooCanvasItem*"/>
        </return-value>
        <parameters>
          <parameter name="parent" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">the parent item, or %NULL. If a parent is specified, it will assume
 ownership of the item, and the item will automatically be freed when it is
 removed from the parent. Otherwise call g_object_unref() to free it.</doc>
            <type name="CanvasItem" c:type="GooCanvasItem*"/>
          </parameter>
          <parameter name="widget" transfer-ownership="none">
            <doc xml:space="preserve">the widget.</doc>
            <type name="Gtk.Widget" c:type="GtkWidget*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">the x coordinate of the item.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">the y coordinate of the item.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width of the item, or -1 to use the widget's requested width.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height of the item, or -1 to use the widget's requested height.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">optional pairs of property names and values, and a terminating %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <property name="anchor" writable="1" transfer-ownership="none">
        <type name="CanvasAnchorType"/>
      </property>
      <property name="height" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="widget" writable="1" transfer-ownership="none">
        <type name="Gtk.Widget"/>
      </property>
      <property name="width" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="x" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="y" writable="1" transfer-ownership="none">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <field name="parent_object">
        <type name="CanvasItemSimple" c:type="GooCanvasItemSimple"/>
      </field>
      <field name="widget">
        <type name="Gtk.Widget" c:type="GtkWidget*"/>
      </field>
      <field name="x">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="width">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="height">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="anchor">
        <type name="CanvasAnchorType" c:type="GooCanvasAnchorType"/>
      </field>
    </class>
    <class name="CanvasWidgetAccessibleFactory"
           c:symbol-prefix="canvas_widget_accessible_factory"
           parent="Atk.ObjectFactory"
           glib:type-name="GooCanvasWidgetAccessibleFactory"
           glib:get-type="goo_canvas_widget_accessible_factory_get_type">
    </class>
    <record name="CanvasWidgetClass"
            c:type="GooCanvasWidgetClass"
            glib:is-gtype-struct-for="CanvasWidget">
      <field name="parent_class">
        <type name="CanvasItemSimpleClass" c:type="GooCanvasItemSimpleClass"/>
      </field>
      <field name="_goo_canvas_reserved1" introspectable="0">
        <callback name="_goo_canvas_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved2" introspectable="0">
        <callback name="_goo_canvas_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved3" introspectable="0">
        <callback name="_goo_canvas_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_goo_canvas_reserved4" introspectable="0">
        <callback name="_goo_canvas_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <function name="cairo_matrix_copy"
              c:identifier="goo_cairo_matrix_copy"
              moved-to="CairoMatrix.copy">
      <return-value transfer-ownership="full">
        <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
      </return-value>
      <parameters>
        <parameter name="matrix" transfer-ownership="none">
          <type name="cairo.Matrix" c:type="const cairo_matrix_t*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cairo_matrix_free"
              c:identifier="goo_cairo_matrix_free"
              moved-to="CairoMatrix.free">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="matrix" transfer-ownership="none">
          <type name="cairo.Matrix" c:type="cairo_matrix_t*"/>
        </parameter>
      </parameters>
    </function>
    <function name="canvas_item_class_find_child_property"
              c:identifier="goo_canvas_item_class_find_child_property"
              moved-to="CanvasItem.class_find_child_property">
      <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout container items such as #GooCanvasTable.

It finds a child property of a canvas item class by name.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the #GParamSpec of the
 child property or %NULL if @class has no child property with that name.</doc>
        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
      </return-value>
      <parameters>
        <parameter name="iclass" transfer-ownership="none">
          <doc xml:space="preserve">a #GObjectClass</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="property_name" transfer-ownership="none">
          <doc xml:space="preserve">the name of the child property to find</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="canvas_item_class_install_child_property"
              c:identifier="goo_canvas_item_class_install_child_property"
              moved-to="CanvasItem.class_install_child_property">
      <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout container items such as #GooCanvasTable.

It installs a child property on a canvas item class.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="iclass" transfer-ownership="none">
          <doc xml:space="preserve">a #GObjectClass</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="property_id" transfer-ownership="none">
          <doc xml:space="preserve">the id for the property</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="pspec" transfer-ownership="none">
          <doc xml:space="preserve">the #GParamSpec for the property</doc>
          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
        </parameter>
      </parameters>
    </function>
    <function name="canvas_item_class_list_child_properties"
              c:identifier="goo_canvas_item_class_list_child_properties"
              moved-to="CanvasItem.class_list_child_properties">
      <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
items, specifically layout container items such as #GooCanvasTable.

It returns all child properties of a canvas item class.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly allocated
 array of #GParamSpec*. The array must be freed with g_free().</doc>
        <array length="1" zero-terminated="0" c:type="GParamSpec**">
          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="iclass" transfer-ownership="none">
          <doc xml:space="preserve">a #GObjectClass</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="n_properties"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">location to return the number of child properties found</doc>
          <type name="guint" c:type="guint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="canvas_item_model_class_find_child_property"
              c:identifier="goo_canvas_item_model_class_find_child_property"
              moved-to="CanvasItemModel.class_find_child_property">
      <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models, specifically layout container item models such as
#GooCanvasTableModel.

It finds a child property of a canvas item class by name.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The #GParamSpec of the child
 property or %NULL if @class has no child property with that name.</doc>
        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
      </return-value>
      <parameters>
        <parameter name="mclass" transfer-ownership="none">
          <doc xml:space="preserve">a #GObjectClass</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="property_name" transfer-ownership="none">
          <doc xml:space="preserve">the name of the child property to find</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="canvas_item_model_class_install_child_property"
              c:identifier="goo_canvas_item_model_class_install_child_property"
              moved-to="CanvasItemModel.class_install_child_property">
      <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models, specifically layout container item models such as
#GooCanvasTableModel.

It installs a child property on a canvas item class.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="mclass" transfer-ownership="none">
          <doc xml:space="preserve">a #GObjectClass</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="property_id" transfer-ownership="none">
          <doc xml:space="preserve">the id for the property</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="pspec" transfer-ownership="none">
          <doc xml:space="preserve">the #GParamSpec for the property</doc>
          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
        </parameter>
      </parameters>
    </function>
    <function name="canvas_item_model_class_list_child_properties"
              c:identifier="goo_canvas_item_model_class_list_child_properties"
              moved-to="CanvasItemModel.class_list_child_properties">
      <doc xml:space="preserve">This function is only intended to be used when implementing new canvas
item models, specifically layout container item models such as
#GooCanvasTableModel.

It returns all child properties of a canvas item class.</doc>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve">
 a newly allocated array of #GParamSpec*. The array must be freed with g_free().</doc>
        <array length="1" zero-terminated="0" c:type="GParamSpec**">
          <type name="GObject.ParamSpec"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="mclass" transfer-ownership="none">
          <doc xml:space="preserve">a #GObjectClass</doc>
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="n_properties"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">location to return the number of child properties found</doc>
          <type name="guint" c:type="guint*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
