(define-boxed Attribute
  (in-module "Pango")
  (c-name "PangoAttribute")
  (copy-func "pango_attribute_copy")
  (release-func "pango_attribute_destroy")
  (fields
    '("guint" "start_index")
    '("guint" "end_index")
  )
)

(define-method copy
  (of-object "PangoAttribute")
  (c-name "pango_attribute_copy")
  (return-type "PangoAttribute*")
)

(define-method destroy
  (of-object "PangoAttribute")
  (c-name "pango_attribute_destroy")
  (return-type "none")
)

(define-method equal
  (of-object "PangoAttribute")
  (c-name "pango_attribute_equal")
  (return-type "gboolean")
  (parameters
    '("const-PangoAttribute*" "attr2")
  )
)

(define-function pango_attribute_new_language
  (c-name "pango_attr_language_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("PangoLanguage*" "language")
  )
)

;;(define-function AttrFamily
;;  (c-name "pango_attr_family_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("const-char*" "family")
;;  )
;;)

(define-function pango_attribute_new_foreground
  (c-name "pango_attr_foreground_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

(define-function pango_attribute_new_background
  (c-name "pango_attr_background_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

(define-function pango_attribute_new_size
  (c-name "pango_attr_size_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("int" "size")
  )
)

;;(define-function AttrSizeAbsolute
;;  (c-name "pango_attr_size_new_absolute")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("int" "size")
;;  )
;;)

(define-function pango_attribute_new_style
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_style_new")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("PangoStyle" "style")
  )
)

(define-function pango_attribute_new_weight
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_weight_new")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("PangoWeight" "weight")
  )
)

(define-function pango_attribute_new_variant
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_variant_new")
  (return-type "PangoAttribute*")
  (caller-owns-return #t)
  (parameters
    '("PangoVariant" "variant")
  )
)

;;(define-function AttrStretch
;;  (c-name "pango_attr_stretch_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("PangoStretch" "stretch")
;;  )
;;)

(define-function pango_attribute_new_font_description
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_font_desc_new")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("const-PangoFontDescription*" "desc")
  )
)

(define-function pango_attribute_new_underline
  (c-name "pango_attr_underline_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("PangoUnderline" "underline")
  )
)

(define-function pango_attribute_new_underline_color
  (c-name "pango_attr_underline_color_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

;;(define-function AttrStrikethrough
;;  (c-name "pango_attr_strikethrough_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("gboolean" "strikethrough")
;;  )
;;)
;;
;;(define-function AttrStrikethroughColor
;;  (c-name "pango_attr_strikethrough_color_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("guint16" "red")
;;    '("guint16" "green")
;;    '("guint16" "blue")
;;  )
;;)
;;

(define-function pango_attribute_new_rise
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_rise_new")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("int" "rise")
  )
)

;;(define-function AttrScale
;;  (c-name "pango_attr_scale_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("double" "scale_factor")
;;  )
;;)

(define-function pango_attr_new_fallback
  (c-name "pango_attr_fallback_new")
  (is-constructor-of "PangoAttribute")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("gboolean" "fallback")
  )
)

;;(define-function AttrLetterSpacing
;;  (c-name "pango_attr_letter_spacing_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("int" "letter_spacing")
;;  )
;;)
;;
;;(define-function AttrShape
;;  (c-name "pango_attr_shape_new")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("const-PangoRectangle*" "ink_rect")
;;    '("const-PangoRectangle*" "logical_rect")
;;  )
;;)
;;
;;(define-function attr_shape_new_with_data
;;  (c-name "pango_attr_shape_new_with_data")
;;  (return-type "PangoAttribute*")
;;  (parameters
;;    '("const-PangoRectangle*" "ink_rect")
;;    '("const-PangoRectangle*" "logical_rect")
;;    '("gpointer" "data")
;;    '("PangoAttrDataCopyFunc" "copy_func")
;;    '("GDestroyNotify" "destroy_func")
;;  )
;;)

(define-function pango_attribute_new_gravity
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_gravity_new")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("PangoGravity" "gravity")
  )
)

(define-function pango_attribute_new_gravity_hint
  (is-constructor-of "PangoAttribute")
  (c-name "pango_attr_gravity_hint_new")
  (caller-owns-return #t)
  (return-type "PangoAttribute*")
  (parameters
    '("PangoGravityHint" "hint")
  )
)

