;; -*- scheme -*-
; object definitions ...
(define-object Canvas
  (in-module "Goo")
  (parent "GtkContainer")
  (c-name "GooCanvas")
  (gtype-id "GOO_TYPE_CANVAS")
)

(define-interface Item
  (in-module "Goo")
  (c-name "GooCanvasItem")
  (gtype-id "GOO_TYPE_CANVAS_ITEM")
)

(define-interface ItemModel
  (in-module "Goo")
  (c-name "GooCanvasItemModel")
  (gtype-id "GOO_TYPE_CANVAS_ITEM_MODEL")
)

(define-object ItemModelSimple
  (in-module "Goo")
  (parent "GObject")
  (c-name "GooCanvasItemModelSimple")
  (gtype-id "GOO_TYPE_CANVAS_ITEM_MODEL_SIMPLE")
)

(define-object GridModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasGridModel")
  (gtype-id "GOO_TYPE_CANVAS_GRID_MODEL")
)

(define-object ImageModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasImageModel")
  (gtype-id "GOO_TYPE_CANVAS_IMAGE_MODEL")
)

(define-object GroupModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasGroupModel")
  (gtype-id "GOO_TYPE_CANVAS_GROUP_MODEL")
)

(define-object EllipseModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasEllipseModel")
  (gtype-id "GOO_TYPE_CANVAS_ELLIPSE_MODEL")
)

(define-object ItemSimple
  (in-module "Goo")
  (parent "GObject")
  (c-name "GooCanvasItemSimple")
  (gtype-id "GOO_TYPE_CANVAS_ITEM_SIMPLE")
  (fields
   ("double" "bounds.x1")
   ("double" "bounds.x2")
   ("double" "bounds.y1")
   ("double" "bounds.y2")
   ("GooCanvasBounds" "bounds"))
)

(define-object Grid
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasGrid")
  (gtype-id "GOO_TYPE_CANVAS_GRID")
)

(define-object Image
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasImage")
  (gtype-id "GOO_TYPE_CANVAS_IMAGE")
)

(define-object Group
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasGroup")
  (gtype-id "GOO_TYPE_CANVAS_GROUP")
)

(define-object Ellipse
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasEllipse")
  (gtype-id "GOO_TYPE_CANVAS_ELLIPSE")
)

(define-object Path
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasPath")
  (gtype-id "GOO_TYPE_CANVAS_PATH")
)

(define-object PathModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasPathModel")
  (gtype-id "GOO_TYPE_CANVAS_PATH_MODEL")
)

(define-boxed Points
  (in-module "Goo")
  (c-name "GooCanvasPoints")
  (gtype-id "GOO_TYPE_CANVAS_POINTS")
  (copy-func "goo_canvas_points_ref")
  (release-func "goo_canvas_points_unref")
  (fields
   ("double*" "coords")
   ("int" "num_points"))
)

(define-object Polyline
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasPolyline")
  (gtype-id "GOO_TYPE_CANVAS_POLYLINE")
)

(define-object PolylineModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasPolylineModel")
  (gtype-id "GOO_TYPE_CANVAS_POLYLINE_MODEL")
)

(define-object Rect
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasRect")
  (gtype-id "GOO_TYPE_CANVAS_RECT")
)

(define-object RectModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasRectModel")
  (gtype-id "GOO_TYPE_CANVAS_RECT_MODEL")
)

(define-object Style
  (in-module "Goo")
  (parent "GObject")
  (c-name "GooCanvasStyle")
  (gtype-id "GOO_TYPE_CANVAS_STYLE")
)

(define-object Table
  (in-module "Goo")
  (parent "GooCanvasGroup")
  (c-name "GooCanvasTable")
  (gtype-id "GOO_TYPE_CANVAS_TABLE")
)

(define-object TableModel
  (in-module "Goo")
  (parent "GooCanvasGroupModel")
  (c-name "GooCanvasTableModel")
  (gtype-id "GOO_TYPE_CANVAS_TABLE_MODEL")
)

(define-object Text
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasText")
  (gtype-id "GOO_TYPE_CANVAS_TEXT")
)

(define-object TextModel
  (in-module "Goo")
  (parent "GooCanvasItemModelSimple")
  (c-name "GooCanvasTextModel")
  (gtype-id "GOO_TYPE_CANVAS_TEXT_MODEL")
)

(define-object Widget
  (in-module "Goo")
  (parent "GooCanvasItemSimple")
  (c-name "GooCanvasWidget")
  (gtype-id "GOO_TYPE_CANVAS_WIDGET")
)

;; Enumerations and flags ...

(define-enum AnimateType
  (in-module "Goo")
  (c-name "GooCanvasAnimateType")
  (gtype-id "GOO_TYPE_CANVAS_ANIMATE_TYPE")
  (values
    '("freeze" "GOO_CANVAS_ANIMATE_FREEZE")
    '("reset" "GOO_CANVAS_ANIMATE_RESET")
    '("restart" "GOO_CANVAS_ANIMATE_RESTART")
    '("bounce" "GOO_CANVAS_ANIMATE_BOUNCE")
  )
)
(define-enum PathCommandType
  (in-module "Goo")
  (c-name "GooCanvasPathCommandType")
  ;(gtype-id "GOO_TYPE_CANVAS_PATH_COMMAND_TYPE")
  (values
    '("move-to" "GOO_CANVAS_PATH_MOVE_TO")
    '("close-path" "GOO_CANVAS_PATH_CLOSE_PATH")
    '("line-to" "GOO_CANVAS_PATH_LINE_TO")
    '("horizontal-line-to" "GOO_CANVAS_PATH_HORIZONTAL_LINE_TO")
    '("vertical-line-to" "GOO_CANVAS_PATH_VERTICAL_LINE_TO")
    '("curve-to" "GOO_CANVAS_PATH_CURVE_TO")
    '("smooth-curve-to" "GOO_CANVAS_PATH_SMOOTH_CURVE_TO")
    '("quadratic-curve-to" "GOO_CANVAS_PATH_QUADRATIC_CURVE_TO")
    '("smooth-quadratic-curve-to" "GOO_CANVAS_PATH_SMOOTH_QUADRATIC_CURVE_TO")
    '("elliptical-arc" "GOO_CANVAS_PATH_ELLIPTICAL_ARC")
  )
)

(define-flags PointerEvents
  (in-module "Goo")
  (c-name "GooCanvasPointerEvents")
  (gtype-id "GOO_TYPE_CANVAS_POINTER_EVENTS")
  (values
    '("visible-mask" "GOO_CANVAS_EVENTS_VISIBLE_MASK")
    '("painted-mask" "GOO_CANVAS_EVENTS_PAINTED_MASK")
    '("fill-mask" "GOO_CANVAS_EVENTS_FILL_MASK")
    '("stroke-mask" "GOO_CANVAS_EVENTS_STROKE_MASK")
    '("none" "GOO_CANVAS_EVENTS_NONE")
    '("visible-painted" "GOO_CANVAS_EVENTS_VISIBLE_PAINTED")
    '("visible-fill" "GOO_CANVAS_EVENTS_VISIBLE_FILL")
    '("visible-stroke" "GOO_CANVAS_EVENTS_VISIBLE_STROKE")
    '("visible" "GOO_CANVAS_EVENTS_VISIBLE")
    '("painted" "GOO_CANVAS_EVENTS_PAINTED")
    '("fill" "GOO_CANVAS_EVENTS_FILL")
    '("stroke" "GOO_CANVAS_EVENTS_STROKE")
    '("all" "GOO_CANVAS_EVENTS_ALL")
  )
)

(define-enum ItemVisibility
  (in-module "Goo")
  (c-name "GooCanvasItemVisibility")
  (gtype-id "GOO_TYPE_CANVAS_ITEM_VISIBILITY")
  (values
    '("hidden" "GOO_CANVAS_ITEM_HIDDEN")
    '("visible" "GOO_CANVAS_ITEM_VISIBLE")
    '("visible-above-threshold" "GOO_CANVAS_ITEM_VISIBLE_ABOVE_THRESHOLD")
    '("invisible" "GOO_CANVAS_ITEM_INVISIBLE")
  )
)


;; From goocanvas.h

(define-function goo_canvas_get_type
  (c-name "goo_canvas_get_type")
  (return-type "GType")
)

(define-function goo_canvas_new
  (c-name "goo_canvas_new")
  (is-constructor-of "GooCanvas")
  (return-type "GtkWidget*")
)

(define-method get_root_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_root_item")
  (return-type "GooCanvasItem*")
)

(define-method set_root_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_set_root_item")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
  )
)

(define-method get_root_item_model
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_root_item_model")
  (return-type "GooCanvasItemModel*")
)

(define-method set_root_item_model
  (of-object "GooCanvas")
  (c-name "goo_canvas_set_root_item_model")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-method get_static_root_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_static_root_item")
  (return-type "GooCanvasItem*")
)

(define-method set_static_root_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_set_static_root_item")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
  )
)

(define-method get_static_root_item_model
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_static_root_item_model")
  (return-type "GooCanvasItemModel*")
)

(define-method set_static_root_item_model
  (of-object "GooCanvas")
  (c-name "goo_canvas_set_static_root_item_model")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-method get_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_item")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-method get_item_at
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_item_at")
  (return-type "GooCanvasItem*")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("gboolean" "is_pointer_event")
  )
)

(define-method get_items_at
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_items_at")
  (return-type "GList*")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("gboolean" "is_pointer_event")
  )
)

(define-method get_items_in_area
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_items_in_area")
  (return-type "GList*")
  (parameters
    '("GooCanvasBounds*" "area")
    '("gboolean" "inside_area")
    '("gboolean" "allow_overlaps")
    '("gboolean" "include_containers")
  )
)

(define-method get_scale
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_scale")
  (return-type "gdouble")
)

(define-method set_scale
  (of-object "GooCanvas")
  (c-name "goo_canvas_set_scale")
  (return-type "none")
  (parameters
    '("gdouble" "pixels_per_unit")
  )
)

(define-method get_bounds
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_bounds")
  (return-type "none")
  (parameters
    '("gdouble*" "left")
    '("gdouble*" "top")
    '("gdouble*" "right")
    '("gdouble*" "bottom")
  )
)

(define-method set_bounds
  (of-object "GooCanvas")
  (c-name "goo_canvas_set_bounds")
  (return-type "none")
  (parameters
    '("gdouble" "left")
    '("gdouble" "top")
    '("gdouble" "right")
    '("gdouble" "bottom")
  )
)

(define-method scroll_to
  (of-object "GooCanvas")
  (c-name "goo_canvas_scroll_to")
  (return-type "none")
  (parameters
    '("gdouble" "left")
    '("gdouble" "top")
  )
)

(define-method grab_focus
  (of-object "GooCanvas")
  (c-name "goo_canvas_grab_focus")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
  )
)

(define-method render
  (of-object "GooCanvas")
  (c-name "goo_canvas_render")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds" (null-ok) (default "NULL"))
    '("gdouble" "scale"  (default "1.0"))
  )
)

(define-method convert_to_pixels
  (of-object "GooCanvas")
  (c-name "goo_canvas_convert_to_pixels")
  (return-type "none")
  (parameters
    '("gdouble*" "x")
    '("gdouble*" "y")
  )
)

(define-method convert_from_pixels
  (of-object "GooCanvas")
  (c-name "goo_canvas_convert_from_pixels")
  (return-type "none")
  (parameters
    '("gdouble*" "x")
    '("gdouble*" "y")
  )
)

(define-method convert_to_item_space
  (of-object "GooCanvas")
  (c-name "goo_canvas_convert_to_item_space")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
    '("gdouble*" "x")
    '("gdouble*" "y")
  )
)

(define-method convert_from_item_space
  (of-object "GooCanvas")
  (c-name "goo_canvas_convert_from_item_space")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
    '("gdouble*" "x")
    '("gdouble*" "y")
  )
)

(define-method convert_bounds_to_item_space
  (of-object "GooCanvas")
  (c-name "goo_canvas_convert_bounds_to_item_space")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method pointer_grab
  (of-object "GooCanvas")
  (c-name "goo_canvas_pointer_grab")
  (return-type "GdkGrabStatus")
  (parameters
    '("GooCanvasItem*" "item")
    '("GdkEventMask" "event_mask")
    '("GdkCursor*" "cursor" (null-ok))
    '("guint32" "time")
  )
)

(define-method pointer_ungrab
  (of-object "GooCanvas")
  (c-name "goo_canvas_pointer_ungrab")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
    '("guint32" "time")
  )
)

(define-method keyboard_grab
  (of-object "GooCanvas")
  (c-name "goo_canvas_keyboard_grab")
  (return-type "GdkGrabStatus")
  (parameters
    '("GooCanvasItem*" "item")
    '("gboolean" "owner_events")
    '("guint32" "time")
  )
)

(define-method keyboard_ungrab
  (of-object "GooCanvas")
  (c-name "goo_canvas_keyboard_ungrab")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
    '("guint32" "time")
  )
)

(define-method create_cairo_context
  (of-object "GooCanvas")
  (c-name "goo_canvas_create_cairo_context")
  (return-type "cairo_t*")
)

(define-method create_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_create_item")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-method unregister_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_unregister_item")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-method update
  (of-object "GooCanvas")
  (c-name "goo_canvas_update")
  (return-type "none")
)

(define-method request_update
  (of-object "GooCanvas")
  (c-name "goo_canvas_request_update")
  (return-type "none")
)

(define-method request_redraw
  (of-object "GooCanvas")
  (c-name "goo_canvas_request_redraw")
  (return-type "none")
  (parameters
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method request_item_redraw
  (of-object "GooCanvas")
  (c-name "goo_canvas_request_item_redraw")
  (return-type "none")
  (parameters
    '("const-GooCanvasBounds*" "bounds")
    '("gboolean" "is_static")
  )
)

(define-method get_default_line_width
  (of-object "GooCanvas")
  (c-name "goo_canvas_get_default_line_width")
  (return-type "gdouble")
)

(define-method register_widget_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_register_widget_item")
  (return-type "none")
  (parameters
    '("GooCanvasWidget*" "witem")
  )
)

(define-method unregister_widget_item
  (of-object "GooCanvas")
  (c-name "goo_canvas_unregister_widget_item")
  (return-type "none")
  (parameters
    '("GooCanvasWidget*" "witem")
  )
)

(define-virtual set_scroll_adjustments
  (of-object "GooCanvas")
  (return-type "none")
  (parameters
    '("GtkAdjustment*" "hadjustment")
    '("GtkAdjustment*" "vadjustment")
  )
)
(define-virtual create_item
  (of-object "GooCanvas")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)
(define-virtual item_created
  (of-object "GooCanvas")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "item")
    '("GooCanvasItemModel*" "model")
  )
)


;; From goocanvasellipse.h

(define-function goo_canvas_ellipse_get_type
  (c-name "goo_canvas_ellipse_get_type")
  (return-type "GType")
)

(define-function goo_canvas_ellipse_new
  (c-name "goo_canvas_ellipse_new")
  (is-constructor-of "GooCanvasEllipse")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("gdouble" "center_x")
    '("gdouble" "center_y")
    '("gdouble" "radius_x")
    '("gdouble" "radius_y")
  )
  (varargs #t)
)

(define-function goo_canvas_ellipse_model_get_type
  (c-name "goo_canvas_ellipse_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_ellipse_model_new
  (c-name "goo_canvas_ellipse_model_new")
  (is-constructor-of "GooCanvasEllipseModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("gdouble" "center_x")
    '("gdouble" "center_y")
    '("gdouble" "radius_x")
    '("gdouble" "radius_y")
  )
  (varargs #t)
)



;; From goocanvasenumtypes.h

(define-function goo_canvas_animate_type_get_type
  (c-name "goo_canvas_animate_type_get_type")
  (return-type "GType")
)

(define-function goo_canvas_path_command_type_get_type
  (c-name "goo_canvas_path_command_type_get_type")
  (return-type "GType")
)

(define-function goo_canvas_pointer_events_get_type
  (c-name "goo_canvas_pointer_events_get_type")
  (return-type "GType")
)

(define-function goo_canvas_item_visibility_get_type
  (c-name "goo_canvas_item_visibility_get_type")
  (return-type "GType")
)



;; From goocanvasgrid.h

(define-function goo_canvas_grid_get_type
  (c-name "goo_canvas_grid_get_type")
  (return-type "GType")
)

(define-function goo_canvas_grid_new
  (c-name "goo_canvas_grid_new")
  (is-constructor-of "GooCanvasGrid")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("gdouble" "height")
    '("gdouble" "x_step")
    '("gdouble" "y_step")
    '("gdouble" "x_offset")
    '("gdouble" "y_offset")
  )
  (varargs #t)
)

(define-function goo_canvas_grid_model_get_type
  (c-name "goo_canvas_grid_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_grid_model_new
  (c-name "goo_canvas_grid_model_new")
  (is-constructor-of "GooCanvasGridModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("gdouble" "height")
    '("gdouble" "x_step")
    '("gdouble" "y_step")
    '("gdouble" "x_offset")
    '("gdouble" "y_offset")
  )
  (varargs #t)
)



;; From goocanvasgroup.h

(define-function goo_canvas_group_get_type
  (c-name "goo_canvas_group_get_type")
  (return-type "GType")
)

(define-function goo_canvas_group_new
  (c-name "goo_canvas_group_new")
  (is-constructor-of "GooCanvasGroup")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
  )
  (varargs #t)
)

(define-function goo_canvas_group_model_get_type
  (c-name "goo_canvas_group_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_group_model_new
  (c-name "goo_canvas_group_model_new")
  (is-constructor-of "GooCanvasGroupModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
  )
  (varargs #t)
)



;; From goocanvasimage.h

(define-function goo_canvas_image_get_type
  (c-name "goo_canvas_image_get_type")
  (return-type "GType")
)

(define-function goo_canvas_image_new
  (c-name "goo_canvas_image_new")
  (is-constructor-of "GooCanvasImage")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("GdkPixbuf*" "pixbuf")
    '("gdouble" "x")
    '("gdouble" "y")
  )
  (varargs #t)
)

(define-function goo_canvas_image_model_get_type
  (c-name "goo_canvas_image_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_image_model_new
  (c-name "goo_canvas_image_model_new")
  (is-constructor-of "GooCanvasImageModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("GdkPixbuf*" "pixbuf")
    '("gdouble" "x")
    '("gdouble" "y")
  )
  (varargs #t)
)



;; From goocanvasitem.h

(define-function goo_canvas_item_get_type
  (c-name "goo_canvas_item_get_type")
  (return-type "GType")
)

(define-method get_n_children
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_n_children")
  (return-type "gint")
)

(define-method get_child
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_child")
  (return-type "GooCanvasItem*")
  (parameters
    '("gint" "child_num")
  )
)

(define-method find_child
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_find_child")
  (return-type "gint")
  (parameters
    '("GooCanvasItem*" "child")
  )
)

(define-method add_child
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_add_child")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("gint" "position" (default "-1"))
  )
)

(define-method move_child
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_move_child")
  (return-type "none")
  (parameters
    '("gint" "old_position")
    '("gint" "new_position")
  )
)

(define-method remove_child
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_remove_child")
  (return-type "none")
  (parameters
    '("gint" "child_num")
  )
)

(define-method get_child_property
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_child_property")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("const-gchar*" "property_name")
    '("GValue*" "value")
  )
)

(define-method set_child_property
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_child_property")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("const-gchar*" "property_name")
    '("const-GValue*" "value")
  )
)

(define-method get_child_properties
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_child_properties")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
  )
  (varargs #t)
)

(define-method set_child_properties
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_child_properties")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
  )
  (varargs #t)
)

(define-method get_child_properties_valist
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_child_properties_valist")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("va_list" "var_args")
  )
)

(define-method set_child_properties_valist
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_child_properties_valist")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("va_list" "var_args")
  )
)

(define-method get_transform_for_child
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_transform_for_child")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "child")
    '("cairo_matrix_t*" "transform")
  )
)

(define-method get_canvas
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_canvas")
  (return-type "GooCanvas*")
)

(define-method set_canvas
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_canvas")
  (return-type "none")
  (parameters
    '("GooCanvas*" "canvas")
  )
)

(define-method get_parent
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_parent")
  (return-type "GooCanvasItem*")
)

(define-method set_parent
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_parent")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "parent")
  )
)

(define-method remove
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_remove")
  (return-type "none")
)

(define-method is_container
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_is_container")
  (return-type "gboolean")
)

(define-method raise
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_raise")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "above" (null-ok))
  )
)

(define-method lower
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_lower")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "below" (null-ok))
  )
)

(define-method get_transform
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_transform")
  (return-type "gboolean")
  (parameters
    '("cairo_matrix_t*" "transform")
  )
)

(define-method set_transform
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_transform")
  (return-type "none")
  (parameters
    '("cairo_matrix_t*" "matrix")
  )
)

(define-method get_simple_transform
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_simple_transform")
  (return-type "gboolean")
  (parameters
    '("gdouble*" "x")
    '("gdouble*" "y")
    '("gdouble*" "scale")
    '("gdouble*" "rotation")
  )
)

(define-method set_simple_transform
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_simple_transform")
  (return-type "none")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "scale")
    '("gdouble" "rotation")
  )
)

(define-method translate
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_translate")
  (return-type "none")
  (parameters
    '("double" "tx")
    '("double" "ty")
  )
)

(define-method scale
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_scale")
  (return-type "none")
  (parameters
    '("double" "sx")
    '("double" "sy")
  )
)

(define-method rotate
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_rotate")
  (return-type "none")
  (parameters
    '("double" "degrees")
    '("double" "cx")
    '("double" "cy")
  )
)

(define-method skew_x
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_skew_x")
  (return-type "none")
  (parameters
    '("double" "degrees")
    '("double" "cx")
    '("double" "cy")
  )
)

(define-method skew_y
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_skew_y")
  (return-type "none")
  (parameters
    '("double" "degrees")
    '("double" "cx")
    '("double" "cy")
  )
)

(define-method get_style
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_style")
  (return-type "GooCanvasStyle*")
)

(define-method set_style
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_style")
  (return-type "none")
  (parameters
    '("GooCanvasStyle*" "style")
  )
)

(define-method animate
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_animate")
  (return-type "none")
  (parameters
    '("double" "x")
    '("double" "y")
    '("double" "scale")
    '("double" "degrees")
    '("gboolean" "absolute")
    '("gint" "duration")
    '("gint" "step_time")
    '("GooCanvasAnimateType" "type")
  )
)

(define-method stop_animation
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_stop_animation")
  (return-type "none")
)

(define-method get_bounds
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_bounds")
  (return-type "none")
  (parameters
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method get_items_at
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_items_at")
  (return-type "GList*")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("cairo_t*" "cr")
    '("gboolean" "is_pointer_event")
    '("gboolean" "parent_is_visible")
    '("GList*" "found_items")
  )
)

(define-method is_visible
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_is_visible")
  (return-type "gboolean")
)

(define-method get_model
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_model")
  (return-type "GooCanvasItemModel*")
)

(define-method set_model
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_set_model")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-method request_update
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_request_update")
  (return-type "none")
)

(define-method ensure_updated
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_ensure_updated")
  (return-type "none")
)

(define-method update
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_update")
  (return-type "none")
  (parameters
    '("gboolean" "entire_tree")
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method paint
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_paint")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds" (null-ok) (default "NULL"))
    '("gdouble" "scale" (default "1.0"))
  )
)

(define-method get_requested_area
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_requested_area")
  (return-type "gboolean")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "requested_area")
  )
)

(define-method get_requested_height
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_get_requested_height")
  (return-type "gdouble")
  (parameters
    '("cairo_t*" "cr")
    '("gdouble" "width")
  )
)

(define-method allocate_area
  (of-object "GooCanvasItem")
  (c-name "goo_canvas_item_allocate_area")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "requested_area")
    '("GooCanvasBounds*" "allocated_area")
    '("gdouble" "x_offset")
    '("gdouble" "y_offset")
  )
)

(define-function goo_canvas_item_class_install_child_property
  (c-name "goo_canvas_item_class_install_child_property")
  (return-type "none")
  (parameters
    '("GObjectClass*" "iclass")
    '("guint" "property_id")
    '("GParamSpec*" "pspec")
  )
)

(define-function goo_canvas_item_class_find_child_property
  (c-name "goo_canvas_item_class_find_child_property")
  (return-type "GParamSpec*")
  (parameters
    '("GObjectClass*" "iclass")
    '("const-gchar*" "property_name")
  )
)

(define-function goo_canvas_item_class_list_child_properties
  (c-name "goo_canvas_item_class_list_child_properties")
  (return-type "GParamSpec**")
  (parameters
    '("GObjectClass*" "iclass")
    '("guint*" "n_properties")
  )
)


(define-virtual get_canvas
  (of-object "GooCanvasItem")
  (return-type "GooCanvas*")
)
(define-virtual set_canvas
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvas*" "canvas")
  )
)
(define-virtual get_n_children
  (of-object "GooCanvasItem")
  (return-type "gint")
)
(define-virtual get_child
  (of-object "GooCanvasItem")
  (return-type "GooCanvasItem*")
  (parameters
    '("gint" "child_num")
  )
)
(define-virtual request_update
  (of-object "GooCanvasItem")
  (return-type "none")
)
(define-virtual add_child
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("gint" "position")
  )
)
(define-virtual move_child
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("gint" "old_position")
    '("gint" "new_position")
  )
)
(define-virtual remove_child
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("gint" "child_num")
  )
)
(define-virtual get_child_property
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("guint" "property_id")
    '("GValue*" "value")
    '("GParamSpec*" "pspec")
  )
)
(define-virtual set_child_property
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "child")
    '("guint" "property_id")
    '("const-GValue*" "value")
    '("GParamSpec*" "pspec")
  )
)
(define-virtual get_transform_for_child
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "child")
    '("cairo_matrix_t*" "transform")
  )
)
(define-virtual get_parent
  (of-object "GooCanvasItem")
  (return-type "GooCanvasItem*")
)
(define-virtual set_parent
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasItem*" "parent")
  )
)
(define-virtual get_bounds
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasBounds*" "bounds")
  )
)
(define-virtual get_items_at
  (of-object "GooCanvasItem")
  (return-type "GList*")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("cairo_t*" "cr")
    '("gboolean" "is_pointer_event")
    '("gboolean" "parent_is_visible")
    '("GList*" "found_items")
  )
)
(define-virtual update
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("gboolean" "entire_tree")
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds")
  )
)
(define-virtual paint
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("const-GooCanvasBounds*" "bounds")
    '("gdouble" "scale")
  )
)
(define-virtual get_requested_area
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "requested_area")
  )
)
(define-virtual allocate_area
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("const-GooCanvasBounds*" "requested_area")
    '("const-GooCanvasBounds*" "allocated_area")
    '("gdouble" "x_offset")
    '("gdouble" "y_offset")
  )
)
(define-virtual get_transform
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("cairo_matrix_t*" "transform")
  )
)
(define-virtual set_transform
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("cairo_matrix_t*" "matrix")
  )
)
(define-virtual get_style
  (of-object "GooCanvasItem")
  (return-type "GooCanvasStyle*")
)
(define-virtual set_style
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasStyle*" "style")
  )
)
(define-virtual is_visible
  (of-object "GooCanvasItem")
  (return-type "gboolean")
)
(define-virtual get_requested_height
  (of-object "GooCanvasItem")
  (return-type "gdouble")
  (parameters
    '("cairo_t*" "cr")
    '("gdouble" "width")
  )
)
(define-virtual get_model
  (of-object "GooCanvasItem")
  (return-type "GooCanvasItemModel*")
)
(define-virtual set_model
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)
(define-virtual enter_notify_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventCrossing*" "event")
  )
)
(define-virtual leave_notify_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventCrossing*" "event")
  )
)
(define-virtual motion_notify_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventMotion*" "event")
  )
)
(define-virtual button_press_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventButton*" "event")
  )
)
(define-virtual button_release_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventButton*" "event")
  )
)
(define-virtual focus_in_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventFocus*" "event")
  )
)
(define-virtual focus_out_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventFocus*" "event")
  )
)
(define-virtual key_press_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventKey*" "event")
  )
)
(define-virtual key_release_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventKey*" "event")
  )
)
(define-virtual grab_broken_event
  (of-object "GooCanvasItem")
  (return-type "gboolean")
  (parameters
    '("GooCanvasItem*" "target")
    '("GdkEventGrabBroken*" "event")
  )
)
(define-virtual child_notify
  (of-object "GooCanvasItem")
  (return-type "none")
  (parameters
    '("GParamSpec*" "pspec")
  )
)

;; From goocanvasitemmodel.h

(define-function goo_canvas_item_model_get_type
  (c-name "goo_canvas_item_model_get_type")
  (return-type "GType")
)

(define-method get_n_children
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_n_children")
  (return-type "gint")
)

(define-method get_child
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_child")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("gint" "child_num")
  )
)

(define-method add_child
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_add_child")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("gint" "position")
  )
)

(define-method move_child
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_move_child")
  (return-type "none")
  (parameters
    '("gint" "old_position")
    '("gint" "new_position")
  )
)

(define-method remove_child
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_remove_child")
  (return-type "none")
  (parameters
    '("gint" "child_num")
  )
)

(define-method find_child
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_find_child")
  (return-type "gint")
  (parameters
    '("GooCanvasItemModel*" "child")
  )
)

(define-method get_child_property
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_child_property")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("const-gchar*" "property_name")
    '("GValue*" "value")
  )
)

(define-method set_child_property
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_child_property")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("const-gchar*" "property_name")
    '("const-GValue*" "value")
  )
)

(define-method get_child_properties
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_child_properties")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
  )
  (varargs #t)
)

(define-method set_child_properties
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_child_properties")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
  )
  (varargs #t)
)

(define-method get_child_properties_valist
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_child_properties_valist")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("va_list" "var_args")
  )
)

(define-method set_child_properties_valist
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_child_properties_valist")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("va_list" "var_args")
  )
)

(define-method get_parent
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_parent")
  (return-type "GooCanvasItemModel*")
)

(define-method set_parent
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_parent")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "parent")
  )
)

(define-method remove
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_remove")
  (return-type "none")
)

(define-method is_container
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_is_container")
  (return-type "gboolean")
)

(define-method raise
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_raise")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "above")
  )
)

(define-method lower
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_lower")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "below")
  )
)

(define-method get_transform
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_transform")
  (return-type "gboolean")
  (parameters
    '("cairo_matrix_t*" "transform")
  )
)

(define-method set_transform
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_transform")
  (return-type "none")
  (parameters
    '("cairo_matrix_t*" "matrix")
  )
)

(define-method get_simple_transform
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_simple_transform")
  (return-type "gboolean")
  (parameters
    '("gdouble*" "x")
    '("gdouble*" "y")
    '("gdouble*" "scale")
    '("gdouble*" "rotation")
  )
)

(define-method set_simple_transform
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_simple_transform")
  (return-type "none")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "scale")
    '("gdouble" "rotation")
  )
)

(define-method translate
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_translate")
  (return-type "none")
  (parameters
    '("double" "tx")
    '("double" "ty")
  )
)

(define-method scale
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_scale")
  (return-type "none")
  (parameters
    '("double" "sx")
    '("double" "sy")
  )
)

(define-method rotate
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_rotate")
  (return-type "none")
  (parameters
    '("double" "degrees")
    '("double" "cx")
    '("double" "cy")
  )
)

(define-method skew_x
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_skew_x")
  (return-type "none")
  (parameters
    '("double" "degrees")
    '("double" "cx")
    '("double" "cy")
  )
)

(define-method skew_y
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_skew_y")
  (return-type "none")
  (parameters
    '("double" "degrees")
    '("double" "cx")
    '("double" "cy")
  )
)

(define-method get_style
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_get_style")
  (return-type "GooCanvasStyle*")
)

(define-method set_style
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_set_style")
  (return-type "none")
  (parameters
    '("GooCanvasStyle*" "style")
  )
)

(define-method animate
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_animate")
  (return-type "none")
  (parameters
    '("double" "x")
    '("double" "y")
    '("double" "scale")
    '("double" "degrees")
    '("gboolean" "absolute")
    '("gint" "duration")
    '("gint" "step_time")
    '("GooCanvasAnimateType" "type")
  )
)

(define-method stop_animation
  (of-object "GooCanvasItemModel")
  (c-name "goo_canvas_item_model_stop_animation")
  (return-type "none")
)

(define-function goo_canvas_item_model_class_install_child_property
  (c-name "goo_canvas_item_model_class_install_child_property")
  (return-type "none")
  (parameters
    '("GObjectClass*" "mclass")
    '("guint" "property_id")
    '("GParamSpec*" "pspec")
  )
)

(define-function goo_canvas_item_model_class_find_child_property
  (c-name "goo_canvas_item_model_class_find_child_property")
  (return-type "GParamSpec*")
  (parameters
    '("GObjectClass*" "mclass")
    '("const-gchar*" "property_name")
  )
)

(define-function goo_canvas_item_model_class_list_child_properties
  (c-name "goo_canvas_item_model_class_list_child_properties")
  (return-type "GParamSpec**")
  (parameters
    '("GObjectClass*" "mclass")
    '("guint*" "n_properties")
  )
)

(define-virtual get_n_children
  (of-object "GooCanvasItemModel")
  (return-type "gint")
)
(define-virtual get_child
  (of-object "GooCanvasItemModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("gint" "child_num")
  )
)
(define-virtual add_child
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("gint" "position")
  )
)
(define-virtual move_child
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("gint" "old_position")
    '("gint" "new_position")
  )
)
(define-virtual remove_child
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("gint" "child_num")
  )
)
(define-virtual get_child_property
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("guint" "property_id")
    '("GValue*" "value")
    '("GParamSpec*" "pspec")
  )
)
(define-virtual set_child_property
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "child")
    '("guint" "property_id")
    '("const-GValue*" "value")
    '("GParamSpec*" "pspec")
  )
)
(define-virtual get_parent
  (of-object "GooCanvasItemModel")
  (return-type "GooCanvasItemModel*")
)
(define-virtual set_parent
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "parent")
  )
)
(define-virtual get_transform
  (of-object "GooCanvasItemModel")
  (return-type "gboolean")
  (parameters
    '("cairo_matrix_t*" "transform")
  )
)
(define-virtual set_transform
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("cairo_matrix_t*" "matrix")
  )
)
(define-virtual get_style
  (of-object "GooCanvasItemModel")
  (return-type "GooCanvasStyle*")
)
(define-virtual set_style
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("GooCanvasStyle*" "style")
  )
)
(define-virtual create_item
  (of-object "GooCanvasItemModel")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvas*" "canvas")
  )
)
(define-virtual child_added
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("gint" "child_num")
  )
)
(define-virtual child_moved
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("gint" "old_child_num")
    '("gint" "new_child_num")
  )
)
(define-virtual child_removed
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("gint" "child_num")
  )
)
(define-virtual changed
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("gboolean" "recompute_bounds")
  )
)
(define-virtual child_notify
  (of-object "GooCanvasItemModel")
  (return-type "none")
  (parameters
    '("GParamSpec*" "pspec")
  )
)


;; From goocanvasitemsimple.h

(define-function goo_canvas_item_simple_get_type
  (c-name "goo_canvas_item_simple_get_type")
  (return-type "GType")
)

(define-method get_path_bounds
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_get_path_bounds")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method user_bounds_to_device
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_user_bounds_to_device")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method user_bounds_to_parent
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_user_bounds_to_parent")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("GooCanvasBounds*" "bounds")
  )
)

(define-method check_in_path
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_check_in_path")
  (return-type "gboolean")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("cairo_t*" "cr")
    '("GooCanvasPointerEvents" "pointer_events")
  )
)

(define-method paint_path
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_paint_path")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
  )
)

(define-method changed
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_changed")
  (return-type "none")
  (parameters
    '("gboolean" "recompute_bounds")
  )
)

(define-method check_style
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_check_style")
  (return-type "none")
)

(define-method get_line_width
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_get_line_width")
  (return-type "gdouble")
)

(define-method set_model
  (of-object "GooCanvasItemSimple")
  (c-name "goo_canvas_item_simple_set_model")
  (return-type "none")
  (parameters
    '("GooCanvasItemModel*" "model")
  )
)

(define-function goo_canvas_item_model_simple_get_type
  (c-name "goo_canvas_item_model_simple_get_type")
  (return-type "GType")
)


(define-virtual simple_create_path
  (of-object "GooCanvasItemSimple")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
  )
)
(define-virtual simple_update
  (of-object "GooCanvasItemSimple")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
  )
)
(define-virtual simple_paint
  (of-object "GooCanvasItemSimple")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
    '("const-GooCanvasBounds*" "bounds")
  )
)
(define-virtual simple_is_item_at
  (of-object "GooCanvasItemSimple")
  (return-type "gboolean")
  (parameters
    '("gdouble" "x")
    '("gdouble" "y")
    '("cairo_t*" "cr")
    '("gboolean" "is_pointer_event")
  )
)

;; From goocanvasmarshal.h



;; From goocanvaspath.h

(define-function goo_canvas_path_get_type
  (c-name "goo_canvas_path_get_type")
  (return-type "GType")
)

(define-function goo_canvas_path_new
  (c-name "goo_canvas_path_new")
  (is-constructor-of "GooCanvasPath")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("const-gchar*" "path_data")
  )
  (varargs #t)
)

(define-function goo_canvas_path_model_get_type
  (c-name "goo_canvas_path_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_path_model_new
  (c-name "goo_canvas_path_model_new")
  (is-constructor-of "GooCanvasPathModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("const-gchar*" "path_data")
  )
  (varargs #t)
)



;; From goocanvaspolyline.h

(define-function goo_canvas_points_get_type
  (c-name "goo_canvas_points_get_type")
  (return-type "GType")
)

(define-function goo_canvas_points_new
  (c-name "goo_canvas_points_new")
  (is-constructor-of "GooCanvasPoints")
  (return-type "GooCanvasPoints*")
  (parameters
    '("int" "num_points")
  )
)

(define-method ref
  (of-object "GooCanvasPoints")
  (c-name "goo_canvas_points_ref")
  (return-type "GooCanvasPoints*")
)

(define-method unref
  (of-object "GooCanvasPoints")
  (c-name "goo_canvas_points_unref")
  (return-type "none")
)

(define-function goo_canvas_polyline_get_type
  (c-name "goo_canvas_polyline_get_type")
  (return-type "GType")
)

(define-function goo_canvas_polyline_new
  (c-name "goo_canvas_polyline_new")
  (is-constructor-of "GooCanvasPolyline")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("gboolean" "close_path")
    '("gint" "num_points")
  )
  (varargs #t)
)

(define-function polyline_new_line
  (c-name "goo_canvas_polyline_new_line")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("gdouble" "x1")
    '("gdouble" "y1")
    '("gdouble" "x2")
    '("gdouble" "y2")
  )
  (varargs #t)
)

(define-function goo_canvas_polyline_model_get_type
  (c-name "goo_canvas_polyline_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_polyline_model_new
  (c-name "goo_canvas_polyline_model_new")
  (is-constructor-of "GooCanvasPolylineModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("gboolean" "close_path")
    '("gint" "num_points")
  )
  (varargs #t)
)

(define-function polyline_model_new_line
  (c-name "goo_canvas_polyline_model_new_line")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("gdouble" "x1")
    '("gdouble" "y1")
    '("gdouble" "x2")
    '("gdouble" "y2")
  )
  (varargs #t)
)



;; From goocanvasrect.h

(define-function goo_canvas_rect_get_type
  (c-name "goo_canvas_rect_get_type")
  (return-type "GType")
)

(define-function goo_canvas_rect_new
  (c-name "goo_canvas_rect_new")
  (is-constructor-of "GooCanvasRect")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("gdouble" "height")
  )
  (varargs #t)
)

(define-function goo_canvas_rect_model_get_type
  (c-name "goo_canvas_rect_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_rect_model_new
  (c-name "goo_canvas_rect_model_new")
  (is-constructor-of "GooCanvasRectModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("gdouble" "height")
  )
  (varargs #t)
)



;; From goocanvasstyle.h

(define-function goo_canvas_style_get_type
  (c-name "goo_canvas_style_get_type")
  (return-type "GType")
)

(define-function goo_canvas_style_new
  (c-name "goo_canvas_style_new")
  (is-constructor-of "GooCanvasStyle")
  (return-type "GooCanvasStyle*")
)

(define-method copy
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_copy")
  (return-type "GooCanvasStyle*")
)

(define-method get_parent
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_get_parent")
  (return-type "GooCanvasStyle*")
)

(define-method set_parent
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_set_parent")
  (return-type "none")
  (parameters
    '("GooCanvasStyle*" "parent")
  )
)

(define-method get_style_property
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_get_property")
  (return-type "GValue*")
  (parameters
    '("GQuark" "property_id")
  )
)

(define-method set_style_property
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_set_property")
  (return-type "none")
  (parameters
    '("GQuark" "property_id")
    '("const-GValue*" "value")
  )
)

(define-method set_stroke_options
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_set_stroke_options")
  (return-type "gboolean")
  (parameters
    '("cairo_t*" "cr")
  )
)

(define-method set_fill_options
  (of-object "GooCanvasStyle")
  (c-name "goo_canvas_style_set_fill_options")
  (return-type "gboolean")
  (parameters
    '("cairo_t*" "cr")
  )
)



;; From goocanvastable.h

(define-function goo_canvas_table_get_type
  (c-name "goo_canvas_table_get_type")
  (return-type "GType")
)

(define-function goo_canvas_table_new
  (c-name "goo_canvas_table_new")
  (is-constructor-of "GooCanvasTable")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
  )
  (varargs #t)
)

(define-function goo_canvas_table_model_get_type
  (c-name "goo_canvas_table_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_table_model_new
  (c-name "goo_canvas_table_model_new")
  (is-constructor-of "GooCanvasTableModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
  )
  (varargs #t)
)



;; From goocanvastext.h

(define-function goo_canvas_text_get_type
  (c-name "goo_canvas_text_get_type")
  (return-type "GType")
)

(define-function goo_canvas_text_new
  (c-name "goo_canvas_text_new")
  (is-constructor-of "GooCanvasText")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("const-char*" "string")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("GtkAnchorType" "anchor")
  )
  (varargs #t)
)

(define-method get_natural_extents
  (of-object "GooCanvasText")
  (c-name "goo_canvas_text_get_natural_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-function goo_canvas_text_model_get_type
  (c-name "goo_canvas_text_model_get_type")
  (return-type "GType")
)

(define-function goo_canvas_text_model_new
  (c-name "goo_canvas_text_model_new")
  (is-constructor-of "GooCanvasTextModel")
  (return-type "GooCanvasItemModel*")
  (parameters
    '("GooCanvasItemModel*" "parent")
    '("const-char*" "string")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("GtkAnchorType" "anchor")
  )
  (varargs #t)
)



;; From goocanvasutils.h

(define-function goo_canvas_parse_path_data
  (c-name "goo_canvas_parse_path_data")
  (return-type "GArray*")
  (parameters
    '("const-gchar*" "path_data")
  )
)

(define-function goo_canvas_create_path
  (c-name "goo_canvas_create_path")
  (return-type "none")
  (parameters
    '("GArray*" "commands")
    '("cairo_t*" "cr")
  )
)

(define-function goo_canvas_line_dash_get_type
  (c-name "goo_canvas_line_dash_get_type")
  (return-type "GType")
)

(define-function goo_canvas_line_dash_new
  (c-name "goo_canvas_line_dash_new")
  (is-constructor-of "GooCanvasLineDash")
  (return-type "GooCanvasLineDash*")
  (parameters
    '("gint" "num_dashes")
  )
  (varargs #t)
)

(define-boxed LineDash
  (in-module "Goo")
  (c-name "GooCanvasLineDash")
  (gtype-id "GOO_TYPE_CANVAS_LINE_DASH")
)

(define-function goo_canvas_line_dash_newv
  (c-name "goo_canvas_line_dash_newv")
  (is-constructor-of "GooCanvasLineDash")
  (return-type "GooCanvasLineDash*")
  (parameters
    '("gint" "num_dashes")
    '("double*" "dashes")
  )
)

(define-method ref
  (of-object "GooCanvasLineDash")
  (c-name "goo_canvas_line_dash_ref")
  (return-type "GooCanvasLineDash*")
)

(define-method unref
  (of-object "GooCanvasLineDash")
  (c-name "goo_canvas_line_dash_unref")
  (return-type "none")
)

(define-function goo_cairo_matrix_get_type
  (c-name "goo_cairo_matrix_get_type")
  (return-type "GType")
)

(define-function goo_cairo_matrix_copy
  (c-name "goo_cairo_matrix_copy")
  (return-type "cairo_matrix_t*")
  (parameters
    '("cairo_matrix_t*" "matrix")
  )
)

(define-function goo_cairo_matrix_free
  (c-name "goo_cairo_matrix_free")
  (return-type "none")
  (parameters
    '("cairo_matrix_t*" "matrix")
  )
)

(define-function goo_cairo_pattern_get_type
  (c-name "goo_cairo_pattern_get_type")
  (return-type "GType")
)

(define-function goo_cairo_fill_rule_get_type
  (c-name "goo_cairo_fill_rule_get_type")
  (return-type "GType")
)

(define-function goo_cairo_operator_get_type
  (c-name "goo_cairo_operator_get_type")
  (return-type "GType")
)

(define-function goo_cairo_antialias_get_type
  (c-name "goo_cairo_antialias_get_type")
  (return-type "GType")
)

(define-function goo_cairo_line_cap_get_type
  (c-name "goo_cairo_line_cap_get_type")
  (return-type "GType")
)

(define-function goo_cairo_line_join_get_type
  (c-name "goo_cairo_line_join_get_type")
  (return-type "GType")
)



;; From goocanvaswidget.h

(define-function goo_canvas_widget_get_type
  (c-name "goo_canvas_widget_get_type")
  (return-type "GType")
)

(define-function goo_canvas_widget_new
  (c-name "goo_canvas_widget_new")
  (is-constructor-of "GooCanvasWidget")
  (return-type "GooCanvasItem*")
  (parameters
    '("GooCanvasItem*" "parent")
    '("GtkWidget*" "widget")
    '("gdouble" "x")
    '("gdouble" "y")
    '("gdouble" "width")
    '("gdouble" "height")
  )
  (varargs #t)
)
