;; -*- scheme -*-
; vim:syntax=scheme:sw=2

; object definitions ...

(define-boxed Path
  (in-module "DiaShape")
  (parent "DiaShape")
  (c-name "DiaShapePath")
  (gtype-id "DIA_TYPE_SHAPE_PATH")
)

(define-boxed Bezier
  (in-module "DiaShape")
  (parent "DiaShape")
  (c-name "DiaShapeBezier")
  (gtype-id "DIA_TYPE_SHAPE_BEZIER")
)

(define-boxed Ellipse
  (in-module "DiaShape")
  (parent "DiaShape")
  (c-name "DiaShapeEllipse")
  (gtype-id "DIA_TYPE_SHAPE_ELLIPSE")
)

(define-boxed Text
  (in-module "DiaShape")
  (parent "DiaShape")
  (c-name "DiaShapeText")
  (gtype-id "DIA_TYPE_SHAPE_TEXT")
)

(define-boxed Image
  (in-module "DiaShape")
  (parent "DiaShape")
  (c-name "DiaShapeImage")
  (gtype-id "DIA_TYPE_SHAPE_IMAGE")
)

;; Enumerations and flags ...

(define-enum Type
  (in-module "DiaShape")
  (c-name "DiaShapeType")
  (gtype-id "DIA_TYPE_SHAPE_TYPE")
  (values
    '("none" "DIA_SHAPE_NONE")
    '("path" "DIA_SHAPE_PATH")
    '("bezier" "DIA_SHAPE_BEZIER")
    '("ellipse" "DIA_SHAPE_ELLIPSE")
    '("text" "DIA_SHAPE_TEXT")
    '("image" "DIA_SHAPE_IMAGE")
    '("widget" "DIA_SHAPE_WIDGET")
    '("clip" "DIA_SHAPE_CLIP")
  )
)

(define-enum FillStyle
  (in-module "DiaShape")
  (c-name "DiaFillStyle")
  (gtype-id "DIA_TYPE_FILL_STYLE")
  (values
    '("none" "DIA_FILL_NONE")
    '("solid" "DIA_FILL_SOLID")
  )
)

(define-enum WrapMode
  (in-module "DiaShape")
  (c-name "DiaWrapMode")
  (gtype-id "DIA_TYPE_WRAP_MODE")
  (values
    '("none" "DIA_WRAP_NONE")
    '("char" "DIA_WRAP_CHAR")
    '("word" "DIA_WRAP_WORD")
  )
)

(define-enum ShapeVisibility
  (in-module "DiaShape")
  (c-name "DiaShapeVisibility")
  (gtype-id "DIA_TYPE_SHAPE_VISIBILITY")
  (values
    '("hidden" "DIA_SHAPE_HIDDEN")
    '("visible" "DIA_SHAPE_VISIBLE")
    '("visible-if-selected" "DIA_SHAPE_VISIBLE_IF_SELECTED")
    '("visible-if-focused" "DIA_SHAPE_VISIBLE_IF_FOCUSED")
    '("visible-if-grabbed" "DIA_SHAPE_VISIBLE_IF_GRABBED")
  )
)

(define-enum JoinStyle
  (in-module "DiaShape")
  (c-name "DiaJoinStyle")
  (gtype-id "DIA_TYPE_JOIN_STYLE")
  (values
    '("miter" "DIA_JOIN_MITER")
    '("round" "DIA_JOIN_ROUND")
    '("bevel" "DIA_JOIN_BEVEL")
  )
)

(define-enum CapStyle
  (in-module "DiaShape")
  (c-name "DiaCapStyle")
  (gtype-id "DIA_TYPE_CAP_STYLE")
  (values
    '("butt" "DIA_CAP_BUTT")
    '("round" "DIA_CAP_ROUND")
    '("square" "DIA_CAP_SQUARE")
  )
)

;; From dia-shape.h

(define-function dia_shape_get_type
  (in-module "DiaShape")
  (c-name "dia_shape_get_type")
  (return-type "GType")
)

;(define-function dia_shape_new
;  (is-constructor-of "DiaShape")
;  (c-name "dia_shape_new")
;  (return-type "DiaShape*")
;  (parameters
;    '("DiaShapeType" "type")
;  )
;)

;(define-method free
;  (of-object "DiaShape")
;  (c-name "dia_shape_free")
;  (return-type "none")
;)

; DiaShapePath

(define-function dia_shape_path_new
  (is-constructor-of "DiaShapePath")
  (c-name "dia_shape_path_new")
  (return-type "DiaShape*")
)

(define-method line
  (of-object "DiaShapePath")
  (c-name "dia_shape_line")
  (return-type "none")
  (parameters
    '("DiaPoint*" "start")
    '("DiaPoint*" "end")
  )
)

(define-method rectangle
  (of-object "DiaShapePath")
  (c-name "dia_shape_rectangle")
  (return-type "none")
  (parameters
    '("DiaPoint*" "upper_left")
    '("DiaPoint*" "lower_right")
  )
)

;(define-method polyline
;  (of-object "DiaShapePath")
;  (c-name "dia_shape_polyline")
;  (return-type "none")
;  (parameters
;    '("guint" "n_points")
;    '("DiaPoint*" "points")
;  )
;)

(define-method polygon
  (of-object "DiaShapePath")
  (c-name "dia_shape_polygon")
  (return-type "none")
  (parameters
    '("guint" "n_points")
    '("DiaPoint*" "points")
  )
)

(define-method arc
  (of-object "DiaShapePath")
  (c-name "dia_shape_arc")
  (return-type "none")
  (parameters
    '("DiaPoint*" "begin")
    '("DiaPoint*" "middle")
    '("DiaPoint*" "end")
  )
)

(define-method request_update
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_request_update")
  (return-type "none")
)

(define-method need_update
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_need_update")
  (return-type "gboolean")
)

(define-method set_visibility
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_visibility")
  (return-type "none")
  (parameters
    '("DiaShapeVisibility" "vis")
  )
)

(define-method get_bounds
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_get_bounds")
  (return-type "gboolean")
  (parameters
    '("DiaRectangle*" "bb")
  )
)

(define-method set_color
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_color")
  (return-type "none")
  (parameters
    '("gulong" "color")
  )
)

(define-method set_fill_color
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_fill_color")
  (return-type "none")
  (parameters
    '("gulong" "fill_color")
  )
)

(define-method set_line_width
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_line_width")
  (return-type "none")
  (parameters
    '("gdouble" "line_width")
  )
)

(define-method set_join
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_join")
  (return-type "none")
  (parameters
    '("DiaJoinStyle" "join")
  )
)

(define-method set_cap
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_cap")
  (return-type "none")
  (parameters
    '("DiaCapStyle" "cap")
  )
)

(define-method set_fill
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_fill")
  (return-type "none")
  (parameters
    '("DiaFillStyle" "fill")
  )
)


(define-method set_cyclic
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_cyclic")
  (return-type "none")
  (parameters
    '("gboolean" "cyclic")
  )
)

(define-method set_clipping
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_clipping")
  (return-type "none")
  (parameters
    '("gboolean" "clipping")
  )
)

(define-method set_dash
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_set_dash")
  (return-type "none")
  (parameters
    '("gdouble" "offset")
    '("guint" "n_dash")
    '("gdouble*" "dash")
  )
)

(define-method is_clip_path
  (of-object "DiaShapePath")
  (c-name "dia_shape_path_is_clip_path")
  (return-type "gboolean")
)

; DiaShapeBezier

(define-function dia_shape_bezier_new
  (is-constructor-of "DiaShapeBezier")
  (c-name "dia_shape_bezier_new")
  (return-type "DiaShape*")
)

(define-method bezier
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier")
  (return-type "none")
  (parameters
    '("DiaPoint*" "start")
    '("guint" "n_points")
    '("DiaPoint*" "points")
  )
)

(define-method request_update
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_request_update")
  (return-type "none")
)

(define-method need_update
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_need_update")
  (return-type "gboolean")
)

(define-method set_visibility
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_visibility")
  (return-type "none")
  (parameters
    '("DiaShapeVisibility" "vis")
  )
)

(define-method get_bounds
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_get_bounds")
  (return-type "gboolean")
  (parameters
    '("DiaRectangle*" "bb")
  )
)

(define-method set_color
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_color")
  (return-type "none")
  (parameters
    '("gulong" "color")
  )
)

(define-method set_fill_color
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_fill_color")
  (return-type "none")
  (parameters
    '("gulong" "fill_color")
  )
)

(define-method set_fill
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_fill")
  (return-type "none")
  (parameters
    '("DiaFillStyle" "fill")
  )
)

(define-method set_line_width
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_line_width")
  (return-type "none")
  (parameters
    '("gdouble" "line_width")
  )
)

(define-method set_join
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_join")
  (return-type "none")
  (parameters
    '("DiaJoinStyle" "join")
  )
)

(define-method set_cap
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_cap")
  (return-type "none")
  (parameters
    '("DiaCapStyle" "cap")
  )
)

(define-method set_cyclic
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_cyclic")
  (return-type "none")
  (parameters
    '("gboolean" "cyclic")
  )
)

(define-method set_clipping
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_clipping")
  (return-type "none")
  (parameters
    '("gboolean" "clipping")
  )
)

(define-method set_dash
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_set_dash")
  (return-type "none")
  (parameters
    '("gdouble" "offset")
    '("guint" "n_dash")
    '("gdouble*" "dash")
  )
)

(define-method is_clip_path
  (of-object "DiaShapeBezier")
  (c-name "dia_shape_bezier_is_clip_path")
  (return-type "gboolean")
)

; DiaShapeEllipse

(define-function dia_shape_ellipse_new
  (is-constructor-of "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_new")
  (return-type "DiaShape*")
)

(define-method ellipse
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse")
  (return-type "none")
  (parameters
    '("DiaPoint*" "center")
    '("gdouble" "width")
    '("gdouble" "height")
  )
)

(define-method request_update
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_request_update")
  (return-type "none")
)

(define-method need_update
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_need_update")
  (return-type "gboolean")
)

(define-method set_visibility
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_set_visibility")
  (return-type "none")
  (parameters
    '("DiaShapeVisibility" "vis")
  )
)

(define-method get_bounds
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_get_bounds")
  (return-type "gboolean")
  (parameters
    '("DiaRectangle*" "bb")
  )
)

(define-method set_color
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_set_color")
  (return-type "none")
  (parameters
    '("gulong" "color")
  )
)

(define-method set_fill_color
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_set_fill_color")
  (return-type "none")
  (parameters
    '("gulong" "fill_color")
  )
)

(define-method set_line_width
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_set_line_width")
  (return-type "none")
  (parameters
    '("gdouble" "line_width")
  )
)

(define-method set_fill
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_set_fill")
  (return-type "none")
  (parameters
    '("DiaFillStyle" "fill")
  )
)

(define-method set_clipping
  (of-object "DiaShapeEllipse")
  (c-name "dia_shape_ellipse_set_clipping")
  (return-type "none")
  (parameters
    '("gboolean" "clipping")
  )
)

; DiaShapeText

(define-function dia_shape_text_new
  (is-constructor-of "DiaShapeText")
  (c-name "dia_shape_text_new")
  (return-type "DiaShape*")
)

(define-method text
  (of-object "DiaShapeText")
  (c-name "dia_shape_text")
  (return-type "none")
  (parameters
    '("PangoFontDescription*" "font_desc" (null-ok))
    '("const-gchar*" "text")
  )
)

(define-method request_update
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_request_update")
  (return-type "none")
)

(define-method need_update
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_need_update")
  (return-type "gboolean")
)

(define-method set_visibility
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_visibility")
  (return-type "none")
  (parameters
    '("DiaShapeVisibility" "vis")
  )
)

(define-method get_bounds
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_get_bounds")
  (return-type "gboolean")
  (parameters
    '("DiaRectangle*" "bb")
  )
)

(define-method set_color
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_color")
  (return-type "none")
  (parameters
    '("gulong" "color")
  )
)

(define-method set_font_description
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_font_description")
  (return-type "none")
  (parameters
    '("PangoFontDescription*" "font_desc")
  )
)

(define-method set_text
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_text")
  (return-type "none")
  (parameters
    '("const-gchar*" "text")
  )
)

(define-method set_markup
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_markup")
  (return-type "none")
  (parameters
    '("gboolean" "markup")
  )
)

;(define-method text_set_static_text
;  (of-object "DiaShape")
;  (c-name "dia_shape_text_set_static_text")
;  (return-type "none")
;  (parameters
;    '("const-gchar*" "text")
;  )
;)

(define-method set_affine
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_affine")
  (return-type "none")
  (parameters
    '("gdouble[6]" "affine")
  )
)

(define-method set_pos
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_pos")
  (return-type "none")
  (parameters
    '("DiaPoint*" "pos")
  )
)

(define-method set_max_width
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_max_width")
  (return-type "none")
  (parameters
    '("gdouble" "width")
  )
)

(define-method set_max_height
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_max_height")
  (return-type "none")
  (parameters
    '("gdouble" "height")
  )
)

(define-method set_text_width
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_text_width")
  (return-type "none")
  (parameters
    '("gdouble" "width")
  )
)

(define-method set_line_spacing
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_line_spacing")
  (return-type "none")
  (parameters
    '("gdouble" "line_spacing")
  )
)

(define-method set_justify
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_justify")
  (return-type "none")
  (parameters
    '("gboolean" "justify")
  )
)

(define-method set_wrap_mode
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_wrap_mode")
  (return-type "none")
  (parameters
    '("DiaWrapMode" "wrap_mode")
  )
)

(define-method set_alignment
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_set_alignment")
  (return-type "none")
  (parameters
    '("PangoAlignment" "alignment")
  )
)

(define-method to_pango_layout
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_to_pango_layout")
  (return-type "PangoLayout*")
  (parameters
    '("gboolean" "fill")
  )
)

(define-method fill_pango_layout
  (of-object "DiaShapeText")
  (c-name "dia_shape_text_fill_pango_layout")
  (return-type "none")
  (parameters
    '("PangoLayout*" "layout")
  )
)

; DiaShapeImage

(define-function dia_shape_image_new
  (is-constructor-of "DiaShapeImage")
  (c-name "dia_shape_image_new")
  (return-type "DiaShape*")
)

(define-method image
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image")
  (return-type "none")
  (parameters
    '("GdkPixbuf*" "image")
  )
)

(define-method request_update
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image_request_update")
  (return-type "none")
)

(define-method need_update
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image_need_update")
  (return-type "gboolean")
)

(define-method set_visibility
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image_set_visibility")
  (return-type "none")
  (parameters
    '("DiaShapeVisibility" "vis")
  )
)

(define-method get_bounds
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image_get_bounds")
  (return-type "gboolean")
  (parameters
    '("DiaRectangle*" "bb")
  )
)

(define-method set_affine
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image_set_affine")
  (return-type "none")
  (parameters
    '("gdouble[6]" "affine")
  )
)

(define-method set_pos
  (of-object "DiaShapeImage")
  (c-name "dia_shape_image_set_pos")
  (return-type "none")
  (parameters
    '("DiaPoint*" "pos")
  )
)

;(define-method is_updated
;  (of-object "DiaShape")
;  (c-name "dia_shape_is_updated")
;  (return-type "none")
;)

;(define-method get_view_info
;  (of-object "DiaShape")
;  (c-name "dia_shape_get_view_info")
;  (return-type "DiaShapeViewInfo*")
;  (parameters
;    '("gpointer" "key")
;  )
;)

;(define-method clear
;  (of-object "DiaShapeViewInfo")
;  (c-name "dia_shape_view_info_clear")
;  (return-type "none")
;)

;(define-method view_info_remove
;  (of-object "DiaShape")
;  (c-name "dia_shape_view_info_remove")
;  (return-type "none")
;  (parameters
;    '("DiaShapeViewInfo*" "view_info")
;  )
;)

