-- | Rectangles from this module are used to specify areas for operations. module GEGL.Rectangle ( FFI.GeglRectangle(..) , gegl_rectangle_intersect -- , gegl_rectangle_infinite_plane ) where import Foreign.Marshal.Utils (new) import Foreign.Marshal.Alloc (free) import Foreign.Storable (peek) import qualified GEGL.FFI.Rectangle as FFI -- | Calculates the intersection of two rectangles. gegl_rectangle_intersect :: FFI.GeglRectangle -- ^ A rectangle -> FFI.GeglRectangle -- ^ A rectangle -> IO (Maybe FFI.GeglRectangle) -- ^ Returns a 'FFI.GeglRectangle' if -- rectangles intersect, otherwise 'Nothing' gegl_rectangle_intersect a b = do pa <- new a pb <- new b res <- FFI.c_gegl_rectangle_intersect pa pa pb ret <- if res then do iret <- peek pa return $ Just iret else return Nothing free pa free pb return ret -- -- | returns a 'GeglRectangle' representing an inifinite plane -- gegl_rectangle_infinite_plane -- :: IO FFI.GeglRectangle -- ^ The infinite plane -- gegl_rectangle_infinite_plane = do -- rectPtr <- FFI.c_gegl_rectangle_infinite_plane -- rect <- peek rectPtr -- free rectPtr