Added bindings for Pixbuf Loader
[clg] / gdk / pixbuf.lisp
index 08f96d8..493292d 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: pixbuf.lisp,v 1.6 2007-06-18 10:14:39 espen Exp $
+;; $Id: pixbuf.lisp,v 1.8 2008-04-30 18:04:09 espen Exp $
 
 
 (in-package "GDK")
 
 
 (in-package "GDK")
   (pixbuf pixbuf)
   (key string))
 
   (pixbuf pixbuf)
   (key string))
 
-(defbinding %pixbuf-new-from-file () (referenced pixbuf)
+(defbinding %pixbuf-new-from-file () (or null (referenced pixbuf))
   (filename pathname)
   (filename pathname)
-  (nil gerror :out))
+  (nil (or null gerror) :out))
 
 
-(defbinding %pixbuf-new-from-file-at-size () (referenced pixbuf)
+(defbinding %pixbuf-new-from-file-at-size () (or null (referenced pixbuf))
   (filename pathname)
   (width int)
   (height int)
   (filename pathname)
   (width int)
   (height int)
-  (nil gerror :out))
+  (nil (or null gerror) :out))
 
 #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
 
 #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
-(defbinding %pixbuf-new-from-file-at-scale () (referenced pixbuf)
+(defbinding %pixbuf-new-from-file-at-scale () (or null (referenced pixbuf))
   (filename pathname)
   (width int)
   (height int)
   (preserve-aspect-ratio boolean)
   (filename pathname)
   (width int)
   (height int)
   (preserve-aspect-ratio boolean)
-  (nil gerror :out))
+  (nil (or null gerror) :out))
 
 (defun pixbuf-load (filename &key width height size (preserve-aspect-ratio t))
   #?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
 
 (defun pixbuf-load (filename &key width height size (preserve-aspect-ratio t))
   #?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
@@ -83,7 +83,7 @@
   (type string)
   (keys strings)
   (values strings)
   (type string)
   (keys strings)
   (values strings)
-  (nil gerror :out))
+  (nil (or null gerror) :out))
 
 (defun pixbuf-save (pixbuf filename type &rest options)
   (let ((keys (make-array 0 :adjustable t :fill-pointer t))
 
 (defun pixbuf-save (pixbuf filename type &rest options)
   (let ((keys (make-array 0 :adjustable t :fill-pointer t))
       (%pixbuf-copy pixbuf)
     (%pixbuf-new-subpixbuf pixbuf x y width height)))
 
       (%pixbuf-copy pixbuf)
     (%pixbuf-new-subpixbuf pixbuf x y width height)))
 
-(defbinding %pixbuf-get-from-drawable () (referenced pixbuf)
+(defbinding %pixbuf-get-from-drawable () (or null (referenced pixbuf))
   (dest (or null pixbuf))
   (drawable drawable)
   (colormap (or null colormap))
   (dest (or null pixbuf))
   (drawable drawable)
   (colormap (or null colormap))
    (error "Couldn't get pixbuf from drawable")))
 
 
    (error "Couldn't get pixbuf from drawable")))
 
 
+;;; Pixbuf Loader
+
+(defbinding %pixbuf-loader-new-with-type () pointer
+  (type string)
+  (nil gerror-signal :out))
+
+(defbinding %pixbuf-loader-new-with-mime-type () pointer
+  (mime-type string)
+  (nil gerror-signal :out))
+
+(defmethod allocate-foreign ((loader pixbuf-loader) &key type mime-type)
+  (cond
+   ((and type mime-type) 
+    (error "Only one of the keyword arguments :TYPE and :MIME-TYPE can be specified"))
+   (type (%pixbuf-loader-new-with-type type))
+   (mime-type (%pixbuf-loader-new-with-mime-type mime-type))
+   ((call-next-method))))
+
+(defbinding pixbuf-loader-write (loader buffer &optional (length (length buffer))) boolean
+  (loader pixbuf-loader)
+  (buffer (unboxed-vector (unsigned-byte 8)))
+  (length integer)  
+  (nil gerror-signal :out))
+
+(defbinding pixbuf-loader-close () boolean
+  (loader pixbuf-loader)
+  (nil gerror-signal :out))
+
+(defbinding pixbuf-loader-get-pixbuf () (or null pixbuf)
+  (loader pixbuf-loader))
+
+(defbinding pixbuf-loader-get-animation () (or null pixbuf-animation)
+  (loader pixbuf-loader))
+
+(defbinding pixbuf-loader-set-size () nil
+  (loader pixbuf-loader)
+  (width integer)
+  (height integer))
+
+
 ;;; Utilities
 
 (defbinding pixbuf-add-alpha 
 ;;; Utilities
 
 (defbinding pixbuf-add-alpha