; gdk-pixbuf.defs    -*- lisp -*-

(import "gdk.defs")

(define-boxed GdkPixbuf
  (copy gdk_pixbuf_ref)
  (free gdk_pixbuf_unref))

(define-enum GdkColorspace
  (rgb GDK_COLORSPACE_RGB))

(define-enum GdkPixbufAlphaMode
  (bilevel GDK_PIXBUF_ALPHA_BILEVEL)
  (full GDK_PIXBUF_ALPHA_FULL))

(define-enum GdkInterpType
  (nearest GDK_INTERP_NEAREST)
  (tiles GDK_INTERP_TILES)
  (bilinear GDK_INTERP_BILINEAR)
  (hyper GDK_INTERP_HYPER))

;;; accessors

(define-func gdk_pixbuf_get_colorspace
  GdkColorspace
  ((GdkPixbuf pixbuf)))

(define-func gdk_pixbuf_get_n_channels
  int
  ((GdkPixbuf pixbuf)))

(define-func gdk_pixbuf_get_has_alpha
  bool
  ((GdkPixbuf pixbuf)))

(define-func gdk_pixbuf_get_bits_per_sample
  int
  ((GdkPixbuf pixbuf)))

;(define-func gdk_pixbuf_get_pixels
;  ??
;  ((GdkPixbuf pixbuf)))

(define-func gdk_pixbuf_get_width
  int
  ((GdkPixbuf pixbuf)))

(define-func gdk_pixbuf_get_height
  int
  ((GdkPixbuf pixbuf)))

(define-func gdk_pixbuf_get_rowstride
  int
  ((GdkPixbuf pixbuf)))

;;; creation

(define-func gdk_pixbuf_new
  (GdkPixbuf (copy nil))
  ((GdkColorspace colorspace)
   (bool has_alpha)
   (int bits_per_sample)
   (int width)
   (int height)))

(define-func gdk_pixbuf_copy
  (GdkPixbuf (copy nil))
  ((GdkPixbuf pixbuf)))

;;; loading

(define-func gdk_pixbuf_new_from_file
  (GdkPixbuf (copy nil))
  ((string filename)
   ;; XXX fix this
   (pointer gerror (= "0"))))

;why the fuck was this changed to take a const char **?
;(define-func gdk_pixbuf_new_from_xpm_data
;  (GdkPixbuf (copy nil))
;  ((string data)))

;;; manipulation

(define-func gdk_pixbuf_add_alpha
  (GdkPixbuf (copy nil))
  ((GdkPixbuf pixbuf)
   (bool subst_color)
   (uint r)
   (uint g)
   (uint b)))

(define-func gdk_pixbuf_copy_area
  none
  ((GdkPixbuf src_pixbuf)
   (int src_x)
   (int src_y)
   (int width)
   (int height)
   (GdkPixbuf dest_pixbuf)
   (int dest_x)
   (int dest_y)))

;(define-func gdk_pixbuf_render_threshold_alpha
;  none
;  ((GdkPixbuf pixbuf)
;   (GdkBitmap bitmap)
;   (int src_x)
;   (int src_y)
;   (int dest_x)
;   (int dest_y)
;   (int width)
;   (int height)
;   (int alpha_threshold)))

;(define-func gdk_pixbuf_render_to_drawable
;  none
;  ((GdkPixbuf pixbuf)
;   (GdkDrawable drawable)
;   (GdkGC gc)
;   (int src_y)
;   (int dest_x)
;   (int dest_y)
;   (int width)
;   (int height)
;   (GdkRgbDither dither)
;   (int x_dither)
;   (int y_dither)))

;(define-func gdk_pixbuf_render_to_drawable_alpha
;  none
;  ((GdkPixbuf pixbuf)
;   (GdkDrawable drawable)
;   (GdkGC gc)
;   (int src_y)
;   (int dest_x)
;   (int dest_y)
;   (int width)
;   (int height)
;   (GdkPixbufAlphaMode alpha_mode)
;   (int alpha_threshold)
;   (GdkRgbDither dither)
;   (int x_dither)
;   (int y_dither)))

;(define-func gdk_pixbuf_render_pixmap_and_mask
;  none
;  ((GdkPixbuf pixbuf)
;   ((ret GdkPixmap) pixmap_return)
;   ((ret GdkBitmap) mask_return)
;   (int alpha_threshold)))

;; gdk_pixbuf_get_from_drawable

;;; scaling

(define-func gdk_pixbuf_scale
  none
  ((GdkPixbuf src)
   (GdkPixbuf dest)
   (int dest_x)
   (int dest_y)
   (int dest_width)
   (int dest_height)
   (double offset_x)
   (double offset_y)
   (double scale_x)
   (double scale_y)
   (GdkInterpType interp_type)))

(define-func gdk_pixbuf_composite
  none
  ((GdkPixbuf src)
   (GdkPixbuf dest)
   (int dest_x)
   (int dest_y)
   (int dest_width)
   (int dest_height)
   (double offset_x)
   (double offset_y)
   (double scale_x)
   (double scale_y)
   (GdkInterpType interp_type)
   (int overall_alpha)))

(define-func gdk_pixbuf_composite_color
  none
  ((GdkPixbuf src)
   (GdkPixbuf dest)
   (int dest_x)
   (int dest_y)
   (int dest_width)
   (int dest_height)
   (double offset_x)
   (double offset_y)
   (double scale_x)
   (double scale_y)
   (GdkInterpType interp_type)
   (int overall_alpha)
   (int check_x)
   (int check_y)
   (int check_size)
   (uint color1)
   (uint color2)))

(define-func gdk_pixbuf_scale_simple
  (GdkPixbuf (copy nil))
  ((GdkPixbuf src)
   (int dest_width)
   (int dest_height)
   (GdkInterpType interp_type)))

(define-func gdk_pixbuf_composite_color_simple
  (GdkPixbuf (copy nil))
  ((GdkPixbuf src)
   (int dest_width)
   (int dest_height)
   (GdkInterpType interp_type)
   (int overall_alpha)
   (int check_size)
   (uint color1)
   (uint color2)))

;;; XXX animations

(options
 (includes "#include <gdk-pixbuf/gdk-pixbuf.h>")
 (init-func "sgtk_init_gdk_pixbuf_glue")
 (other-inits "sgtk_init_gtk_glib_glue")
 (other-inits "sgtk_init_gtk_gdk_glue"))
