packages feed

union-color 0.1.3.0 → 0.1.4.0

raw patch · 3 files changed

+157/−2 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Data.Color: data GrayAlpha d
+ Data.Color: fromGrayAlpha :: GrayAlpha d -> (Gray d, Alpha d)
+ Data.Color: grayAlphaDouble :: RealFrac d => d -> d -> Maybe (GrayAlpha d)
+ Data.Color: grayAlphaRealToFrac :: (Real d, Fractional d') => GrayAlpha d -> GrayAlpha d'
+ Data.Color: grayRealToFrac :: (Real d, Fractional d') => Gray d -> Gray d'
+ Data.Color: toGrayAlpha :: RealFrac d => Gray d -> Alpha d -> GrayAlpha d
+ Data.Color.Internal.GrayScale: GrayAlphaDouble_ :: d -> d -> GrayAlpha d
+ Data.Color.Internal.GrayScale: GrayAlphaInt32_ :: Int32 -> Int32 -> GrayAlpha d
+ Data.Color.Internal.GrayScale: GrayAlphaWord16_ :: Word16 -> Word16 -> GrayAlpha d
+ Data.Color.Internal.GrayScale: GrayAlphaWord32_ :: Word32 -> Word32 -> GrayAlpha d
+ Data.Color.Internal.GrayScale: GrayAlphaWord8_ :: Word8 -> Word8 -> GrayAlpha d
+ Data.Color.Internal.GrayScale: data GrayAlpha d
+ Data.Color.Internal.GrayScale: fromGrayAlpha :: GrayAlpha d -> (Gray d, Alpha d)
+ Data.Color.Internal.GrayScale: fromGrayAlphaInt32 :: RealFrac d => GrayAlpha d -> (Int32, Int32)
+ Data.Color.Internal.GrayScale: fromGrayAlphaWord16 :: RealFrac d => GrayAlpha d -> (Word16, Word16)
+ Data.Color.Internal.GrayScale: fromGrayAlphaWord32 :: RealFrac d => GrayAlpha d -> (Word32, Word32)
+ Data.Color.Internal.GrayScale: fromGrayAlphaWord8 :: RealFrac d => GrayAlpha d -> (Word8, Word8)
+ Data.Color.Internal.GrayScale: grayAlphaDouble :: RealFrac d => d -> d -> Maybe (GrayAlpha d)
+ Data.Color.Internal.GrayScale: grayAlphaRealToFrac :: (Real d, Fractional d') => GrayAlpha d -> GrayAlpha d'
+ Data.Color.Internal.GrayScale: grayAlphaToFrac :: RealFrac d => GrayAlpha d -> (d, d)
+ Data.Color.Internal.GrayScale: grayRealToFrac :: (Real d, Fractional d') => Gray d -> Gray d'
+ Data.Color.Internal.GrayScale: instance GHC.Show.Show d => GHC.Show.Show (Data.Color.Internal.GrayScale.GrayAlpha d)
+ Data.Color.Internal.GrayScale: toGrayAlpha :: RealFrac d => Gray d -> Alpha d -> GrayAlpha d
- Data.Color: pattern GrayInt32 :: RealFrac d => Int32 -> Gray d
+ Data.Color: pattern GrayAlphaInt32 :: RealFrac d => Int32 -> Int32 -> GrayAlpha d
- Data.Color: pattern GrayWord16 :: RealFrac d => Word16 -> Gray d
+ Data.Color: pattern GrayAlphaWord16 :: RealFrac d => Word16 -> Word16 -> GrayAlpha d
- Data.Color: pattern GrayWord32 :: RealFrac d => Word32 -> Gray d
+ Data.Color: pattern GrayAlphaWord32 :: RealFrac d => Word32 -> Word32 -> GrayAlpha d
- Data.Color: pattern GrayWord8 :: RealFrac d => Word8 -> Gray d
+ Data.Color: pattern GrayAlphaWord8 :: RealFrac d => Word8 -> Word8 -> GrayAlpha d
- Data.Color: pattern GrayDouble :: RealFrac d => d -> Gray d
+ Data.Color: pattern GrayAlphaDouble :: RealFrac d => d -> d -> GrayAlpha d
- Data.Color.Internal.GrayScale: pattern GrayInt32 :: RealFrac d => Int32 -> Gray d
+ Data.Color.Internal.GrayScale: pattern GrayAlphaInt32 :: RealFrac d => Int32 -> Int32 -> GrayAlpha d
- Data.Color.Internal.GrayScale: pattern GrayWord16 :: RealFrac d => Word16 -> Gray d
+ Data.Color.Internal.GrayScale: pattern GrayAlphaWord16 :: RealFrac d => Word16 -> Word16 -> GrayAlpha d
- Data.Color.Internal.GrayScale: pattern GrayWord32 :: RealFrac d => Word32 -> Gray d
+ Data.Color.Internal.GrayScale: pattern GrayAlphaWord32 :: RealFrac d => Word32 -> Word32 -> GrayAlpha d
- Data.Color.Internal.GrayScale: pattern GrayWord8 :: RealFrac d => Word8 -> Gray d
+ Data.Color.Internal.GrayScale: pattern GrayAlphaWord8 :: RealFrac d => Word8 -> Word8 -> GrayAlpha d
- Data.Color.Internal.GrayScale: pattern GrayDouble :: RealFrac d => d -> Gray d
+ Data.Color.Internal.GrayScale: pattern GrayAlphaDouble :: RealFrac d => d -> d -> GrayAlpha d

Files

src/Data/Color.hs view
@@ -44,9 +44,26 @@ 	pattern GrayWord4, grayWord4, 	pattern GrayWord8, pattern GrayWord16, pattern GrayWord32, 	pattern GrayInt32,-	pattern GrayDouble, grayDouble+	pattern GrayDouble, grayDouble, +	-- ** Convert Fractional++	grayRealToFrac,+ 	-- * GRAY SCALE WITH ALPHA++	GrayAlpha,+	pattern GrayAlphaWord8, pattern GrayAlphaWord16,+	pattern GrayAlphaWord32, pattern GrayAlphaInt32,+	pattern GrayAlphaDouble, grayAlphaDouble,++	-- ** From and To Gray and Alpha++	toGrayAlpha, fromGrayAlpha,++	-- ** Convert Fractional++	grayAlphaRealToFrac  	) where 
src/Data/Color/Internal/GrayScale.hs view
@@ -10,6 +10,8 @@  import Data.Color.Internal +-- GRAY+ data Gray d 	= GrayWord1_ Word8 | GrayWord2_ Word8 | GrayWord4_ Word8 	| GrayWord8_ Word8 | GrayWord16_ Word16 | GrayWord32_ Word32@@ -267,6 +269,17 @@ 	GrayInt32_ x -> int32ToFrac x 	GrayDouble_ x -> x +grayRealToFrac :: (Real d, Fractional d') => Gray d -> Gray d'+grayRealToFrac = \case+	GrayWord1_ x -> GrayWord1_ x+	GrayWord2_ x -> GrayWord2_ x+	GrayWord4_ x -> GrayWord4_ x+	GrayWord8_ x -> GrayWord8_ x+	GrayWord16_ x -> GrayWord16_ x+	GrayWord32_ x -> GrayWord32_ x+	GrayInt32_ x -> GrayInt32_ x+	GrayDouble_ x -> GrayDouble_ $ realToFrac x+ word1ToFrac :: Fractional d => Word8 -> d word1ToFrac = fromIntegral @@ -287,3 +300,128 @@  int32ToFrac :: Fractional d => Int32 -> d int32ToFrac = (/ 0x7fffffff) . fromIntegral++-- GRAY ALPHA++data GrayAlpha d+	= GrayAlphaWord8_ Word8 Word8+	| GrayAlphaWord16_ Word16 Word16+	| GrayAlphaWord32_ Word32 Word32+	| GrayAlphaInt32_ Int32 Int32+	| GrayAlphaDouble_ d d+	deriving Show++{-# COMPLETE GrayAlphaWord8 #-}++pattern GrayAlphaWord8 :: RealFrac d => Word8 -> Word8 -> GrayAlpha d+pattern GrayAlphaWord8 x a <- (fromGrayAlphaWord8 -> (x, a)) where+	GrayAlphaWord8 = GrayAlphaWord8_++fromGrayAlphaWord8 :: RealFrac d => GrayAlpha d -> (Word8, Word8)+fromGrayAlphaWord8 = \case+	GrayAlphaWord8_ x a -> (x, a)+	GrayAlphaWord16_ x a ->+		(fromIntegral $ x `shiftR` 8, fromIntegral $ a `shiftR` 8)+	GrayAlphaWord32_ x a ->+		(fromIntegral $ x `shiftR` 24, fromIntegral $ a `shiftR` 24)+	GrayAlphaInt32_ x a ->+		(fromIntegral $ x `shiftR` 23, fromIntegral $ a `shiftR` 23)+	GrayAlphaDouble_ x a -> (fracToWord8 x, fracToWord8 a)++{-# COMPLETE GrayAlphaWord16 #-}++pattern GrayAlphaWord16 :: RealFrac d => Word16 -> Word16 -> GrayAlpha d+pattern GrayAlphaWord16 x a <- (fromGrayAlphaWord16 -> (x, a)) where+	GrayAlphaWord16 = GrayAlphaWord16_++fromGrayAlphaWord16 :: RealFrac d => GrayAlpha d -> (Word16, Word16)+fromGrayAlphaWord16 = \case+	GrayAlphaWord8_ (fromIntegral -> x) (fromIntegral -> a) ->+		(x `shiftL` 8 .|. x, a `shiftL` 8 .|. a)+	GrayAlphaWord16_ x a -> (x, a)+	GrayAlphaWord32_ x a ->+		(fromIntegral $ x `shiftR` 16, fromIntegral $ a `shiftR` 16)+	GrayAlphaInt32_ x a ->+		(fromIntegral $ x `shiftR` 15, fromIntegral $ a `shiftR` 15)+	GrayAlphaDouble_ x a -> (fracToWord16 x, fracToWord16 a)++{-# COMPLETE GrayAlphaWord32 #-}++pattern GrayAlphaWord32 :: RealFrac d => Word32 -> Word32 -> GrayAlpha d+pattern GrayAlphaWord32 x a <- (fromGrayAlphaWord32 -> (x, a)) where+	GrayAlphaWord32 = GrayAlphaWord32_++fromGrayAlphaWord32 :: RealFrac d => GrayAlpha d -> (Word32, Word32)+fromGrayAlphaWord32 = \case+	GrayAlphaWord8_ (fromIntegral -> x) (fromIntegral -> a) -> (+		x `shiftL` 24 .|. x `shiftL` 16 .|. x `shiftL` 8 .|. x,+		a `shiftL` 24 .|. a `shiftL` 16 .|. a `shiftL` 8 .|. a )+	GrayAlphaWord16_ (fromIntegral -> x) (fromIntegral -> a) ->+		(x `shiftL` 16 .|. x, a `shiftL` 16 .|. a)+	GrayAlphaWord32_ x a -> (x, a)+	GrayAlphaInt32_ (fromIntegral -> x) (fromIntegral -> a) ->+		(x `shiftL` 1 .|. x `shiftR` 31, a `shiftL` 1 .|. a `shiftR` 31)+	GrayAlphaDouble_ x a -> (fracToWord32 x, fracToWord32 a)++{-# COMPLETE GrayAlphaInt32 #-}++pattern GrayAlphaInt32 :: RealFrac d => Int32 -> Int32 -> GrayAlpha d+pattern GrayAlphaInt32 x a <- (fromGrayAlphaInt32 -> (x, a)) where+	GrayAlphaInt32 = GrayAlphaInt32_++fromGrayAlphaInt32 :: RealFrac d => GrayAlpha d -> (Int32, Int32)+fromGrayAlphaInt32 = \case+	GrayAlphaWord8_ (fromIntegral -> x) (fromIntegral -> a) -> (+		x `shiftL` 23 .|. x `shiftL` 15 .|.+		x `shiftL` 7 .|. x `shiftR` 1,+		a `shiftL` 23 .|. a `shiftL` 15 .|.+		a `shiftL` 7 .|. x `shiftR` 1 )+	GrayAlphaWord16_ (fromIntegral -> x) (fromIntegral -> a) -> (+		x `shiftL` 15 .|. x `shiftR` 1,+		a `shiftL` 15 .|. x `shiftR` 1 )+	GrayAlphaWord32_ x a ->+		(fromIntegral $ x `shiftR` 1, fromIntegral $ a `shiftR` 1)+	GrayAlphaInt32_ x a -> (x, a)+	GrayAlphaDouble_ x a -> (fracToInt32 x, fracToInt32 a)++{-# COMPLETE GrayAlphaDouble #-}++pattern GrayAlphaDouble :: RealFrac d => d -> d -> GrayAlpha d+pattern GrayAlphaDouble x a <- (grayAlphaToFrac -> (x, a))++grayAlphaDouble :: RealFrac d => d -> d -> Maybe (GrayAlpha d)+grayAlphaDouble x a+	| 0 <= x && x <= 1, 0 <= a && a <= 1 = Just $ GrayAlphaDouble_ x a+	| otherwise = Nothing++grayAlphaToFrac :: RealFrac d => GrayAlpha d -> (d, d)+grayAlphaToFrac = \case+	GrayAlphaWord8_ x a -> (word8ToFrac x, word8ToFrac a)+	GrayAlphaWord16_ x a -> (word16ToFrac x, word16ToFrac a)+	GrayAlphaWord32_ x a -> (word32ToFrac x, word32ToFrac a)+	GrayAlphaInt32_ x a -> (int32ToFrac x, int32ToFrac a)+	GrayAlphaDouble_ x a -> (x, a)++fromGrayAlpha :: GrayAlpha d -> (Gray d, Alpha d)+fromGrayAlpha = \case+	(GrayAlphaWord8_ x a) -> (GrayWord8_ x, AlphaWord8_ a)+	(GrayAlphaWord16_ x a) -> (GrayWord16_ x, AlphaWord16_ a)+	(GrayAlphaWord32_ x a) -> (GrayWord32_ x, AlphaWord32_ a)+	(GrayAlphaInt32_ x a) -> (GrayInt32_ x, AlphaInt32_ a)+	(GrayAlphaDouble_ x a) -> (GrayDouble_ x, AlphaDouble_ a)++toGrayAlpha :: RealFrac d => Gray d -> Alpha d -> GrayAlpha d+toGrayAlpha (GrayWord8_ x) (AlphaWord8 a) = GrayAlphaWord8 x a+toGrayAlpha (GrayWord16_ x) (AlphaWord16 a) = GrayAlphaWord16 x a+toGrayAlpha (GrayWord32_ x) (AlphaWord32 a) = GrayAlphaWord32 x a+toGrayAlpha (GrayInt32_ x) (AlphaInt32 a) = GrayAlphaInt32 x a+toGrayAlpha (GrayDouble_ x) (AlphaDouble a) = GrayAlphaDouble_ x a+toGrayAlpha (GrayWord8 x) (AlphaWord8 a) = GrayAlphaWord8 x a++grayAlphaRealToFrac :: (Real d, Fractional d') => GrayAlpha d -> GrayAlpha d'+grayAlphaRealToFrac = \case+	GrayAlphaWord8_ x a -> GrayAlphaWord8_ x a+	GrayAlphaWord16_ x a -> GrayAlphaWord16_ x a+	GrayAlphaWord32_ x a -> GrayAlphaWord32_ x a+	GrayAlphaInt32_ x a -> GrayAlphaInt32_ x a+	GrayAlphaDouble_ x a -> GrayAlphaDouble_ (realToFrac x) (realToFrac a)
union-color.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           union-color-version:        0.1.3.0+version:        0.1.4.0 synopsis:       Unify verious color formats description:    Please see the README on GitHub at <https://github.com/YoshikuniJujo/union-color#readme> category:       data, graphics