Update of /project/trivial-freeimage/cvsroot/source
In directory clnet:/tmp/cvs-serv4284
Modified Files:
trivial-freeimage.lisp
Added Files:
defpackage.lisp trivial-freeimage.asd
Log Message:
Made into an asdf package. Just
(asdf:oos 'asdf:load-op :cffi)
(asdf:oos 'asdf:load-op :trivial-freeimage)
(use-package :trivial-freeimage)
--- /project/trivial-freeimage/cvsroot/source/trivial-freeimage.lisp 2007/01/14 16:57:19 1.1
+++ /project/trivial-freeimage/cvsroot/source/trivial-freeimage.lisp 2007/01/17 04:53:15 1.2
@@ -1,99 +1,98 @@
-(defpackage :trivial-freeimage
- (:use :common-lisp :cffi))
(in-package :trivial-freeimage)
+
(define-foreign-library freeimage
(:unix "libfreeimage.so.3")
- (:windows "FreeImaged.dll")
+ (:windows "FreeImage.dll")
(t (:default "libfreeimage")))
(use-foreign-library freeimage)
-(defconstant UNKNOWN -1)
-(defconstant BMP 0)
-(defconstant ICO 1)
-(defconstant JPEG 2)
-(defconstant JNG 3)
-(defconstant KOALA 4)
-(defconstant LBM 5)
-(defconstant IFF 5)
-(defconstant MNG 6)
-(defconstant PBM 7)
-(defconstant PBMRAW 8)
-(defconstant PCD 9)
-(defconstant PCX 10)
-(defconstant PGM 11)
-(defconstant PGMRAW 12)
-(defconstant PNG 13)
-(defconstant PPM 14)
-(defconstant PPMRAW 15)
-(defconstant RAS 16)
-(defconstant TARGA 17)
-(defconstant TIFF 18)
-(defconstant WBMP 19)
-(defconstant PSD 20)
-(defconstant CUT 21)
-(defconstant XBM 22)
-(defconstant XPM 23)
-(defconstant DDS 24)
-(defconstant GIF 25)
-(defconstant HDR 26)
-(defconstant FAXG3 27)
-(defconstant SGI 28)
-
-
-(defconstant BMP_DEFAULT 0)
-(defconstant BMP_SAVE_RLE 1)
-(defconstant CUT_DEFAULT 0)
-(defconstant DDS_DEFAULT 0)
-(defconstant FAXG3_DEFAULT 0)
-(defconstant GIF_DEFAULT 0)
-(defconstant GIF_LOAD256 1) ;Load the image as a 256 color image with ununsed palette entries, if it's 16 or 2 color
-(defconstant GIF_PLAYBACK 2) ;'Play' the GIF to generate each frame (as 32bpp) instead of returning raw frame data when loading
-(defconstant HDR_DEFAULT 0)
-(defconstant ICO_DEFAULT 0)
-(defconstant ICO_MAKEALPHA 1) ;convert to 32bpp and create an alpha channel from the AND-mask when loading
-(defconstant IFF_DEFAULT 0)
-(defconstant JPEG_DEFAULT 0)
-(defconstant JPEG_FAST 1)
-(defconstant JPEG_ACCURATE 2)
-(defconstant JPEG_QUALITYSUPERB #x80)
-(defconstant JPEG_QUALITYGOOD #x100)
-(defconstant JPEG_QUALITYNORMAL #x200)
-(defconstant JPEG_QUALITYAVERAGE #x400)
-(defconstant JPEG_QUALITYBAD #x800)
-(defconstant JPEG_CMYK #x1000) ;load separated CMYK "as is" (use | to combine with other flags)
-(defconstant JPEG_PROGRESSIVE #x2000) ;save as a progressive-JPEG (use | to combine with other flags)
-(defconstant KOALA_DEFAULT 0)
-(defconstant LBM_DEFAULT 0)
-(defconstant MNG_DEFAULT 0)
-(defconstant PCD_DEFAULT 0)
-(defconstant PCD_BASE 1) ;load the bitmap sized 768 x 512
-(defconstant PCD_BASEDIV4 2) ;load the bitmap sized 384 x 256
-(defconstant PCD_BASEDIV16 3) ;load the bitmap sized 192 x 128
-(defconstant PCX_DEFAULT 0)
-(defconstant PNG_DEFAULT 0)
-(defconstant PNG_IGNOREGAMMA 1) ;avoid gamma correction
-(defconstant PNM_DEFAULT 0)
-(defconstant PNM_SAVE_RAW 0) ;If set the writer saves in RAW format (i.e. P4, P5 or P6)
-(defconstant PNM_SAVE_ASCII 1) ;If set the writer saves in ASCII format (i.e. P1, P2 or P3)
-(defconstant PSD_DEFAULT 0)
-(defconstant RAS_DEFAULT 0)
-(defconstant SGI_DEFAULT 0)
-(defconstant TARGA_DEFAULT 0)
-(defconstant TARGA_LOAD_RGB888 1) ;If set the loader converts RGB555 and ARGB8888 -> RGB888.
-(defconstant TIFF_DEFAULT 0)
-(defconstant TIFF_CMYK #x0001) ;reads/stores tags for separated CMYK (use | to combine with compression flags)
-(defconstant TIFF_PACKBITS #x0100) ;save using PACKBITS compression
-(defconstant TIFF_DEFLATE #x0200) ;save using DEFLATE compression (a.k.a. ZLIB compression)
-(defconstant TIFF_ADOBE_DEFLATE #x0400) ;save using ADOBE DEFLATE compression
-(defconstant TIFF_NONE #x0800) ;save without any compression
-(defconstant TIFF_CCITTFAX3 #x1000) ;save using CCITT Group 3 fax encoding
-(defconstant TIFF_CCITTFAX4 #x2000) ;save using CCITT Group 4 fax encoding
-(defconstant TIFF_LZW #x4000) ;save using LZW compression
-(defconstant TIFF_JPEG #x8000) ;save using JPEG compression
-(defconstant WBMP_DEFAULT 0)
-(defconstant XBM_DEFAULT 0)
-(defconstant XPM_DEFAULT 0)
+(defconstant +UNKNOWN+ -1)
+(defconstant +BMP+ 0)
+(defconstant +ICO+ 1)
+(defconstant +JPEG+ 2)
+(defconstant +JNG+ 3)
+(defconstant +KOALA+ 4)
+(defconstant +LBM+ 5)
+(defconstant +IFF+ 5)
+(defconstant +MNG+ 6)
+(defconstant +PBM+ 7)
+(defconstant +PBMRAW+ 8)
+(defconstant +PCD+ 9)
+(defconstant +PCX+ 10)
+(defconstant +PGM+ 11)
+(defconstant +PGMRAW+ 12)
+(defconstant +PNG+ 13)
+(defconstant +PPM+ 14)
+(defconstant +PPMRAW+ 15)
+(defconstant +RAS+ 16)
+(defconstant +TARGA+ 17)
+(defconstant +TIFF+ 18)
+(defconstant +WBMP+ 19)
+(defconstant +PSD+ 20)
+(defconstant +CUT+ 21)
+(defconstant +XBM+ 22)
+(defconstant +XPM+ 23)
+(defconstant +DDS+ 24)
+(defconstant +GIF+ 25)
+(defconstant +HDR+ 26)
+(defconstant +FAXG3+ 27)
+(defconstant +SGI+ 28)
+
+
+(defconstant +BMP_DEFAULT+ 0)
+(defconstant +BMP_SAVE_RLE+ 1)
+(defconstant +CUT_DEFAULT+ 0)
+(defconstant +DDS_DEFAULT+ 0)
+(defconstant +FAXG3_DEFAULT+ 0)
+(defconstant +GIF_DEFAULT+ 0)
+(defconstant +GIF_LOAD256+ 1) ;Load the image as a 256 color image with ununsed palette entries, if it's 16 or 2 color
+(defconstant +GIF_PLAYBACK+ 2) ;'Play' the GIF to generate each frame (as 32bpp) instead of returning raw frame data when loading
+(defconstant +HDR_DEFAULT+ 0)
+(defconstant +ICO_DEFAULT+ 0)
+(defconstant +ICO_MAKEALPHA+ 1) ;convert to 32bpp and create an alpha channel from the AND-mask when loading
+(defconstant +IFF_DEFAULT+ 0)
+(defconstant +JPEG_DEFAULT+ 0)
+(defconstant +JPEG_FAST+ 1)
+(defconstant +JPEG_ACCURATE+ 2)
+(defconstant +JPEG_QUALITYSUPERB+ #x80)
+(defconstant +JPEG_QUALITYGOOD+ #x100)
+(defconstant +JPEG_QUALITYNORMAL+ #x200)
+(defconstant +JPEG_QUALITYAVERAGE+ #x400)
+(defconstant +JPEG_QUALITYBAD+ #x800)
+(defconstant +JPEG_CMYK+ #x1000) ;load separated CMYK "as is" (use | to combine with other flags)
+(defconstant +JPEG_PROGRESSIVE+ #x2000) ;save as a progressive-JPEG (use | to combine with other flags)
+(defconstant +KOALA_DEFAULT+ 0)
+(defconstant +LBM_DEFAULT+ 0)
+(defconstant +MNG_DEFAULT+ 0)
+(defconstant +PCD_DEFAULT+ 0)
+(defconstant +PCD_BASE+ 1) ;load the bitmap sized 768 x 512
+(defconstant +PCD_BASEDIV4+ 2) ;load the bitmap sized 384 x 256
+(defconstant +PCD_BASEDIV16+ 3) ;load the bitmap sized 192 x 128
+(defconstant +PCX_DEFAULT+ 0)
+(defconstant +PNG_DEFAULT+ 0)
+(defconstant +PNG_IGNOREGAMMA+ 1) ;avoid gamma correction
+(defconstant +PNM_DEFAULT+ 0)
+(defconstant +PNM_SAVE_RAW+ 0) ;If set the writer saves in RAW format (i.e. P4, P5 or P6)
+(defconstant +PNM_SAVE_ASCII+ 1) ;If set the writer saves in ASCII format (i.e. P1, P2 or P3)
+(defconstant +PSD_DEFAULT+ 0)
+(defconstant +RAS_DEFAULT+ 0)
+(defconstant +SGI_DEFAULT+ 0)
+(defconstant +TARGA_DEFAULT+ 0)
+(defconstant +TARGA_LOAD_RGB888+ 1) ;If set the loader converts RGB555 and ARGB8888 -> RGB888.
+(defconstant +TIFF_DEFAULT+ 0)
+(defconstant +TIFF_CMYK+ #x0001) ;reads/stores tags for separated CMYK (use | to combine with compression flags)
+(defconstant +TIFF_PACKBITS+ #x0100) ;save using PACKBITS compression
+(defconstant +TIFF_DEFLATE+ #x0200) ;save using DEFLATE compression (a.k.a. ZLIB compression)
+(defconstant +TIFF_ADOBE_DEFLATE+ #x0400) ;save using ADOBE DEFLATE compression
+(defconstant +TIFF_NONE+ #x0800) ;save without any compression
+(defconstant +TIFF_CCITTFAX3+ #x1000) ;save using CCITT Group 3 fax encoding
+(defconstant +TIFF_CCITTFAX4+ #x2000) ;save using CCITT Group 4 fax encoding
+(defconstant +TIFF_LZW+ #x4000) ;save using LZW compression
+(defconstant +TIFF_JPEG+ #x8000) ;save using JPEG compression
+(defconstant +WBMP_DEFAULT+ 0)
+(defconstant +XBM_DEFAULT+ 0)
+(defconstant +XPM_DEFAULT+ 0)
(defcstruct bitmapinfoheader
(bisize :unsigned-long)
@@ -115,9 +114,6 @@
(bmiheader bitmapinfoheader)
(bmicolors :pointer))
-
-
-
(defcfun ("FreeImage_Initialise" initialize) :void
(plugin :boolean))
@@ -127,20 +123,26 @@
(defcfun ("FreeImage_GetCopyrightMessage" get-copyright-message) :string)
+
+
(defcfun ("FreeImage_Load" load-image) :pointer
(fif :int)
(filename :string)
(flags :int))
+ (setf *current-dib* (freeimage-load (get-file-type file-name 0) file-name flags))
+
(defcfun ("FreeImage_Unload" unload-image) :void
(dib :pointer))
+
(defcfun ("FreeImage_Save" save-image) :int
(fif :int)
(dib :pointer)
(filename :string)
(flags :int))
+
(defcfun ("FreeImage_Clone" clone-image) :pointer
(dib :pointer))
@@ -442,7 +444,15 @@
(right :int)
(bottom :int))
-
-
-
-
+(defmacro with-dib ((dib-var file-name
+ &key (file-type-arg 0) (load-image-arg 0))
+ &body body)
+ `(let ((,dib-var nil))
+ (unwind-protect
+ (progn
+ (setf ,dib-var (load-image (get-file-type ,file-name ,file-type-arg) ,file-name
+ ,load-image-arg))
+ ,@body)
+ (when ,dib-var
+ (unload-image ,dib-var)))))
+
\ No newline at end of file
--- /project/trivial-freeimage/cvsroot/source/defpackage.lisp 2007/01/17 04:53:15 NONE
+++ /project/trivial-freeimage/cvsroot/source/defpackage.lisp 2007/01/17 04:53:15 1.1
;;;; 2007-01-15 10:22:27
(in-package :common-lisp-user)
(defpackage :trivial-freeimage
(:nicknames :trivial-freeimage)
(:use :cl :cffi)
(:export :load-image
:with-dib
:save-image
:copy
:paste
:initialize
:de-initialize
:get-version
:get-copyright-information
:unload-image
:clone-image
:get-image-type
:get-info-header
:get-info
:get-height
:get-width
:get-bpp
:get-colors-used
:get-pitch
:get-line
:get-dib-size
:get-scan-line
:get-dots-per-meter-x
:get-dots-per-meter-y
:set-dots-per-meter-x
:set-dots-per-meter-y
:get-blue-mask
:get-red-mask
:get-green-mask
:get-transparency-count
:get-transparency-table
:set-transparency-table
:set-transparent
:is-transparent
:has-background-color
:get-background-color
:set-background-color
:get-bits
:get-file-type
:get-pixel-index
:get-pixel-color
:set-pixel-index
:set-pixel-color
:convert-to-4-bits
:convert-to-8-bits
:convert-to-24-bits
:convert-to-32-bits
:convert-to-greyscale
:convert-to-16-bits-555
:convert-to-16-bits-565
:color-quantize
:color-quantize-ex
:convert-from-raw-bits
:convert-to-raw-bits
:dither
:threshold
:convert-to-rgbf
:convert-to-standard-type
:convert-to-type
:rotate-classic
:rotate-ex
:flip-vertical
:flip-horizontal
:adjust-brightness
:adjust-curve
:adjust-gamma
:adjust-contrast
:invert
:jpeg-transform
:rescale
:make-thumbnail
:composite
:jpeg-crop
:get-channel
:set-channel
:get-complex-channel
:set-complex-channel
:get-histogram
:+UNKNOWN+
:+BMP+
:+ICO+
:+JPEG+
:+JNG+
:+KOALA+
:+LBM+
:+IFF+
:+MNG+
:+PBM+
:+PBMRAW+
:+PCD+
:+PCX+
:+PGM+
:+PGMRAW+
:+PNG+
:+PPM+
:+PPMRAW+
:+RAS+
:+TARGA+
:+TIFF+
:+WBMP+
:+PSD+
:+CUT+
:+XBM+
:+XPM+
:+DDS+
:+GIF+
:+HDR+
:+FAXG3+
:+SGI+
:+BMP_DEFAULT+
:+BMP_SAVE_RLE+
:+CUT_DEFAULT+
:+DDS_DEFAULT+
:+FAXG3_DEFAULT+
:+GIF_DEFAULT+
:+GIF_LOAD256+
:+GIF_PLAYBACK+
:+HDR_DEFAULT+
:+ICO_DEFAULT+
:+ICO_MAKEALPHA+
:+IFF_DEFAULT+
:+JPEG_DEFAULT+
:+JPEG_FAST+
:+JPEG_ACCURATE+
:+JPEG_QUALITYSUPERB+
:+JPEG_QUALITYGOOD+
:+JPEG_QUALITYNORMAL+
:+JPEG_QUALITYAVERAGE+
:+JPEG_QUALITYBAD+
:+JPEG_CMYK+
:+JPEG_PROGRESSIVE+
:+KOALA_DEFAULT+
:+LBM_DEFAULT+
:+MNG_DEFAULT+
:+PCD_DEFAULT+
:+PCD_BASE+
:+PCD_BASEDIV4+
:+PCD_BASEDIV16+
:+PCX_DEFAULT+
:+PNG_DEFAULT+
:+PNG_IGNOREGAMMA+
:+PNM_DEFAULT+
:+PNM_SAVE_RAW+
:+PNM_SAVE_ASCII+
[21 lines skipped]
--- /project/trivial-freeimage/cvsroot/source/trivial-freeimage.asd 2007/01/17 04:53:15 NONE
+++ /project/trivial-freeimage/cvsroot/source/trivial-freeimage.asd 2007/01/17 04:53:15 1.1
[34 lines skipped]