| Copyright | (c) Alexey Kuleshevich 2019-2025 |
|---|---|
| License | BSD3 |
| Maintainer | Alexey Kuleshevich <lehins@yandex.ru> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Graphics.Color.Algebra
Description
Synopsis
- data V2 a = V2 !a !a
- data V3 a = V3 !a !a !a
- showV3 :: Show a => V3 a -> String
- dotProduct :: Num a => V3 a -> V3 a -> a
- data M3x3 a = M3x3 {}
- showM3x3 :: Show a => M3x3 a -> String
- detM3x3 :: Num a => M3x3 a -> a
- invertM3x3 :: Fractional a => M3x3 a -> M3x3 a
- multM3x3byV3 :: Num a => M3x3 a -> V3 a -> V3 a
- multM3x3byM3x3 :: Num a => M3x3 a -> M3x3 a -> M3x3 a
- multM3x3byV3d :: Num a => M3x3 a -> V3 a -> M3x3 a
- transposeM3x3 :: M3x3 a -> M3x3 a
- class (Show e, Eq e, Num e, Typeable e, Unbox e, Storable e) => Elevator e where
- maxValue :: e
- minValue :: e
- fieldFormat :: e -> FieldFormat
- toShowS :: e -> ShowS
- toWord8 :: e -> Word8
- fromWord8 :: Word8 -> e
- toWord16 :: e -> Word16
- toWord32 :: e -> Word32
- toWord64 :: e -> Word64
- toRealFloat :: (Elevator a, RealFloat a) => e -> a
- fromRealFloat :: (Elevator a, RealFloat a) => a -> e
- toFloat :: e -> Float
- toDouble :: e -> Double
- fromDouble :: Double -> e
- (//) :: e -> e -> e
- data Word8
- data Word
- data Word64
- data Word32
- data Word16
- byteSwap16 :: Word16 -> Word16
- byteSwap32 :: Word32 -> Word32
- byteSwap64 :: Word64 -> Word64
- bitReverse8 :: Word8 -> Word8
- bitReverse16 :: Word16 -> Word16
- bitReverse32 :: Word32 -> Word32
- bitReverse64 :: Word64 -> Word64
- clamp01 :: RealFloat a => a -> a
- showsType :: forall {k} (t :: k) proxy. Typeable t => proxy t -> ShowS
- asProxy :: p -> (Proxy p -> t) -> t
2D
A 2D vector with x and y coordinates.
Constructors
| V2 !a !a |
Instances
| Foldable V2 Source # | |
Defined in Graphics.Color.Algebra Methods fold :: Monoid m => V2 m -> m # foldMap :: Monoid m => (a -> m) -> V2 a -> m # foldMap' :: Monoid m => (a -> m) -> V2 a -> m # foldr :: (a -> b -> b) -> b -> V2 a -> b # foldr' :: (a -> b -> b) -> b -> V2 a -> b # foldl :: (b -> a -> b) -> b -> V2 a -> b # foldl' :: (b -> a -> b) -> b -> V2 a -> b # foldr1 :: (a -> a -> a) -> V2 a -> a # foldl1 :: (a -> a -> a) -> V2 a -> a # elem :: Eq a => a -> V2 a -> Bool # maximum :: Ord a => V2 a -> a # | |
| Traversable V2 Source # | |
| Applicative V2 Source # | |
| Functor V2 Source # | |
| Storable e => Storable (V2 e) Source # | |
| Floating a => Floating (V2 a) Source # | |
| Num a => Num (V2 a) Source # | |
| Fractional a => Fractional (V2 a) Source # | |
| Elevator a => Show (V2 a) Source # | |
| Eq a => Eq (V2 a) Source # | |
| Ord a => Ord (V2 a) Source # | |
3D
A 3D vector with x, y and z coordinates.
Constructors
| V3 !a !a !a |
Instances
| Foldable V3 Source # | |
Defined in Graphics.Color.Algebra Methods fold :: Monoid m => V3 m -> m # foldMap :: Monoid m => (a -> m) -> V3 a -> m # foldMap' :: Monoid m => (a -> m) -> V3 a -> m # foldr :: (a -> b -> b) -> b -> V3 a -> b # foldr' :: (a -> b -> b) -> b -> V3 a -> b # foldl :: (b -> a -> b) -> b -> V3 a -> b # foldl' :: (b -> a -> b) -> b -> V3 a -> b # foldr1 :: (a -> a -> a) -> V3 a -> a # foldl1 :: (a -> a -> a) -> V3 a -> a # elem :: Eq a => a -> V3 a -> Bool # maximum :: Ord a => V3 a -> a # | |
| Traversable V3 Source # | |
| Applicative V3 Source # | |
| Functor V3 Source # | |
| Storable e => Storable (V3 e) Source # | |
| Floating a => Floating (V3 a) Source # | |
| Num a => Num (V3 a) Source # | |
| Fractional a => Fractional (V3 a) Source # | |
| Elevator a => Show (V3 a) Source # | |
| Eq a => Eq (V3 a) Source # | |
| Ord a => Ord (V3 a) Source # | |
dotProduct :: Num a => V3 a -> V3 a -> a Source #
Mulitply a 1x3 vector by a 3x1 vector, i.e. dot product.
Since: 0.1.0
A 3x3 Matrix
Instances
| Foldable M3x3 Source # | |
Defined in Graphics.Color.Algebra Methods fold :: Monoid m => M3x3 m -> m # foldMap :: Monoid m => (a -> m) -> M3x3 a -> m # foldMap' :: Monoid m => (a -> m) -> M3x3 a -> m # foldr :: (a -> b -> b) -> b -> M3x3 a -> b # foldr' :: (a -> b -> b) -> b -> M3x3 a -> b # foldl :: (b -> a -> b) -> b -> M3x3 a -> b # foldl' :: (b -> a -> b) -> b -> M3x3 a -> b # foldr1 :: (a -> a -> a) -> M3x3 a -> a # foldl1 :: (a -> a -> a) -> M3x3 a -> a # elem :: Eq a => a -> M3x3 a -> Bool # maximum :: Ord a => M3x3 a -> a # | |
| Traversable M3x3 Source # | |
| Applicative M3x3 Source # | |
| Functor M3x3 Source # | |
| Floating a => Floating (M3x3 a) Source # | |
| Num a => Num (M3x3 a) Source # | |
| Fractional a => Fractional (M3x3 a) Source # | |
| Elevator a => Show (M3x3 a) Source # | |
| Eq a => Eq (M3x3 a) Source # | |
invertM3x3 :: Fractional a => M3x3 a -> M3x3 a Source #
Invert a 3x3 matrix.
Since: 0.1.0
multM3x3byV3 :: Num a => M3x3 a -> V3 a -> V3 a Source #
Mulitply a 3x3 matrix by a 3x1 vector, while getting a vector back.
Since: 0.1.0
multM3x3byV3d :: Num a => M3x3 a -> V3 a -> M3x3 a Source #
Multiply a 3x3 matrix by another 3x3 diagonal matrix represented by a 1x3 vector
transposeM3x3 :: M3x3 a -> M3x3 a Source #
class (Show e, Eq e, Num e, Typeable e, Unbox e, Storable e) => Elevator e where Source #
A class with a set of functions that allow for changing precision by shrinking and streatching the values.
Minimal complete definition
maxValue, minValue, toWord8, fromWord8, toWord16, toWord32, toWord64, toRealFloat, fromRealFloat, (//)
Methods
fieldFormat :: e -> FieldFormat Source #
toShowS :: e -> ShowS Source #
This is a pretty printer for the value.
toWord8 :: e -> Word8 Source #
Values are scaled to [0, 255] range.
fromWord8 :: Word8 -> e Source #
Values are scaled from [0, 255] range to [minValue, maxValue].
toWord16 :: e -> Word16 Source #
Values are scaled to [0, 65535] range.
toWord32 :: e -> Word32 Source #
Values are scaled to [0, 4294967295] range.
toWord64 :: e -> Word64 Source #
Values are scaled to [0, 18446744073709551615] range.
toRealFloat :: (Elevator a, RealFloat a) => e -> a Source #
Values are scaled to [0.0, 1.0] range.
fromRealFloat :: (Elevator a, RealFloat a) => a -> e Source #
Values are scaled from [0.0, 1.0] range.
toFloat :: e -> Float Source #
Values are scaled to [0.0, 1.0] range.
toDouble :: e -> Double Source #
Values are scaled to [0.0, 1.0] range.
fromDouble :: Double -> e Source #
Values are scaled from [0.0, 1.0] range.
(//) :: e -> e -> e infixl 7 Source #
Division that works for integral types as well as floating points. May throw an exception.
Instances
8-bit unsigned integer type
Instances
| Elevator Word8 Source # | Values between |
Defined in Graphics.Color.Algebra.Elevator Methods fieldFormat :: Word8 -> FieldFormat Source # toShowS :: Word8 -> ShowS Source # toWord8 :: Word8 -> Word8 Source # fromWord8 :: Word8 -> Word8 Source # toWord16 :: Word8 -> Word16 Source # toWord32 :: Word8 -> Word32 Source # toWord64 :: Word8 -> Word64 Source # toRealFloat :: (Elevator a, RealFloat a) => Word8 -> a Source # fromRealFloat :: (Elevator a, RealFloat a) => a -> Word8 Source # toFloat :: Word8 -> Float Source # toDouble :: Word8 -> Double Source # fromDouble :: Double -> Word8 Source # | |
| Data Word8 | Since: base-4.0.0.0 |
Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word8 -> c Word8 # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word8 # dataTypeOf :: Word8 -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Word8) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word8) # gmapT :: (forall b. Data b => b -> b) -> Word8 -> Word8 # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word8 -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word8 -> r # gmapQ :: (forall d. Data d => d -> u) -> Word8 -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Word8 -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word8 -> m Word8 # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word8 -> m Word8 # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word8 -> m Word8 # | |
| Storable Word8 | Since: base-2.1 |
| Bits Word8 | Since: base-2.1 |
Defined in GHC.Word Methods (.&.) :: Word8 -> Word8 -> Word8 # (.|.) :: Word8 -> Word8 -> Word8 # xor :: Word8 -> Word8 -> Word8 # complement :: Word8 -> Word8 # shift :: Word8 -> Int -> Word8 # rotate :: Word8 -> Int -> Word8 # setBit :: Word8 -> Int -> Word8 # clearBit :: Word8 -> Int -> Word8 # complementBit :: Word8 -> Int -> Word8 # testBit :: Word8 -> Int -> Bool # bitSizeMaybe :: Word8 -> Maybe Int # shiftL :: Word8 -> Int -> Word8 # unsafeShiftL :: Word8 -> Int -> Word8 # shiftR :: Word8 -> Int -> Word8 # unsafeShiftR :: Word8 -> Int -> Word8 # rotateL :: Word8 -> Int -> Word8 # | |
| FiniteBits Word8 | Since: base-4.6.0.0 |
Defined in GHC.Word Methods finiteBitSize :: Word8 -> Int # countLeadingZeros :: Word8 -> Int # countTrailingZeros :: Word8 -> Int # | |
| Bounded Word8 | Since: base-2.1 |
| Enum Word8 | Since: base-2.1 |
| Ix Word8 | Since: base-2.1 |
| Num Word8 | Since: base-2.1 |
| Read Word8 | Since: base-2.1 |
| Integral Word8 | Since: base-2.1 |
| Real Word8 | Since: base-2.1 |
Defined in GHC.Word Methods toRational :: Word8 -> Rational # | |
| Show Word8 | Since: base-2.1 |
| PrintfArg Word8 | Since: base-2.1 |
Defined in Text.Printf | |
| Default Word8 | |
Defined in Data.Default.Internal | |
| NFData Word8 | |
Defined in Control.DeepSeq | |
| Eq Word8 | Since: base-2.1 |
| Ord Word8 | Since: base-2.1 |
| Unbox Word8 | |
Defined in Data.Vector.Unboxed.Base | |
| Lift Word8 | |
| Vector Vector Word8 | |
Defined in Data.Vector.Unboxed.Base Methods basicUnsafeFreeze :: Mutable Vector s Word8 -> ST s (Vector Word8) basicUnsafeThaw :: Vector Word8 -> ST s (Mutable Vector s Word8) basicLength :: Vector Word8 -> Int basicUnsafeSlice :: Int -> Int -> Vector Word8 -> Vector Word8 basicUnsafeIndexM :: Vector Word8 -> Int -> Box Word8 basicUnsafeCopy :: Mutable Vector s Word8 -> Vector Word8 -> ST s () | |
| MVector MVector Word8 | |
Defined in Data.Vector.Unboxed.Base Methods basicLength :: MVector s Word8 -> Int basicUnsafeSlice :: Int -> Int -> MVector s Word8 -> MVector s Word8 basicOverlaps :: MVector s Word8 -> MVector s Word8 -> Bool basicUnsafeNew :: Int -> ST s (MVector s Word8) basicInitialize :: MVector s Word8 -> ST s () basicUnsafeReplicate :: Int -> Word8 -> ST s (MVector s Word8) basicUnsafeRead :: MVector s Word8 -> Int -> ST s Word8 basicUnsafeWrite :: MVector s Word8 -> Int -> Word8 -> ST s () basicClear :: MVector s Word8 -> ST s () basicSet :: MVector s Word8 -> Word8 -> ST s () basicUnsafeCopy :: MVector s Word8 -> MVector s Word8 -> ST s () basicUnsafeMove :: MVector s Word8 -> MVector s Word8 -> ST s () basicUnsafeGrow :: MVector s Word8 -> Int -> ST s (MVector s Word8) | |
| newtype Vector Word8 | |
Defined in Data.Vector.Unboxed.Base | |
| newtype MVector s Word8 | |
Defined in Data.Vector.Unboxed.Base | |
Instances
| Elevator Word Source # | Values between | ||||
Defined in Graphics.Color.Algebra.Elevator Methods fieldFormat :: Word -> FieldFormat Source # toShowS :: Word -> ShowS Source # toWord8 :: Word -> Word8 Source # fromWord8 :: Word8 -> Word Source # toWord16 :: Word -> Word16 Source # toWord32 :: Word -> Word32 Source # toWord64 :: Word -> Word64 Source # toRealFloat :: (Elevator a, RealFloat a) => Word -> a Source # fromRealFloat :: (Elevator a, RealFloat a) => a -> Word Source # toFloat :: Word -> Float Source # toDouble :: Word -> Double Source # fromDouble :: Double -> Word Source # | |||||
| Data Word | Since: base-4.0.0.0 | ||||
Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word -> c Word # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word # dataTypeOf :: Word -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Word) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word) # gmapT :: (forall b. Data b => b -> b) -> Word -> Word # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word -> r # gmapQ :: (forall d. Data d => d -> u) -> Word -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Word -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word -> m Word # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word -> m Word # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word -> m Word # | |||||
| Storable Word | Since: base-2.1 | ||||
Defined in Foreign.Storable | |||||
| Bits Word | Since: base-2.1 | ||||
Defined in GHC.Bits Methods (.&.) :: Word -> Word -> Word # (.|.) :: Word -> Word -> Word # complement :: Word -> Word # shift :: Word -> Int -> Word # rotate :: Word -> Int -> Word # setBit :: Word -> Int -> Word # clearBit :: Word -> Int -> Word # complementBit :: Word -> Int -> Word # testBit :: Word -> Int -> Bool # bitSizeMaybe :: Word -> Maybe Int # shiftL :: Word -> Int -> Word # unsafeShiftL :: Word -> Int -> Word # shiftR :: Word -> Int -> Word # unsafeShiftR :: Word -> Int -> Word # rotateL :: Word -> Int -> Word # | |||||
| FiniteBits Word | Since: base-4.6.0.0 | ||||
Defined in GHC.Bits Methods finiteBitSize :: Word -> Int # countLeadingZeros :: Word -> Int # countTrailingZeros :: Word -> Int # | |||||
| Bounded Word | Since: base-2.1 | ||||
| Enum Word | Since: base-2.1 | ||||
| Ix Word | Since: base-4.6.0.0 | ||||
| Num Word | Since: base-2.1 | ||||
| Read Word | Since: base-4.5.0.0 | ||||
| Integral Word | Since: base-2.1 | ||||
| Real Word | Since: base-2.1 | ||||
Defined in GHC.Real Methods toRational :: Word -> Rational # | |||||
| Show Word | Since: base-2.1 | ||||
| PrintfArg Word | Since: base-2.1 | ||||
Defined in Text.Printf | |||||
| Default Word | |||||
Defined in Data.Default.Internal | |||||
| NFData Word | |||||
Defined in Control.DeepSeq | |||||
| Eq Word | |||||
| Ord Word | |||||
| Unbox Word | |||||
Defined in Data.Vector.Unboxed.Base | |||||
| Lift Word | |||||
| Vector Vector Word | |||||
Defined in Data.Vector.Unboxed.Base Methods basicUnsafeFreeze :: Mutable Vector s Word -> ST s (Vector Word) basicUnsafeThaw :: Vector Word -> ST s (Mutable Vector s Word) basicLength :: Vector Word -> Int basicUnsafeSlice :: Int -> Int -> Vector Word -> Vector Word basicUnsafeIndexM :: Vector Word -> Int -> Box Word basicUnsafeCopy :: Mutable Vector s Word -> Vector Word -> ST s () | |||||
| MVector MVector Word | |||||
Defined in Data.Vector.Unboxed.Base Methods basicLength :: MVector s Word -> Int basicUnsafeSlice :: Int -> Int -> MVector s Word -> MVector s Word basicOverlaps :: MVector s Word -> MVector s Word -> Bool basicUnsafeNew :: Int -> ST s (MVector s Word) basicInitialize :: MVector s Word -> ST s () basicUnsafeReplicate :: Int -> Word -> ST s (MVector s Word) basicUnsafeRead :: MVector s Word -> Int -> ST s Word basicUnsafeWrite :: MVector s Word -> Int -> Word -> ST s () basicClear :: MVector s Word -> ST s () basicSet :: MVector s Word -> Word -> ST s () basicUnsafeCopy :: MVector s Word -> MVector s Word -> ST s () basicUnsafeMove :: MVector s Word -> MVector s Word -> ST s () basicUnsafeGrow :: MVector s Word -> Int -> ST s (MVector s Word) | |||||
| Generic1 (URec Word :: k -> Type) | |||||
Defined in GHC.Generics Associated Types
| |||||
| Foldable (UWord :: Type -> Type) | Since: base-4.9.0.0 | ||||
Defined in Data.Foldable Methods fold :: Monoid m => UWord m -> m # foldMap :: Monoid m => (a -> m) -> UWord a -> m # foldMap' :: Monoid m => (a -> m) -> UWord a -> m # foldr :: (a -> b -> b) -> b -> UWord a -> b # foldr' :: (a -> b -> b) -> b -> UWord a -> b # foldl :: (b -> a -> b) -> b -> UWord a -> b # foldl' :: (b -> a -> b) -> b -> UWord a -> b # foldr1 :: (a -> a -> a) -> UWord a -> a # foldl1 :: (a -> a -> a) -> UWord a -> a # elem :: Eq a => a -> UWord a -> Bool # maximum :: Ord a => UWord a -> a # minimum :: Ord a => UWord a -> a # | |||||
| Traversable (UWord :: Type -> Type) | Since: base-4.9.0.0 | ||||
| Functor (URec Word :: Type -> Type) | Since: base-4.9.0.0 | ||||
| Generic (URec Word p) | |||||
Defined in GHC.Generics Associated Types
| |||||
| Show (URec Word p) | Since: base-4.9.0.0 | ||||
| Eq (URec Word p) | Since: base-4.9.0.0 | ||||
| Ord (URec Word p) | Since: base-4.9.0.0 | ||||
Defined in GHC.Generics | |||||
| newtype Vector Word | |||||
Defined in Data.Vector.Unboxed.Base | |||||
| data URec Word (p :: k) | Used for marking occurrences of Since: base-4.9.0.0 | ||||
| newtype MVector s Word | |||||
Defined in Data.Vector.Unboxed.Base | |||||
| type Rep1 (URec Word :: k -> Type) | Since: base-4.9.0.0 | ||||
Defined in GHC.Generics | |||||
| type Rep (URec Word p) | Since: base-4.9.0.0 | ||||
Defined in GHC.Generics | |||||
64-bit unsigned integer type
Instances
32-bit unsigned integer type
Instances
16-bit unsigned integer type
Instances
byteSwap16 :: Word16 -> Word16 #
Reverse order of bytes in Word16.
Since: base-4.7.0.0
byteSwap32 :: Word32 -> Word32 #
Reverse order of bytes in Word32.
Since: base-4.7.0.0
byteSwap64 :: Word64 -> Word64 #
Reverse order of bytes in Word64.
Since: base-4.7.0.0
bitReverse8 :: Word8 -> Word8 #
Reverse the order of the bits in a Word8.
Since: base-4.14.0.0
bitReverse16 :: Word16 -> Word16 #
Reverse the order of the bits in a Word16.
Since: base-4.14.0.0
bitReverse32 :: Word32 -> Word32 #
Reverse the order of the bits in a Word32.
Since: base-4.14.0.0
bitReverse64 :: Word64 -> Word64 #
Reverse the order of the bits in a Word64.
Since: base-4.14.0.0