{-# LINE 2 "./Graphics/Rendering/Cairo/Internal/Surfaces/PNG.chs" #-}
module Graphics.Rendering.Cairo.Internal.Surfaces.PNG where
import Graphics.Rendering.Cairo.Types
{-# LINE 18 "./Graphics/Rendering/Cairo/Internal/Surfaces/PNG.chs" #-}
import Foreign
import Foreign.C
{-# LINE 23 "./Graphics/Rendering/Cairo/Internal/Surfaces/PNG.chs" #-}
imageSurfaceCreateFromPNG :: FilePath -> IO Surface
imageSurfaceCreateFromPNG :: FilePath -> IO Surface
imageSurfaceCreateFromPNG FilePath
filename =
FilePath -> (CString -> IO Surface) -> IO Surface
forall a. FilePath -> (CString -> IO a) -> IO a
withCAString FilePath
filename ((CString -> IO Surface) -> IO Surface)
-> (CString -> IO Surface) -> IO Surface
forall a b. (a -> b) -> a -> b
$ \CString
filenamePtr ->
CString -> IO (Ptr Surface)
cairo_image_surface_create_from_png CString
filenamePtr
IO (Ptr Surface) -> (Ptr Surface -> IO Surface) -> IO Surface
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Ptr Surface -> IO Surface
mkSurface
surfaceWriteToPNG :: Surface -> FilePath -> IO (Status)
surfaceWriteToPNG :: Surface -> FilePath -> IO Status
surfaceWriteToPNG Surface
a1 FilePath
a2 =
Surface -> (Ptr Surface -> IO Status) -> IO Status
forall {b}. Surface -> (Ptr Surface -> IO b) -> IO b
withSurface Surface
a1 ((Ptr Surface -> IO Status) -> IO Status)
-> (Ptr Surface -> IO Status) -> IO Status
forall a b. (a -> b) -> a -> b
$ \Ptr Surface
a1' ->
FilePath -> (CString -> IO Status) -> IO Status
forall a. FilePath -> (CString -> IO a) -> IO a
withCAString FilePath
a2 ((CString -> IO Status) -> IO Status)
-> (CString -> IO Status) -> IO Status
forall a b. (a -> b) -> a -> b
$ \CString
a2' ->
Ptr Surface -> CString -> IO CInt
surfaceWriteToPNG'_ Ptr Surface
a1' CString
a2' IO CInt -> (CInt -> IO Status) -> IO Status
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \CInt
res ->
let {res' :: Status
res' = CInt -> Status
forall i e. (Integral i, Enum e) => i -> e
cToEnum CInt
res} in
Status -> IO Status
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Status
res')
{-# LINE 33 "./Graphics/Rendering/Cairo/Internal/Surfaces/PNG.chs" #-}
foreign import ccall unsafe "cairo_image_surface_create_from_png"
cairo_image_surface_create_from_png :: ((Ptr CChar) -> (IO (Ptr Surface)))
foreign import ccall safe "cairo_surface_write_to_png"
surfaceWriteToPNG'_ :: ((Ptr Surface) -> ((Ptr CChar) -> (IO CInt)))