{-# LANGUAGE DeriveGeneric #-} module Data.STBImage.ColorTypes (YColor(..), YAColor(..), RGBColor(..), RGBAColor(..)) where import Foreign import Foreign.C.Types import GHC.Generics {-# ANN module ("HLint: ignore Reduce duplication"::String) #-} data YColor = YColor { YColor -> Word8 _yGreyscale :: Word8 } deriving (YColor -> YColor -> Bool (YColor -> YColor -> Bool) -> (YColor -> YColor -> Bool) -> Eq YColor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: YColor -> YColor -> Bool $c/= :: YColor -> YColor -> Bool == :: YColor -> YColor -> Bool $c== :: YColor -> YColor -> Bool Eq, (forall x. YColor -> Rep YColor x) -> (forall x. Rep YColor x -> YColor) -> Generic YColor forall x. Rep YColor x -> YColor forall x. YColor -> Rep YColor x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep YColor x -> YColor $cfrom :: forall x. YColor -> Rep YColor x Generic) instance Storable YColor where sizeOf :: YColor -> Int sizeOf _ = 1 alignment :: YColor -> Int alignment _ = 1 peek :: Ptr YColor -> IO YColor peek ptr :: Ptr YColor ptr = do let ptr' :: Ptr Word8 ptr' = Ptr YColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr YColor ptr :: Ptr Word8 Word8 y <- Ptr Word8 -> IO Word8 forall a. Storable a => Ptr a -> IO a peek Ptr Word8 ptr' YColor -> IO YColor forall (m :: * -> *) a. Monad m => a -> m a return (YColor -> IO YColor) -> YColor -> IO YColor forall a b. (a -> b) -> a -> b $ Word8 -> YColor YColor Word8 y poke :: Ptr YColor -> YColor -> IO () poke ptr :: Ptr YColor ptr (YColor y :: Word8 y) = Ptr Word8 -> Word8 -> IO () forall a. Storable a => Ptr a -> a -> IO () poke (Ptr YColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr YColor ptr :: Ptr Word8) Word8 y data YAColor = YAColor { YAColor -> Word8 _yaGreyscale :: Word8, YAColor -> Word8 _yaAlpha :: Word8 } deriving (YAColor -> YAColor -> Bool (YAColor -> YAColor -> Bool) -> (YAColor -> YAColor -> Bool) -> Eq YAColor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: YAColor -> YAColor -> Bool $c/= :: YAColor -> YAColor -> Bool == :: YAColor -> YAColor -> Bool $c== :: YAColor -> YAColor -> Bool Eq, (forall x. YAColor -> Rep YAColor x) -> (forall x. Rep YAColor x -> YAColor) -> Generic YAColor forall x. Rep YAColor x -> YAColor forall x. YAColor -> Rep YAColor x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep YAColor x -> YAColor $cfrom :: forall x. YAColor -> Rep YAColor x Generic) instance Storable YAColor where sizeOf :: YAColor -> Int sizeOf _ = 2 alignment :: YAColor -> Int alignment _ = 1 peek :: Ptr YAColor -> IO YAColor peek ptr :: Ptr YAColor ptr = do let ptr' :: Ptr Word8 ptr' = Ptr YAColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr YAColor ptr :: Ptr Word8 Word8 y <- Ptr Word8 -> IO Word8 forall a. Storable a => Ptr a -> IO a peek Ptr Word8 ptr' Word8 a <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 1 YAColor -> IO YAColor forall (m :: * -> *) a. Monad m => a -> m a return (YAColor -> IO YAColor) -> YAColor -> IO YAColor forall a b. (a -> b) -> a -> b $ Word8 -> Word8 -> YAColor YAColor Word8 y Word8 a poke :: Ptr YAColor -> YAColor -> IO () poke ptr :: Ptr YAColor ptr (YAColor y :: Word8 y a :: Word8 a) = do let ptr' :: Ptr Word8 ptr' = Ptr YAColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr YAColor ptr :: Ptr Word8 Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 0 Word8 y Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 1 Word8 a data RGBColor = RGBColor { RGBColor -> Word8 _rgbRed :: Word8, RGBColor -> Word8 _rgbGreen :: Word8, RGBColor -> Word8 _rgbBlue :: Word8 } deriving (RGBColor -> RGBColor -> Bool (RGBColor -> RGBColor -> Bool) -> (RGBColor -> RGBColor -> Bool) -> Eq RGBColor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: RGBColor -> RGBColor -> Bool $c/= :: RGBColor -> RGBColor -> Bool == :: RGBColor -> RGBColor -> Bool $c== :: RGBColor -> RGBColor -> Bool Eq, (forall x. RGBColor -> Rep RGBColor x) -> (forall x. Rep RGBColor x -> RGBColor) -> Generic RGBColor forall x. Rep RGBColor x -> RGBColor forall x. RGBColor -> Rep RGBColor x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep RGBColor x -> RGBColor $cfrom :: forall x. RGBColor -> Rep RGBColor x Generic) instance Storable RGBColor where sizeOf :: RGBColor -> Int sizeOf _ = 3 alignment :: RGBColor -> Int alignment _ = 1 peek :: Ptr RGBColor -> IO RGBColor peek ptr :: Ptr RGBColor ptr = do let ptr' :: Ptr Word8 ptr' = Ptr RGBColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr RGBColor ptr :: Ptr Word8 Word8 r <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 0 Word8 g <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 1 Word8 b <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 2 RGBColor -> IO RGBColor forall (m :: * -> *) a. Monad m => a -> m a return (RGBColor -> IO RGBColor) -> RGBColor -> IO RGBColor forall a b. (a -> b) -> a -> b $ Word8 -> Word8 -> Word8 -> RGBColor RGBColor Word8 r Word8 g Word8 b poke :: Ptr RGBColor -> RGBColor -> IO () poke ptr :: Ptr RGBColor ptr (RGBColor r :: Word8 r g :: Word8 g b :: Word8 b) = do let ptr' :: Ptr Word8 ptr' = Ptr RGBColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr RGBColor ptr :: Ptr Word8 Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 0 Word8 r Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 1 Word8 g Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 2 Word8 b data RGBAColor = RGBAColor { RGBAColor -> Word8 _rgbaRed :: Word8, RGBAColor -> Word8 _rgbaGreen :: Word8, RGBAColor -> Word8 _rgbaBlue :: Word8, RGBAColor -> Word8 _rgbaAlpha :: Word8 } deriving (RGBAColor -> RGBAColor -> Bool (RGBAColor -> RGBAColor -> Bool) -> (RGBAColor -> RGBAColor -> Bool) -> Eq RGBAColor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: RGBAColor -> RGBAColor -> Bool $c/= :: RGBAColor -> RGBAColor -> Bool == :: RGBAColor -> RGBAColor -> Bool $c== :: RGBAColor -> RGBAColor -> Bool Eq, (forall x. RGBAColor -> Rep RGBAColor x) -> (forall x. Rep RGBAColor x -> RGBAColor) -> Generic RGBAColor forall x. Rep RGBAColor x -> RGBAColor forall x. RGBAColor -> Rep RGBAColor x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep RGBAColor x -> RGBAColor $cfrom :: forall x. RGBAColor -> Rep RGBAColor x Generic) instance Storable RGBAColor where sizeOf :: RGBAColor -> Int sizeOf _ = 4 alignment :: RGBAColor -> Int alignment _ = 1 peek :: Ptr RGBAColor -> IO RGBAColor peek ptr :: Ptr RGBAColor ptr = do let ptr' :: Ptr Word8 ptr' = Ptr RGBAColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr RGBAColor ptr :: Ptr Word8 Word8 r <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 0 Word8 g <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 1 Word8 b <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 2 Word8 a <- Ptr Word8 -> Int -> IO Word8 forall a. Storable a => Ptr a -> Int -> IO a peekElemOff Ptr Word8 ptr' 3 RGBAColor -> IO RGBAColor forall (m :: * -> *) a. Monad m => a -> m a return (RGBAColor -> IO RGBAColor) -> RGBAColor -> IO RGBAColor forall a b. (a -> b) -> a -> b $ Word8 -> Word8 -> Word8 -> Word8 -> RGBAColor RGBAColor Word8 r Word8 g Word8 b Word8 a poke :: Ptr RGBAColor -> RGBAColor -> IO () poke ptr :: Ptr RGBAColor ptr (RGBAColor r :: Word8 r g :: Word8 g b :: Word8 b a :: Word8 a) = do let ptr' :: Ptr Word8 ptr' = Ptr RGBAColor -> Ptr Word8 forall a b. Ptr a -> Ptr b castPtr Ptr RGBAColor ptr :: Ptr Word8 Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 0 Word8 r Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 1 Word8 g Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 2 Word8 b Ptr Word8 -> Int -> Word8 -> IO () forall a. Storable a => Ptr a -> Int -> a -> IO () pokeElemOff Ptr Word8 ptr' 3 Word8 a