module Graphics.ImageMagick.MagickWand.PixelPacket ( getPixelRed , setPixelRed , getPixelBlue , setPixelBlue , getPixelGreen , setPixelGreen , getPixelIndex , setPixelIndex ) where import Control.Monad.IO.Class import Foreign import qualified Graphics.ImageMagick.MagickWand.FFI.Types as F import Graphics.ImageMagick.MagickWand.Types getPixel' :: (MonadIO m) => (Ptr F.MagickPixelPacket -> IO MagickRealType) -> PMagickPixelPacket -> m MagickRealType getPixel' f wp = liftIO $ withForeignPtr wp f {-# INLINE getPixel' #-} getPixelRed :: (MonadIO m) => PMagickPixelPacket -> m MagickRealType getPixelRed = getPixel' F.getPixelRed getPixelBlue :: (MonadIO m) => PMagickPixelPacket -> m MagickRealType getPixelBlue = getPixel' F.getPixelBlue getPixelGreen :: (MonadIO m) => PMagickPixelPacket -> m MagickRealType getPixelGreen = getPixel' F.getPixelGreen getPixelIndex :: (MonadIO m) => PMagickPixelPacket -> m MagickRealType getPixelIndex = getPixel' F.getPixelIndex setPixel' :: (MonadIO m) => (Ptr F.MagickPixelPacket -> MagickRealType -> IO ()) -> PMagickPixelPacket -> MagickRealType -> m () setPixel' f wp c = liftIO $ withForeignPtr wp (`f` c) {-# INLINE setPixel' #-} setPixelRed :: (MonadIO m) => PMagickPixelPacket -> MagickRealType -> m () setPixelRed = setPixel' F.setPixelRed setPixelIndex :: (MonadIO m) => PMagickPixelPacket -> MagickRealType -> m () setPixelIndex = setPixel' F.setPixelIndex setPixelGreen :: (MonadIO m) => PMagickPixelPacket -> MagickRealType -> m () setPixelGreen = setPixel' F.setPixelGreen setPixelBlue :: (MonadIO m) => PMagickPixelPacket -> MagickRealType -> m () setPixelBlue = setPixel' F.setPixelBlue