packages feed

gegl 0.0.0.4 → 0.0.0.5

raw patch · 7 files changed

+85/−67 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- GEGL.FFI.Buffer: c_gegl_buffer_clear :: GeglBufferDummy -> Ptr GeglRectangle -> IO ()
+ GEGL.FFI.Buffer: c_gegl_buffer_clear :: Ptr () -> Ptr GeglRectangle -> IO ()
- GEGL.FFI.Buffer: c_gegl_buffer_create_sub_buffer :: GeglBufferDummy -> Ptr GeglRectangle -> IO GeglBufferDummy
+ GEGL.FFI.Buffer: c_gegl_buffer_create_sub_buffer :: Ptr () -> Ptr GeglRectangle -> IO (Ptr ())
- GEGL.FFI.Buffer: c_gegl_buffer_flush :: GeglBufferDummy -> IO ()
+ GEGL.FFI.Buffer: c_gegl_buffer_flush :: Ptr () -> IO ()
- GEGL.FFI.Buffer: c_gegl_buffer_get :: GeglBufferDummy -> Ptr GeglRectangle -> CDouble -> BablFormatDummy -> Ptr a -> CInt -> CInt -> IO ()
+ GEGL.FFI.Buffer: c_gegl_buffer_get :: Ptr () -> Ptr GeglRectangle -> CDouble -> BablFormatDummy -> Ptr a -> CInt -> CInt -> IO ()
- GEGL.FFI.Buffer: c_gegl_buffer_get_extent :: GeglBufferDummy -> IO (Ptr GeglRectangle)
+ GEGL.FFI.Buffer: c_gegl_buffer_get_extent :: Ptr () -> IO (Ptr GeglRectangle)
- GEGL.FFI.Buffer: c_gegl_buffer_load :: CString -> IO GeglBufferDummy
+ GEGL.FFI.Buffer: c_gegl_buffer_load :: CString -> IO (Ptr ())
- GEGL.FFI.Buffer: c_gegl_buffer_new :: Ptr GeglRectangle -> BablFormatDummy -> IO GeglBufferDummy
+ GEGL.FFI.Buffer: c_gegl_buffer_new :: Ptr GeglRectangle -> BablFormatDummy -> IO (Ptr ())
- GEGL.FFI.Buffer: c_gegl_buffer_new_for_backend :: Ptr GeglRectangle -> Ptr a -> IO GeglBufferDummy
+ GEGL.FFI.Buffer: c_gegl_buffer_new_for_backend :: Ptr GeglRectangle -> Ptr a -> IO (Ptr ())
- GEGL.FFI.Buffer: c_gegl_buffer_open :: CString -> IO GeglBufferDummy
+ GEGL.FFI.Buffer: c_gegl_buffer_open :: CString -> IO (Ptr ())
- GEGL.FFI.Buffer: c_gegl_buffer_save :: GeglBufferDummy -> CString -> Ptr GeglRectangle -> IO ()
+ GEGL.FFI.Buffer: c_gegl_buffer_save :: Ptr () -> CString -> Ptr GeglRectangle -> IO ()
- GEGL.FFI.Buffer: c_gegl_buffer_set_color :: GeglBufferDummy -> Ptr GeglRectangle -> GeglColorDummy -> IO ()
+ GEGL.FFI.Buffer: c_gegl_buffer_set_color :: Ptr () -> Ptr GeglRectangle -> GeglColorDummy -> IO ()
- GEGL.FFI.Buffer: c_gegl_buffer_set_extent :: GeglBufferDummy -> Ptr GeglRectangle -> IO Bool
+ GEGL.FFI.Buffer: c_gegl_buffer_set_extent :: Ptr () -> Ptr GeglRectangle -> IO Bool
- GEGL.FFI.Buffer: c_gegl_buffer_set_pattern :: GeglBufferDummy -> Ptr GeglRectangle -> GeglBufferDummy -> CDouble -> CDouble -> IO ()
+ GEGL.FFI.Buffer: c_gegl_buffer_set_pattern :: Ptr () -> Ptr GeglRectangle -> (Ptr ()) -> CDouble -> CDouble -> IO ()
- GEGL.FFI.Buffer: type GeglBufferDummy = Ptr ()
+ GEGL.FFI.Buffer: type GeglBufferDummy = ForeignPtr ()
- GEGL.FFI.Buffer.BufferIterator: c_gegl_buffer_iterator_new :: GeglBufferDummy -> Ptr GeglRectangle -> CInt -> BablFormatDummy -> CInt -> CInt -> IO GeglBufferIteratorDummy
+ GEGL.FFI.Buffer.BufferIterator: c_gegl_buffer_iterator_new :: Ptr () -> Ptr GeglRectangle -> CInt -> BablFormatDummy -> CInt -> CInt -> IO GeglBufferIteratorDummy

Files

gegl.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/  name:                gegl-version:             0.0.0.4+version:             0.0.0.5 synopsis:            Haskell bindings to GEGL library description:         This package contains the Haskell bindings to the GEGL                      library.
src/GEGL/Buffer.hs view
@@ -46,6 +46,9 @@ import BABL.Format (PixelFormat, babl_format) import BABL.FFI.Format (BablFormatPtr(..)) +import System.Glib.GObject (objectUnref)++import Foreign.ForeignPtr import Foreign.Storable (peek) import Foreign.C.String import Foreign.C.Types (CDouble(..), CInt(..))@@ -64,13 +67,15 @@   ptr <- case mrect of     Just rect -> new rect     Nothing   -> return nullPtr-  val <- FFI.GeglBuffer <$> FFI.c_gegl_buffer_new ptr format+  val <- FFI.GeglBuffer <$>+    (newForeignPtr objectUnref =<< FFI.c_gegl_buffer_new ptr format)   free ptr   return val  -- | Creates a new 'GeglBuffer', which defaults to an empty buffer with the 'RGBAfloat' format. gegl_buffer_default_new :: IO FFI.GeglBuffer-gegl_buffer_default_new = FFI.GeglBuffer <$> FFI.c_gegl_buffer_new nullPtr nullPtr+gegl_buffer_default_new = FFI.GeglBuffer <$>+  (newForeignPtr objectUnref =<< FFI.c_gegl_buffer_new nullPtr nullPtr)  -- | Create a new 'GeglBuffer' from a backend. If @Nothing@ is passed as geometry, --   The extent will be inherited from the backend@@ -82,7 +87,8 @@   rectPtr <- case mext of     Just ext -> new ext     Nothing  -> return nullPtr-  buf <- FFI.GeglBuffer <$> FFI.c_gegl_buffer_new_for_backend rectPtr backend+  buf <- FFI.GeglBuffer <$>+    (newForeignPtr objectUnref =<< FFI.c_gegl_buffer_new_for_backend rectPtr backend)   free rectPtr   return buf @@ -94,7 +100,7 @@   -> IO FFI.GeglBuffer -- ^ The buffer gegl_buffer_open fp = do   cfp <- newCString fp-  ret <- FFI.GeglBuffer <$> FFI.c_gegl_buffer_open cfp+  ret <- FFI.GeglBuffer <$> (newForeignPtr objectUnref =<< FFI.c_gegl_buffer_open cfp)   free cfp   return ret @@ -104,10 +110,11 @@   -> FilePath           -- Path where to save   -> FFI.GeglRectangle  -- Region of interest to write   -> IO ()-gegl_buffer_save (FFI.GeglBuffer buf) fp roi = do+gegl_buffer_save (FFI.GeglBuffer fbuf) fp roi = do   croi <- new roi   cfp  <- newCString fp-  FFI.c_gegl_buffer_save buf cfp croi+  withForeignPtr fbuf $ \buf ->+    FFI.c_gegl_buffer_save buf cfp croi   free croi   free cfp @@ -117,7 +124,7 @@   -> IO FFI.GeglBuffer -- Resulting buffer gegl_buffer_load path = do   cpath <- newCString path-  ret <- FFI.GeglBuffer <$> FFI.c_gegl_buffer_load cpath+  ret <- FFI.GeglBuffer <$> (newForeignPtr objectUnref =<< FFI.c_gegl_buffer_load cpath)   free cpath   return ret @@ -126,17 +133,19 @@ gegl_buffer_flush   :: FFI.GeglBuffer -- ^ Buffer to flush   -> IO ()-gegl_buffer_flush (FFI.GeglBuffer buf) =-  FFI.c_gegl_buffer_flush buf+gegl_buffer_flush (FFI.GeglBuffer fbuf) =+  withForeignPtr fbuf $ \buf ->+    FFI.c_gegl_buffer_flush buf  -- | Create a new sub 'GeglBuffer', that is a view on a larger buffer. gegl_buffer_create_sub_buffer   :: FFI.GeglBuffer    -- ^ Parent buffer   -> FFI.GeglRectangle -- ^ Coordinates of new buffer   -> IO FFI.GeglBuffer -- ^ Child buffer-gegl_buffer_create_sub_buffer (FFI.GeglBuffer buf) rect = do+gegl_buffer_create_sub_buffer (FFI.GeglBuffer fbuf) rect = do   crect <- new rect-  ret <- FFI.GeglBuffer <$> FFI.c_gegl_buffer_create_sub_buffer buf crect+  ret <- withForeignPtr fbuf $ \buf -> FFI.GeglBuffer <$>+    (newForeignPtr objectUnref =<< FFI.c_gegl_buffer_create_sub_buffer buf crect)   free crect   return ret @@ -144,8 +153,8 @@ gegl_buffer_get_extent   :: FFI.GeglBuffer       -- ^ The buffer   -> IO FFI.GeglRectangle -- ^ active area-gegl_buffer_get_extent (FFI.GeglBuffer buffer) = do-  rectPtr <- FFI.c_gegl_buffer_get_extent buffer+gegl_buffer_get_extent (FFI.GeglBuffer fbuffer) = do+  rectPtr <- withForeignPtr fbuffer $ \buffer -> FFI.c_gegl_buffer_get_extent buffer   rect <- peek rectPtr   -- free rectPtr   return rect@@ -155,9 +164,9 @@   :: FFI.GeglBuffer    -- ^ The buffer   -> FFI.GeglRectangle -- ^ New extent of the buffer   -> IO Bool           -- ^ Returns 'True' on success, otherwise 'False'-gegl_buffer_set_extent (FFI.GeglBuffer buffer) rect = do+gegl_buffer_set_extent (FFI.GeglBuffer fbuffer) rect = do   ptr <- new rect-  val <- FFI.c_gegl_buffer_set_extent buffer ptr+  val <- withForeignPtr fbuffer $ \buffer -> FFI.c_gegl_buffer_set_extent buffer ptr   free ptr   return val @@ -207,9 +216,10 @@   -> FFI.GeglRectangle -- ^ Area of the buffer to fill   -> FFI.GeglColor     -- ^ The colour to fill with   -> IO ()-gegl_buffer_set_color (FFI.GeglBuffer buffer) rect (FFI.GeglColor color) = do+gegl_buffer_set_color (FFI.GeglBuffer fbuffer) rect (FFI.GeglColor color) = do   rectPtr <- new rect-  FFI.c_gegl_buffer_set_color buffer rectPtr color+  withForeignPtr fbuffer $ \buffer ->+    FFI.c_gegl_buffer_set_color buffer rectPtr color   free rectPtr  -- | Fill a region with a repeating pattern.@@ -221,20 +231,22 @@   -> Double            -- ^ Y offset   -> IO () gegl_buffer_set_pattern-  (FFI.GeglBuffer buffer)+  (FFI.GeglBuffer fbuffer)   rect-  (FFI.GeglBuffer pattern)+  (FFI.GeglBuffer fpattern)   xoff   yoff   = do     rectPtr <- new rect     let (cx, cy) = (CDouble xoff, CDouble yoff)-    FFI.c_gegl_buffer_set_pattern-      buffer-      rectPtr-      pattern-      cx-      cy+    withForeignPtr fbuffer $ \buffer ->+      withForeignPtr fpattern $ \pattern ->+        FFI.c_gegl_buffer_set_pattern+          buffer+          rectPtr+          pattern+          cx+          cy     free rectPtr  -- | Clear a provided rectangular region by setting all associated memory to 0.@@ -242,9 +254,10 @@   :: FFI.GeglBuffer    -- ^ Target buffer   -> FFI.GeglRectangle -- ^ Area to clear   -> IO ()-gegl_buffer_clear (FFI.GeglBuffer buf) rect = do+gegl_buffer_clear (FFI.GeglBuffer fbuf) rect = do   rectPtr <- new rect-  FFI.c_gegl_buffer_clear buf rectPtr+  withForeignPtr fbuf $ \buf ->+    FFI.c_gegl_buffer_clear buf rectPtr   free rectPtr  -- | Fetch a rectangular linear buffer of pixel data from the 'GeglBuffer',@@ -261,19 +274,20 @@                              -- automatically from format   -> GeglAbyssPolicy         -- Abyss policy   -> IO ()-gegl_buffer_get (FFI.GeglBuffer buf) mrect scale mformat dest stride ap = do+gegl_buffer_get (FFI.GeglBuffer fbuf) mrect scale mformat dest stride ap = do   rect <- case mrect of     Just r -> new r     Nothing -> return nullPtr   let format = case mformat of         Just (BablFormatPtr ptr) -> ptr         Nothing -> nullPtr-  FFI.c_gegl_buffer_get-    buf-    rect-    (CDouble scale)-    format-    dest-    (CInt $ fromIntegral stride)-    (CInt $ fromIntegral $ fromEnum ap)+  withForeignPtr fbuf $ \buf ->+    FFI.c_gegl_buffer_get+      buf+      rect+      (CDouble scale)+      format+      dest+      (CInt $ fromIntegral stride)+      (CInt $ fromIntegral $ fromEnum ap)   free rect
src/GEGL/Buffer/BufferIterator.hs view
@@ -21,6 +21,7 @@ import qualified BABL.Format as BF import BABL.FFI.Format (BablFormatPtr(..)) +import Foreign.ForeignPtr import Foreign.Marshal.Utils (new) import Foreign.Ptr import Foreign.C.Types@@ -54,16 +55,17 @@   -> GeglAccessMode  -- ^ Access mode to pixel data   -> GeglAbyssPolicy -- ^ Abyss policy for pixel data   -> IO FFI.GeglBufferIterator-gegl_buffer_iterator_new (GeglBuffer buf) roi format am ap = do+gegl_buffer_iterator_new (GeglBuffer fbuf) roi format am ap = do   roiPtr <- new roi   (BablFormatPtr formatPtr) <- BF.babl_format format-  FFI.GeglBufferIterator <$> FFI.c_gegl_buffer_iterator_new-    buf-    roiPtr-    (CInt 0)-    formatPtr-    (marshal am)-    (marshal ap)+  withForeignPtr fbuf $ \buf ->+    FFI.GeglBufferIterator <$> FFI.c_gegl_buffer_iterator_new+      buf+      roiPtr+      (CInt 0)+      formatPtr+      (marshal am)+      (marshal ap)  -- | This function fills the 'FFI.GeglBufferIterator' with its appropriate data --   and returns 'True' as long as there is something to iterate over. Upon
src/GEGL/FFI/Buffer.hs view
@@ -23,6 +23,7 @@ import Foreign.C.Types import Foreign.C.String import Foreign.Ptr+import Foreign.ForeignPtr  import GEGL.FFI.Rectangle (GeglRectangle) import GEGL.FFI.Color     (GeglColorDummy)@@ -30,7 +31,7 @@ import BABL.FFI.Format (BablFormatDummy)  -- | Pointer holding a buffer. Never peek or poke it.-type GeglBufferDummy = Ptr ()+type GeglBufferDummy = ForeignPtr () -- | Outward representation of the buffer. data GeglBuffer = GeglBuffer GeglBufferDummy @@ -39,25 +40,25 @@   c_gegl_buffer_new     :: Ptr GeglRectangle  -- ^ Buffer geometry     -> BablFormatDummy  -- ^ Color format-    -> IO GeglBufferDummy -- ^ New buffer+    -> IO (Ptr()) -- ^ New buffer  -- | Interface to the @gegl_buffer_new_for_backend@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_new_for_backend"   c_gegl_buffer_new_for_backend     :: Ptr GeglRectangle  -- ^ Buffer geometry     -> Ptr a              -- ^ The backend-    -> IO GeglBufferDummy -- ^ New buffer+    -> IO (Ptr()) -- ^ New buffer  -- | Interace to the @gegl_buffer_open@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_open"   c_gegl_buffer_open     :: CString            -- Path to buffer on disc-    -> IO GeglBufferDummy -- The buffer+    -> IO (Ptr ()) -- The buffer  -- | Interface to the @gegl_buffer_save@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_save"   c_gegl_buffer_save-    :: GeglBufferDummy+    :: Ptr ()     -> CString     -> Ptr GeglRectangle     -> IO ()@@ -66,38 +67,38 @@ foreign import ccall unsafe "gegl.h gegl_buffer_load"   c_gegl_buffer_load     :: CString-    -> IO GeglBufferDummy+    -> IO (Ptr ())  -- | Interface to the @gegl_buffer_flush@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_flush"   c_gegl_buffer_flush-    :: GeglBufferDummy+    :: Ptr ()     -> IO ()  -- | Interface to the @gegl_buffer_create_sub_buffer@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_create_sub_buffer"   c_gegl_buffer_create_sub_buffer-    :: GeglBufferDummy+    :: Ptr ()     -> Ptr GeglRectangle-    -> IO GeglBufferDummy+    -> IO (Ptr ())  -- | Interface to the @gegl_buffer_get_extent@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_get_extent"   c_gegl_buffer_get_extent-    :: GeglBufferDummy+    :: Ptr ()     -> IO (Ptr GeglRectangle)  -- | Interface to the @gegl_buffer_set_extent@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_set_extent"   c_gegl_buffer_set_extent-    :: GeglBufferDummy   -- ^ A buffer+    :: Ptr ()   -- ^ A buffer     -> Ptr GeglRectangle -- ^ Geometry     -> IO Bool           -- ^ Returns True on success  -- | Interface to the @gegl_buffer_set_color@ funciton in C. foreign import ccall unsafe "gegl.h gegl_buffer_set_color"   c_gegl_buffer_set_color-    :: GeglBufferDummy   -- ^ The buffer+    :: Ptr ()   -- ^ The buffer     -> Ptr GeglRectangle -- ^ Rectangular region to fill     -> GeglColorDummy    -- ^ The colour to fill with.     -> IO ()@@ -105,9 +106,9 @@ -- | Interface to the @gegl_bufer_set_pattern@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_set_pattern"   c_gegl_buffer_set_pattern-    :: GeglBufferDummy   -- ^ The target buffer+    :: Ptr ()   -- ^ The target buffer     -> Ptr GeglRectangle -- ^ rectangular region to fill-    -> GeglBufferDummy   -- ^ A buffer to be repeated as pattern+    -> (Ptr())   -- ^ A buffer to be repeated as pattern     -> CDouble           -- ^ X offset     -> CDouble           -- ^ Y offset     -> IO ()@@ -115,14 +116,14 @@ -- | Interface to the @gegl_buffer_clear@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_clear"   c_gegl_buffer_clear-    :: GeglBufferDummy   -- ^ The target buffer+    :: Ptr ()   -- ^ The target buffer     -> Ptr GeglRectangle -- ^ Region to clear     -> IO ()  -- | Interface to the @gegl_bufer_get@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_get"   c_gegl_buffer_get-    :: GeglBufferDummy   -- ^ Buffer to retrieve data from+    :: Ptr ()   -- ^ Buffer to retrieve data from     -> Ptr GeglRectangle -- ^ Coordinates to retrieve from     -> CDouble           -- ^ Sampling scale     -> BablFormatDummy   -- ^ 'BablFormat' to store the data in
src/GEGL/FFI/Buffer/BufferIterator.hs view
@@ -54,7 +54,7 @@ -- | Interface the the @gegl_buffer_iterator_new@ function in C. foreign import ccall unsafe "gegl.h gegl_buffer_iterator_new"   c_gegl_buffer_iterator_new-    :: GeglBufferDummy   -- ^ Buffer to draw data from+    :: Ptr ()            -- ^ Buffer to draw data from     -> Ptr GeglRectangle -- ^ Rectangle to iterate over     -> CInt              -- ^ Representation of level     -> BablFormatDummy   -- ^ Format to process the buffer data in
src/GEGL/Node.hs view
@@ -28,7 +28,7 @@ -- | Creates a new GEGL node graph that can contain further processing nodes. gegl_node_new :: IO FFI.GeglNode -- ^ A new top level 'FFI.GeglNode' -- gegl_node_new = FFI.GeglNode <$> (newForeignPtr objectUnref =<< FFI.c_gegl_node_new)-gegl_node_new = FFI.GeglNode <$> (newForeignPtr_ =<< FFI.c_gegl_node_new)+gegl_node_new = FFI.GeglNode <$> (newForeignPtr objectUnref =<< FFI.c_gegl_node_new)  -- | Creates a new processing node that performs the specified operation. gegl_node_new_child@@ -73,8 +73,9 @@         PropertyFormat f -> do           (B.BablFormatPtr ptr) <- B.babl_format f           FFI.gegl_node_set_single_ptr node cname ptr-        PropertyBuffer (FFI.GeglBuffer ptr) ->-          FFI.gegl_node_set_single_ptr node cname ptr+        PropertyBuffer (FFI.GeglBuffer fptr) ->+          withForeignPtr fptr $ \ptr ->+            FFI.gegl_node_set_single_ptr node cname ptr         PropertyPointer ptr ->           FFI.gegl_node_set_single_ptr node cname ptr         _ ->@@ -88,5 +89,5 @@   :: FFI.GeglNode   -> IO () gegl_node_drop (FFI.GeglNode node) = do-  addForeignPtrFinalizer objectUnref node+  -- addForeignPtrFinalizer objectUnref node   finalizeForeignPtr node
src/GEGL/Rectangle.hs view
@@ -14,7 +14,7 @@ -- | Calculates the intersection of two rectangles. gegl_rectangle_intersect   :: FFI.GeglRectangle            -- ^ A rectangle-  -> FFI.GeglRectangle            -- ^ A rectnagle+  -> FFI.GeglRectangle            -- ^ A rectangle   -> IO (Maybe FFI.GeglRectangle) -- ^ Returns a 'FFI.GeglRectangle' if                                   --   rectangles intersect, otherwise 'Nothing' gegl_rectangle_intersect a b = do