{-# LANGUAGE DeriveDataTypeable, CPP #-}
{-# OPTIONS_HADDOCK hide #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Graphics.Rendering.OpenGL.GL.VertexAttributes
-- Copyright   :  (c) Sven Panne 2002-2019
-- License     :  BSD3
-- 
-- Maintainer  :  Sven Panne <svenpanne@gmail.com>
-- Stability   :  stable
-- Portability :  portable
--
-- This is a purely internal module for auxiliary vertex attributes.
--
--------------------------------------------------------------------------------

module Graphics.Rendering.OpenGL.GL.VertexAttributes (
   TexCoord1(..), TexCoord2(..), TexCoord3(..), TexCoord4(..),
   Normal3(..),
   FogCoord1(..),
   Color3(..), Color4(..),
   Index1(..)
) where

#if !MIN_VERSION_base(4,8,0)
import Control.Applicative ( Applicative(..) )
#endif
import Control.Monad
import Data.Foldable
import Data.Ix
import Data.Traversable
import Data.Typeable
import Foreign.Marshal.Array
import Foreign.Ptr
import Foreign.Storable

--------------------------------------------------------------------------------

-- | Texture coordinates with /t/=0, /r/=0, and /q/=1.
newtype TexCoord1 a = TexCoord1 a
   deriving (TexCoord1 a -> TexCoord1 a -> Bool
(TexCoord1 a -> TexCoord1 a -> Bool)
-> (TexCoord1 a -> TexCoord1 a -> Bool) -> Eq (TexCoord1 a)
forall a. Eq a => TexCoord1 a -> TexCoord1 a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => TexCoord1 a -> TexCoord1 a -> Bool
== :: TexCoord1 a -> TexCoord1 a -> Bool
$c/= :: forall a. Eq a => TexCoord1 a -> TexCoord1 a -> Bool
/= :: TexCoord1 a -> TexCoord1 a -> Bool
Eq, Eq (TexCoord1 a)
Eq (TexCoord1 a) =>
(TexCoord1 a -> TexCoord1 a -> Ordering)
-> (TexCoord1 a -> TexCoord1 a -> Bool)
-> (TexCoord1 a -> TexCoord1 a -> Bool)
-> (TexCoord1 a -> TexCoord1 a -> Bool)
-> (TexCoord1 a -> TexCoord1 a -> Bool)
-> (TexCoord1 a -> TexCoord1 a -> TexCoord1 a)
-> (TexCoord1 a -> TexCoord1 a -> TexCoord1 a)
-> Ord (TexCoord1 a)
TexCoord1 a -> TexCoord1 a -> Bool
TexCoord1 a -> TexCoord1 a -> Ordering
TexCoord1 a -> TexCoord1 a -> TexCoord1 a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (TexCoord1 a)
forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Bool
forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Ordering
forall a. Ord a => TexCoord1 a -> TexCoord1 a -> TexCoord1 a
$ccompare :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Ordering
compare :: TexCoord1 a -> TexCoord1 a -> Ordering
$c< :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Bool
< :: TexCoord1 a -> TexCoord1 a -> Bool
$c<= :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Bool
<= :: TexCoord1 a -> TexCoord1 a -> Bool
$c> :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Bool
> :: TexCoord1 a -> TexCoord1 a -> Bool
$c>= :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> Bool
>= :: TexCoord1 a -> TexCoord1 a -> Bool
$cmax :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> TexCoord1 a
max :: TexCoord1 a -> TexCoord1 a -> TexCoord1 a
$cmin :: forall a. Ord a => TexCoord1 a -> TexCoord1 a -> TexCoord1 a
min :: TexCoord1 a -> TexCoord1 a -> TexCoord1 a
Ord, Ord (TexCoord1 a)
Ord (TexCoord1 a) =>
((TexCoord1 a, TexCoord1 a) -> [TexCoord1 a])
-> ((TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int)
-> ((TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int)
-> ((TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Bool)
-> ((TexCoord1 a, TexCoord1 a) -> Int)
-> ((TexCoord1 a, TexCoord1 a) -> Int)
-> Ix (TexCoord1 a)
(TexCoord1 a, TexCoord1 a) -> Int
(TexCoord1 a, TexCoord1 a) -> [TexCoord1 a]
(TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Bool
(TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
forall a. Ix a => Ord (TexCoord1 a)
forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> Int
forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> [TexCoord1 a]
forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Bool
forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int
$crange :: forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> [TexCoord1 a]
range :: (TexCoord1 a, TexCoord1 a) -> [TexCoord1 a]
$cindex :: forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int
index :: (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int
$cunsafeIndex :: forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int
unsafeIndex :: (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Int
$cinRange :: forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Bool
inRange :: (TexCoord1 a, TexCoord1 a) -> TexCoord1 a -> Bool
$crangeSize :: forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> Int
rangeSize :: (TexCoord1 a, TexCoord1 a) -> Int
$cunsafeRangeSize :: forall a. Ix a => (TexCoord1 a, TexCoord1 a) -> Int
unsafeRangeSize :: (TexCoord1 a, TexCoord1 a) -> Int
Ix, TexCoord1 a
TexCoord1 a -> TexCoord1 a -> Bounded (TexCoord1 a)
forall a. a -> a -> Bounded a
forall a. Bounded a => TexCoord1 a
$cminBound :: forall a. Bounded a => TexCoord1 a
minBound :: TexCoord1 a
$cmaxBound :: forall a. Bounded a => TexCoord1 a
maxBound :: TexCoord1 a
Bounded, Int -> TexCoord1 a -> ShowS
[TexCoord1 a] -> ShowS
TexCoord1 a -> String
(Int -> TexCoord1 a -> ShowS)
-> (TexCoord1 a -> String)
-> ([TexCoord1 a] -> ShowS)
-> Show (TexCoord1 a)
forall a. Show a => Int -> TexCoord1 a -> ShowS
forall a. Show a => [TexCoord1 a] -> ShowS
forall a. Show a => TexCoord1 a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> TexCoord1 a -> ShowS
showsPrec :: Int -> TexCoord1 a -> ShowS
$cshow :: forall a. Show a => TexCoord1 a -> String
show :: TexCoord1 a -> String
$cshowList :: forall a. Show a => [TexCoord1 a] -> ShowS
showList :: [TexCoord1 a] -> ShowS
Show, ReadPrec [TexCoord1 a]
ReadPrec (TexCoord1 a)
Int -> ReadS (TexCoord1 a)
ReadS [TexCoord1 a]
(Int -> ReadS (TexCoord1 a))
-> ReadS [TexCoord1 a]
-> ReadPrec (TexCoord1 a)
-> ReadPrec [TexCoord1 a]
-> Read (TexCoord1 a)
forall a. Read a => ReadPrec [TexCoord1 a]
forall a. Read a => ReadPrec (TexCoord1 a)
forall a. Read a => Int -> ReadS (TexCoord1 a)
forall a. Read a => ReadS [TexCoord1 a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (TexCoord1 a)
readsPrec :: Int -> ReadS (TexCoord1 a)
$creadList :: forall a. Read a => ReadS [TexCoord1 a]
readList :: ReadS [TexCoord1 a]
$creadPrec :: forall a. Read a => ReadPrec (TexCoord1 a)
readPrec :: ReadPrec (TexCoord1 a)
$creadListPrec :: forall a. Read a => ReadPrec [TexCoord1 a]
readListPrec :: ReadPrec [TexCoord1 a]
Read, Typeable)

instance Functor TexCoord1 where
   fmap :: forall a b. (a -> b) -> TexCoord1 a -> TexCoord1 b
fmap a -> b
f (TexCoord1 a
x) = b -> TexCoord1 b
forall a. a -> TexCoord1 a
TexCoord1 (a -> b
f a
x)

instance Applicative TexCoord1 where
   pure :: forall a. a -> TexCoord1 a
pure a
a = a -> TexCoord1 a
forall a. a -> TexCoord1 a
TexCoord1 a
a
   TexCoord1 a -> b
f <*> :: forall a b. TexCoord1 (a -> b) -> TexCoord1 a -> TexCoord1 b
<*> TexCoord1 a
x = b -> TexCoord1 b
forall a. a -> TexCoord1 a
TexCoord1 (a -> b
f a
x)

instance Foldable TexCoord1 where
   foldr :: forall a b. (a -> b -> b) -> b -> TexCoord1 a -> b
foldr a -> b -> b
f b
a (TexCoord1 a
x) = a
x `f ` b
a
   foldl :: forall b a. (b -> a -> b) -> b -> TexCoord1 a -> b
foldl b -> a -> b
f b
a (TexCoord1 a
x) = b
a b -> a -> b
`f` a
x
   foldr1 :: forall a. (a -> a -> a) -> TexCoord1 a -> a
foldr1 a -> a -> a
_ (TexCoord1 a
x) = a
x
   foldl1 :: forall a. (a -> a -> a) -> TexCoord1 a -> a
foldl1 a -> a -> a
_ (TexCoord1 a
x) = a
x

instance Traversable TexCoord1 where
   traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TexCoord1 a -> f (TexCoord1 b)
traverse a -> f b
f (TexCoord1 a
x) = (b -> TexCoord1 b) -> f (b -> TexCoord1 b)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure b -> TexCoord1 b
forall a. a -> TexCoord1 a
TexCoord1 f (b -> TexCoord1 b) -> f b -> f (TexCoord1 b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> a -> f b
f a
x
   sequenceA :: forall (f :: * -> *) a.
Applicative f =>
TexCoord1 (f a) -> f (TexCoord1 a)
sequenceA (TexCoord1 f a
x) =  (a -> TexCoord1 a) -> f (a -> TexCoord1 a)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> TexCoord1 a
forall a. a -> TexCoord1 a
TexCoord1 f (a -> TexCoord1 a) -> f a -> f (TexCoord1 a)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
x
   mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> TexCoord1 a -> m (TexCoord1 b)
mapM a -> m b
f (TexCoord1 a
x) = (b -> TexCoord1 b) -> m (b -> TexCoord1 b)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return b -> TexCoord1 b
forall a. a -> TexCoord1 a
TexCoord1 m (b -> TexCoord1 b) -> m b -> m (TexCoord1 b)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` a -> m b
f a
x
   sequence :: forall (m :: * -> *) a.
Monad m =>
TexCoord1 (m a) -> m (TexCoord1 a)
sequence (TexCoord1 m a
x) = (a -> TexCoord1 a) -> m (a -> TexCoord1 a)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return a -> TexCoord1 a
forall a. a -> TexCoord1 a
TexCoord1 m (a -> TexCoord1 a) -> m a -> m (TexCoord1 a)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` m a
x

instance Storable a => Storable (TexCoord1 a) where
   sizeOf :: TexCoord1 a -> Int
sizeOf    ~(TexCoord1 a
s) = a -> Int
forall a. Storable a => a -> Int
sizeOf a
s
   alignment :: TexCoord1 a -> Int
alignment ~(TexCoord1 a
s) = a -> Int
forall a. Storable a => a -> Int
alignment a
s
   peek :: Ptr (TexCoord1 a) -> IO (TexCoord1 a)
peek = Ptr (TexCoord1 a) -> IO (TexCoord1 a)
forall (t :: * -> *) a.
(Applicative t, Traversable t, Storable a) =>
Ptr (t a) -> IO (t a)
peekApplicativeTraversable
   poke :: Ptr (TexCoord1 a) -> TexCoord1 a -> IO ()
poke = Ptr (TexCoord1 a) -> TexCoord1 a -> IO ()
forall (t :: * -> *) a.
(Foldable t, Storable a) =>
Ptr (t a) -> t a -> IO ()
pokeFoldable

--------------------------------------------------------------------------------

-- | Texture coordinates with /r/=0 and /q/=1.
data TexCoord2 a = TexCoord2 !a !a
   deriving (TexCoord2 a -> TexCoord2 a -> Bool
(TexCoord2 a -> TexCoord2 a -> Bool)
-> (TexCoord2 a -> TexCoord2 a -> Bool) -> Eq (TexCoord2 a)
forall a. Eq a => TexCoord2 a -> TexCoord2 a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => TexCoord2 a -> TexCoord2 a -> Bool
== :: TexCoord2 a -> TexCoord2 a -> Bool
$c/= :: forall a. Eq a => TexCoord2 a -> TexCoord2 a -> Bool
/= :: TexCoord2 a -> TexCoord2 a -> Bool
Eq, Eq (TexCoord2 a)
Eq (TexCoord2 a) =>
(TexCoord2 a -> TexCoord2 a -> Ordering)
-> (TexCoord2 a -> TexCoord2 a -> Bool)
-> (TexCoord2 a -> TexCoord2 a -> Bool)
-> (TexCoord2 a -> TexCoord2 a -> Bool)
-> (TexCoord2 a -> TexCoord2 a -> Bool)
-> (TexCoord2 a -> TexCoord2 a -> TexCoord2 a)
-> (TexCoord2 a -> TexCoord2 a -> TexCoord2 a)
-> Ord (TexCoord2 a)
TexCoord2 a -> TexCoord2 a -> Bool
TexCoord2 a -> TexCoord2 a -> Ordering
TexCoord2 a -> TexCoord2 a -> TexCoord2 a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (TexCoord2 a)
forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Bool
forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Ordering
forall a. Ord a => TexCoord2 a -> TexCoord2 a -> TexCoord2 a
$ccompare :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Ordering
compare :: TexCoord2 a -> TexCoord2 a -> Ordering
$c< :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Bool
< :: TexCoord2 a -> TexCoord2 a -> Bool
$c<= :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Bool
<= :: TexCoord2 a -> TexCoord2 a -> Bool
$c> :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Bool
> :: TexCoord2 a -> TexCoord2 a -> Bool
$c>= :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> Bool
>= :: TexCoord2 a -> TexCoord2 a -> Bool
$cmax :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> TexCoord2 a
max :: TexCoord2 a -> TexCoord2 a -> TexCoord2 a
$cmin :: forall a. Ord a => TexCoord2 a -> TexCoord2 a -> TexCoord2 a
min :: TexCoord2 a -> TexCoord2 a -> TexCoord2 a
Ord, Ord (TexCoord2 a)
Ord (TexCoord2 a) =>
((TexCoord2 a, TexCoord2 a) -> [TexCoord2 a])
-> ((TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int)
-> ((TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int)
-> ((TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Bool)
-> ((TexCoord2 a, TexCoord2 a) -> Int)
-> ((TexCoord2 a, TexCoord2 a) -> Int)
-> Ix (TexCoord2 a)
(TexCoord2 a, TexCoord2 a) -> Int
(TexCoord2 a, TexCoord2 a) -> [TexCoord2 a]
(TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Bool
(TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
forall a. Ix a => Ord (TexCoord2 a)
forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> Int
forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> [TexCoord2 a]
forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Bool
forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int
$crange :: forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> [TexCoord2 a]
range :: (TexCoord2 a, TexCoord2 a) -> [TexCoord2 a]
$cindex :: forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int
index :: (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int
$cunsafeIndex :: forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int
unsafeIndex :: (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Int
$cinRange :: forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Bool
inRange :: (TexCoord2 a, TexCoord2 a) -> TexCoord2 a -> Bool
$crangeSize :: forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> Int
rangeSize :: (TexCoord2 a, TexCoord2 a) -> Int
$cunsafeRangeSize :: forall a. Ix a => (TexCoord2 a, TexCoord2 a) -> Int
unsafeRangeSize :: (TexCoord2 a, TexCoord2 a) -> Int
Ix, TexCoord2 a
TexCoord2 a -> TexCoord2 a -> Bounded (TexCoord2 a)
forall a. a -> a -> Bounded a
forall a. Bounded a => TexCoord2 a
$cminBound :: forall a. Bounded a => TexCoord2 a
minBound :: TexCoord2 a
$cmaxBound :: forall a. Bounded a => TexCoord2 a
maxBound :: TexCoord2 a
Bounded, Int -> TexCoord2 a -> ShowS
[TexCoord2 a] -> ShowS
TexCoord2 a -> String
(Int -> TexCoord2 a -> ShowS)
-> (TexCoord2 a -> String)
-> ([TexCoord2 a] -> ShowS)
-> Show (TexCoord2 a)
forall a. Show a => Int -> TexCoord2 a -> ShowS
forall a. Show a => [TexCoord2 a] -> ShowS
forall a. Show a => TexCoord2 a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> TexCoord2 a -> ShowS
showsPrec :: Int -> TexCoord2 a -> ShowS
$cshow :: forall a. Show a => TexCoord2 a -> String
show :: TexCoord2 a -> String
$cshowList :: forall a. Show a => [TexCoord2 a] -> ShowS
showList :: [TexCoord2 a] -> ShowS
Show, ReadPrec [TexCoord2 a]
ReadPrec (TexCoord2 a)
Int -> ReadS (TexCoord2 a)
ReadS [TexCoord2 a]
(Int -> ReadS (TexCoord2 a))
-> ReadS [TexCoord2 a]
-> ReadPrec (TexCoord2 a)
-> ReadPrec [TexCoord2 a]
-> Read (TexCoord2 a)
forall a. Read a => ReadPrec [TexCoord2 a]
forall a. Read a => ReadPrec (TexCoord2 a)
forall a. Read a => Int -> ReadS (TexCoord2 a)
forall a. Read a => ReadS [TexCoord2 a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (TexCoord2 a)
readsPrec :: Int -> ReadS (TexCoord2 a)
$creadList :: forall a. Read a => ReadS [TexCoord2 a]
readList :: ReadS [TexCoord2 a]
$creadPrec :: forall a. Read a => ReadPrec (TexCoord2 a)
readPrec :: ReadPrec (TexCoord2 a)
$creadListPrec :: forall a. Read a => ReadPrec [TexCoord2 a]
readListPrec :: ReadPrec [TexCoord2 a]
Read, Typeable)

instance Functor TexCoord2 where
   fmap :: forall a b. (a -> b) -> TexCoord2 a -> TexCoord2 b
fmap a -> b
f (TexCoord2 a
x a
y) = b -> b -> TexCoord2 b
forall a. a -> a -> TexCoord2 a
TexCoord2 (a -> b
f a
x) (a -> b
f a
y)

instance Applicative TexCoord2 where
   pure :: forall a. a -> TexCoord2 a
pure a
a = a -> a -> TexCoord2 a
forall a. a -> a -> TexCoord2 a
TexCoord2 a
a a
a
   TexCoord2 a -> b
f a -> b
g <*> :: forall a b. TexCoord2 (a -> b) -> TexCoord2 a -> TexCoord2 b
<*> TexCoord2 a
x a
y = b -> b -> TexCoord2 b
forall a. a -> a -> TexCoord2 a
TexCoord2 (a -> b
f a
x) (a -> b
g a
y)

instance Foldable TexCoord2 where
   foldr :: forall a b. (a -> b -> b) -> b -> TexCoord2 a -> b
foldr a -> b -> b
f b
a (TexCoord2 a
x a
y) = a
x `f ` (a
y a -> b -> b
`f` b
a)
   foldl :: forall b a. (b -> a -> b) -> b -> TexCoord2 a -> b
foldl b -> a -> b
f b
a (TexCoord2 a
x a
y) = (b
a b -> a -> b
`f` a
x) b -> a -> b
`f` a
y
   foldr1 :: forall a. (a -> a -> a) -> TexCoord2 a -> a
foldr1 a -> a -> a
f (TexCoord2 a
x a
y) = a
x a -> a -> a
`f` a
y
   foldl1 :: forall a. (a -> a -> a) -> TexCoord2 a -> a
foldl1 a -> a -> a
f (TexCoord2 a
x a
y) = a
x a -> a -> a
`f` a
y

instance Traversable TexCoord2 where
   traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TexCoord2 a -> f (TexCoord2 b)
traverse a -> f b
f (TexCoord2 a
x a
y) = (b -> b -> TexCoord2 b) -> f (b -> b -> TexCoord2 b)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure b -> b -> TexCoord2 b
forall a. a -> a -> TexCoord2 a
TexCoord2 f (b -> b -> TexCoord2 b) -> f b -> f (b -> TexCoord2 b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> a -> f b
f a
x f (b -> TexCoord2 b) -> f b -> f (TexCoord2 b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> a -> f b
f a
y
   sequenceA :: forall (f :: * -> *) a.
Applicative f =>
TexCoord2 (f a) -> f (TexCoord2 a)
sequenceA (TexCoord2 f a
x f a
y) =  (a -> a -> TexCoord2 a) -> f (a -> a -> TexCoord2 a)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> a -> TexCoord2 a
forall a. a -> a -> TexCoord2 a
TexCoord2 f (a -> a -> TexCoord2 a) -> f a -> f (a -> TexCoord2 a)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
x f (a -> TexCoord2 a) -> f a -> f (TexCoord2 a)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
y
   mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> TexCoord2 a -> m (TexCoord2 b)
mapM a -> m b
f (TexCoord2 a
x a
y) = (b -> b -> TexCoord2 b) -> m (b -> b -> TexCoord2 b)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return b -> b -> TexCoord2 b
forall a. a -> a -> TexCoord2 a
TexCoord2 m (b -> b -> TexCoord2 b) -> m b -> m (b -> TexCoord2 b)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` a -> m b
f a
x m (b -> TexCoord2 b) -> m b -> m (TexCoord2 b)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` a -> m b
f a
y
   sequence :: forall (m :: * -> *) a.
Monad m =>
TexCoord2 (m a) -> m (TexCoord2 a)
sequence (TexCoord2 m a
x m a
y) = (a -> a -> TexCoord2 a) -> m (a -> a -> TexCoord2 a)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return a -> a -> TexCoord2 a
forall a. a -> a -> TexCoord2 a
TexCoord2 m (a -> a -> TexCoord2 a) -> m a -> m (a -> TexCoord2 a)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` m a
x m (a -> TexCoord2 a) -> m a -> m (TexCoord2 a)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` m a
y

instance Storable a => Storable (TexCoord2 a) where
   sizeOf :: TexCoord2 a -> Int
sizeOf ~(TexCoord2 a
x a
_) = Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* a -> Int
forall a. Storable a => a -> Int
sizeOf a
x
   alignment :: TexCoord2 a -> Int
alignment ~(TexCoord2 a
x a
_) = a -> Int
forall a. Storable a => a -> Int
alignment a
x
   peek :: Ptr (TexCoord2 a) -> IO (TexCoord2 a)
peek = Ptr (TexCoord2 a) -> IO (TexCoord2 a)
forall (t :: * -> *) a.
(Applicative t, Traversable t, Storable a) =>
Ptr (t a) -> IO (t a)
peekApplicativeTraversable
   poke :: Ptr (TexCoord2 a) -> TexCoord2 a -> IO ()
poke = Ptr (TexCoord2 a) -> TexCoord2 a -> IO ()
forall (t :: * -> *) a.
(Foldable t, Storable a) =>
Ptr (t a) -> t a -> IO ()
pokeFoldable

--------------------------------------------------------------------------------

-- | Texture coordinates with /q/=1.
data TexCoord3 a = TexCoord3 !a !a !a
   deriving (TexCoord3 a -> TexCoord3 a -> Bool
(TexCoord3 a -> TexCoord3 a -> Bool)
-> (TexCoord3 a -> TexCoord3 a -> Bool) -> Eq (TexCoord3 a)
forall a. Eq a => TexCoord3 a -> TexCoord3 a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => TexCoord3 a -> TexCoord3 a -> Bool
== :: TexCoord3 a -> TexCoord3 a -> Bool
$c/= :: forall a. Eq a => TexCoord3 a -> TexCoord3 a -> Bool
/= :: TexCoord3 a -> TexCoord3 a -> Bool
Eq, Eq (TexCoord3 a)
Eq (TexCoord3 a) =>
(TexCoord3 a -> TexCoord3 a -> Ordering)
-> (TexCoord3 a -> TexCoord3 a -> Bool)
-> (TexCoord3 a -> TexCoord3 a -> Bool)
-> (TexCoord3 a -> TexCoord3 a -> Bool)
-> (TexCoord3 a -> TexCoord3 a -> Bool)
-> (TexCoord3 a -> TexCoord3 a -> TexCoord3 a)
-> (TexCoord3 a -> TexCoord3 a -> TexCoord3 a)
-> Ord (TexCoord3 a)
TexCoord3 a -> TexCoord3 a -> Bool
TexCoord3 a -> TexCoord3 a -> Ordering
TexCoord3 a -> TexCoord3 a -> TexCoord3 a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (TexCoord3 a)
forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Bool
forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Ordering
forall a. Ord a => TexCoord3 a -> TexCoord3 a -> TexCoord3 a
$ccompare :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Ordering
compare :: TexCoord3 a -> TexCoord3 a -> Ordering
$c< :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Bool
< :: TexCoord3 a -> TexCoord3 a -> Bool
$c<= :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Bool
<= :: TexCoord3 a -> TexCoord3 a -> Bool
$c> :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Bool
> :: TexCoord3 a -> TexCoord3 a -> Bool
$c>= :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> Bool
>= :: TexCoord3 a -> TexCoord3 a -> Bool
$cmax :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> TexCoord3 a
max :: TexCoord3 a -> TexCoord3 a -> TexCoord3 a
$cmin :: forall a. Ord a => TexCoord3 a -> TexCoord3 a -> TexCoord3 a
min :: TexCoord3 a -> TexCoord3 a -> TexCoord3 a
Ord, Ord (TexCoord3 a)
Ord (TexCoord3 a) =>
((TexCoord3 a, TexCoord3 a) -> [TexCoord3 a])
-> ((TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int)
-> ((TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int)
-> ((TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Bool)
-> ((TexCoord3 a, TexCoord3 a) -> Int)
-> ((TexCoord3 a, TexCoord3 a) -> Int)
-> Ix (TexCoord3 a)
(TexCoord3 a, TexCoord3 a) -> Int
(TexCoord3 a, TexCoord3 a) -> [TexCoord3 a]
(TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Bool
(TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
forall a. Ix a => Ord (TexCoord3 a)
forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> Int
forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> [TexCoord3 a]
forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Bool
forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int
$crange :: forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> [TexCoord3 a]
range :: (TexCoord3 a, TexCoord3 a) -> [TexCoord3 a]
$cindex :: forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int
index :: (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int
$cunsafeIndex :: forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int
unsafeIndex :: (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Int
$cinRange :: forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Bool
inRange :: (TexCoord3 a, TexCoord3 a) -> TexCoord3 a -> Bool
$crangeSize :: forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> Int
rangeSize :: (TexCoord3 a, TexCoord3 a) -> Int
$cunsafeRangeSize :: forall a. Ix a => (TexCoord3 a, TexCoord3 a) -> Int
unsafeRangeSize :: (TexCoord3 a, TexCoord3 a) -> Int
Ix, TexCoord3 a
TexCoord3 a -> TexCoord3 a -> Bounded (TexCoord3 a)
forall a. a -> a -> Bounded a
forall a. Bounded a => TexCoord3 a
$cminBound :: forall a. Bounded a => TexCoord3 a
minBound :: TexCoord3 a
$cmaxBound :: forall a. Bounded a => TexCoord3 a
maxBound :: TexCoord3 a
Bounded, Int -> TexCoord3 a -> ShowS
[TexCoord3 a] -> ShowS
TexCoord3 a -> String
(Int -> TexCoord3 a -> ShowS)
-> (TexCoord3 a -> String)
-> ([TexCoord3 a] -> ShowS)
-> Show (TexCoord3 a)
forall a. Show a => Int -> TexCoord3 a -> ShowS
forall a. Show a => [TexCoord3 a] -> ShowS
forall a. Show a => TexCoord3 a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> TexCoord3 a -> ShowS
showsPrec :: Int -> TexCoord3 a -> ShowS
$cshow :: forall a. Show a => TexCoord3 a -> String
show :: TexCoord3 a -> String
$cshowList :: forall a. Show a => [TexCoord3 a] -> ShowS
showList :: [TexCoord3 a] -> ShowS
Show, ReadPrec [TexCoord3 a]
ReadPrec (TexCoord3 a)
Int -> ReadS (TexCoord3 a)
ReadS [TexCoord3 a]
(Int -> ReadS (TexCoord3 a))
-> ReadS [TexCoord3 a]
-> ReadPrec (TexCoord3 a)
-> ReadPrec [TexCoord3 a]
-> Read (TexCoord3 a)
forall a. Read a => ReadPrec [TexCoord3 a]
forall a. Read a => ReadPrec (TexCoord3 a)
forall a. Read a => Int -> ReadS (TexCoord3 a)
forall a. Read a => ReadS [TexCoord3 a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (TexCoord3 a)
readsPrec :: Int -> ReadS (TexCoord3 a)
$creadList :: forall a. Read a => ReadS [TexCoord3 a]
readList :: ReadS [TexCoord3 a]
$creadPrec :: forall a. Read a => ReadPrec (TexCoord3 a)
readPrec :: ReadPrec (TexCoord3 a)
$creadListPrec :: forall a. Read a => ReadPrec [TexCoord3 a]
readListPrec :: ReadPrec [TexCoord3 a]
Read, Typeable)

instance Functor TexCoord3 where
   fmap :: forall a b. (a -> b) -> TexCoord3 a -> TexCoord3 b
fmap a -> b
f (TexCoord3 a
x a
y a
z) = b -> b -> b -> TexCoord3 b
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 (a -> b
f a
x) (a -> b
f a
y) (a -> b
f a
z)

instance Applicative TexCoord3 where
   pure :: forall a. a -> TexCoord3 a
pure a
a = a -> a -> a -> TexCoord3 a
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 a
a a
a a
a
   TexCoord3 a -> b
f a -> b
g a -> b
h <*> :: forall a b. TexCoord3 (a -> b) -> TexCoord3 a -> TexCoord3 b
<*> TexCoord3 a
x a
y a
z = b -> b -> b -> TexCoord3 b
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 (a -> b
f a
x) (a -> b
g a
y) (a -> b
h a
z)

instance Foldable TexCoord3 where
   foldr :: forall a b. (a -> b -> b) -> b -> TexCoord3 a -> b
foldr a -> b -> b
f b
a (TexCoord3 a
x a
y a
z) = a
x `f ` (a
y a -> b -> b
`f` (a
z a -> b -> b
`f` b
a))
   foldl :: forall b a. (b -> a -> b) -> b -> TexCoord3 a -> b
foldl b -> a -> b
f b
a (TexCoord3 a
x a
y a
z) = ((b
a b -> a -> b
`f` a
x) b -> a -> b
`f` a
y) b -> a -> b
`f` a
z
   foldr1 :: forall a. (a -> a -> a) -> TexCoord3 a -> a
foldr1 a -> a -> a
f (TexCoord3 a
x a
y a
z) = a
x a -> a -> a
`f` (a
y a -> a -> a
`f` a
z)
   foldl1 :: forall a. (a -> a -> a) -> TexCoord3 a -> a
foldl1 a -> a -> a
f (TexCoord3 a
x a
y a
z) = (a
x a -> a -> a
`f` a
y) a -> a -> a
`f` a
z

instance Traversable TexCoord3 where
   traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TexCoord3 a -> f (TexCoord3 b)
traverse a -> f b
f (TexCoord3 a
x a
y a
z) = (b -> b -> b -> TexCoord3 b) -> f (b -> b -> b -> TexCoord3 b)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure b -> b -> b -> TexCoord3 b
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 f (b -> b -> b -> TexCoord3 b) -> f b -> f (b -> b -> TexCoord3 b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> a -> f b
f a
x f (b -> b -> TexCoord3 b) -> f b -> f (b -> TexCoord3 b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> a -> f b
f a
y f (b -> TexCoord3 b) -> f b -> f (TexCoord3 b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> a -> f b
f a
z
   sequenceA :: forall (f :: * -> *) a.
Applicative f =>
TexCoord3 (f a) -> f (TexCoord3 a)
sequenceA (TexCoord3 f a
x f a
y f a
z) =  (a -> a -> a -> TexCoord3 a) -> f (a -> a -> a -> TexCoord3 a)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a -> a -> a -> TexCoord3 a
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 f (a -> a -> a -> TexCoord3 a) -> f a -> f (a -> a -> TexCoord3 a)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
x f (a -> a -> TexCoord3 a) -> f a -> f (a -> TexCoord3 a)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
y f (a -> TexCoord3 a) -> f a -> f (TexCoord3 a)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> f a
z
   mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> TexCoord3 a -> m (TexCoord3 b)
mapM a -> m b
f (TexCoord3 a
x a
y a
z) = (b -> b -> b -> TexCoord3 b) -> m (b -> b -> b -> TexCoord3 b)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return b -> b -> b -> TexCoord3 b
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 m (b -> b -> b -> TexCoord3 b) -> m b -> m (b -> b -> TexCoord3 b)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` a -> m b
f a
x m (b -> b -> TexCoord3 b) -> m b -> m (b -> TexCoord3 b)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` a -> m b
f a
y m (b -> TexCoord3 b) -> m b -> m (TexCoord3 b)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` a -> m b
f a
z
   sequence :: forall (m :: * -> *) a.
Monad m =>
TexCoord3 (m a) -> m (TexCoord3 a)
sequence (TexCoord3 m a
x m a
y m a
z) = (a -> a -> a -> TexCoord3 a) -> m (a -> a -> a -> TexCoord3 a)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return a -> a -> a -> TexCoord3 a
forall a. a -> a -> a -> TexCoord3 a
TexCoord3 m (a -> a -> a -> TexCoord3 a) -> m a -> m (a -> a -> TexCoord3 a)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` m a
x m (a -> a -> TexCoord3 a) -> m a -> m (a -> TexCoord3 a)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` m a
y m (a -> TexCoord3 a) -> m a -> m (TexCoord3 a)
forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
`ap` m a
z

instance Storable a => Storable (TexCoord3 a) where
   sizeOf :: TexCoord3 a -> Int
sizeOf ~(TexCoord3 a
x a
_ a
_) = Int
3 Int -> Int -> Int
forall a. Num a => a -> a -> a
* a -> Int
forall a. Storable a => a -> Int
sizeOf a
x
   alignment :: TexCoord3 a -> Int
alignment ~(TexCoord3 a
x a
_ a
_) = a -> Int
forall a. Storable a => a -> Int
alignment a
x
   peek :: Ptr (TexCoord3 a) -> IO (TexCoord3 a)
peek = Ptr (TexCoord3 a) -> IO (TexCoord3 a)
forall (t :: * -> *) a.
(Applicative t, Traversable t, Storable a) =>
Ptr (t a) -> IO (t a)
peekApplicativeTraversable
   poke :: Ptr (TexCoord3 a) -> TexCoord3 a -> IO ()
poke = Ptr (TexCoord3 a) -> TexCoord3 a -> IO ()
forall (t :: * -> *) a.
(Foldable t, Storable a) =>
Ptr (t a) -> t a -> IO ()
pokeFoldable

--------------------------------------------------------------------------------

-- | Fully-fledged four-dimensional texture coordinates.
data TexCoord4 a = TexCoord4 !a !a !a !a
   deriving (TexCoord4 a -> TexCoord4 a -> Bool
(TexCoord4 a -> TexCoord4 a -> Bool)
-> (TexCoord4 a -> TexCoord4 a -> Bool) -> Eq (TexCoord4 a)
forall a. Eq a => TexCoord4 a -> TexCoord4 a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => TexCoord4 a -> TexCoord4 a -> Bool
== :: TexCoord4 a -> TexCoord4 a -> Bool
$c/= :: forall a. Eq a => TexCoord4 a -> TexCoord4 a -> Bool
/= :: TexCoord4 a -> TexCoord4 a -> Bool
Eq, Eq (TexCoord4 a)
Eq (TexCoord4 a) =>
(TexCoord4 a -> TexCoord4 a -> Ordering)
-> (TexCoord4 a -> TexCoord4 a -> Bool)
-> (TexCoord4 a -> TexCoord4 a -> Bool)
-> (TexCoord4 a -> TexCoord4 a -> Bool)
-> (TexCoord4 a -> TexCoord4 a -> Bool)
-> (TexCoord4 a -> TexCoord4 a -> TexCoord4 a)
-> (TexCoord4 a -> TexCoord4 a -> TexCoord4 a)
-> Ord (TexCoord4 a)
TexCoord4 a -> TexCoord4 a -> Bool
TexCoord4 a -> TexCoord4 a -> Ordering
TexCoord4 a -> TexCoord4 a -> TexCoord4 a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (TexCoord4 a)
forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Bool
forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Ordering
forall a. Ord a => TexCoord4 a -> TexCoord4 a -> TexCoord4 a
$ccompare :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Ordering
compare :: TexCoord4 a -> TexCoord4 a -> Ordering
$c< :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Bool
< :: TexCoord4 a -> TexCoord4 a -> Bool
$c<= :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Bool
<= :: TexCoord4 a -> TexCoord4 a -> Bool
$c> :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Bool
> :: TexCoord4 a -> TexCoord4 a -> Bool
$c>= :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> Bool
>= :: TexCoord4 a -> TexCoord4 a -> Bool
$cmax :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> TexCoord4 a
max :: TexCoord4 a -> TexCoord4 a -> TexCoord4 a
$cmin :: forall a. Ord a => TexCoord4 a -> TexCoord4 a -> TexCoord4 a
min :: TexCoord4 a -> TexCoord4 a -> TexCoord4 a
Ord, Ord (TexCoord4 a)
Ord (TexCoord4 a) =>
((TexCoord4 a, TexCoord4 a) -> [TexCoord4 a])
-> ((TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int)
-> ((TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int)
-> ((TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Bool)
-> ((TexCoord4 a, TexCoord4 a) -> Int)
-> ((TexCoord4 a, TexCoord4 a) -> Int)
-> Ix (TexCoord4 a)
(TexCoord4 a, TexCoord4 a) -> Int
(TexCoord4 a, TexCoord4 a) -> [TexCoord4 a]
(TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Bool
(TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
forall a. Ix a => Ord (TexCoord4 a)
forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> Int
forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> [TexCoord4 a]
forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Bool
forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int
$crange :: forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> [TexCoord4 a]
range :: (TexCoord4 a, TexCoord4 a) -> [TexCoord4 a]
$cindex :: forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int
index :: (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int
$cunsafeIndex :: forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int
unsafeIndex :: (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Int
$cinRange :: forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Bool
inRange :: (TexCoord4 a, TexCoord4 a) -> TexCoord4 a -> Bool
$crangeSize :: forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> Int
rangeSize :: (TexCoord4 a, TexCoord4 a) -> Int
$cunsafeRangeSize :: forall a. Ix a => (TexCoord4 a, TexCoord4 a) -> Int
unsafeRangeSize :: (TexCoord4 a, TexCoord4 a) -> Int
Ix, TexCoord4 a
TexCoord4 a -> TexCoord4 a -> Bounded (TexCoord4 a)
forall a. a -> a -> Bounded a
forall a. Bounded a => TexCoord4 a
$cminBound :: forall a. Bounded a => TexCoord4 a
minBound :: TexCoord4 a
$cmaxBound :: forall a. Bounded a => TexCoord4 a
maxBound :: TexCoord4 a
Bounded, Int -> TexCoord4 a -> ShowS
[TexCoord4 a] -> ShowS
TexCoord4 a -> String
(Int -> TexCoord4 a -> ShowS)
-> (TexCoord4 a -> String)
-> ([TexCoord4 a] -> ShowS)
-> Show (TexCoord4 a)
forall a. Show a => Int -> TexCoord4 a -> ShowS
forall a. Show a => [TexCoord4 a] -> ShowS
forall a. Show a => TexCoord4 a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> TexCoord4 a -> ShowS
showsPrec :: Int -> TexCoord4 a -> ShowS
$cshow :: forall a. Show a => TexCoord4 a -> String
show :: TexCoord4 a -> String
$cshowList :: forall a. Show a => [TexCoord4 a] -> ShowS
showList :: [TexCoord4 a] -> ShowS
Show, ReadPrec [TexCoord4 a]
ReadPrec (TexCoord4 a)
Int -> ReadS (TexCoord4 a)
ReadS [TexCoord4 a]
(Int -> ReadS (TexCoord4 a))
-> ReadS [TexCoord4 a]
-> ReadPrec (TexCoord4 a)
-> ReadPrec [TexCoord4 a]
-> Read (TexCoord4 a)
forall a. Read a => ReadPrec [TexCoord4 a]
forall a. Read a => ReadPrec (TexCoord4 a)
forall a. Read a => Int -> ReadS (TexCoord4 a)
forall a. Read a => ReadS [TexCoord4 a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: forall a. Read a => Int -> ReadS (TexCoord4 a)
readsPrec :: Int -> ReadS (TexCoord4 a)
$creadList :: forall a. Read a => ReadS [TexCoord4 a]
readList :: ReadS [TexCoord4 a]
$creadPrec :: forall a. Read a => ReadPrec (TexCoord4 a)
readPrec :: ReadPrec (TexCoord4 a)
$creadListPrec :: forall a. Read a => ReadPrec [TexCoord4 a]
readListPrec :: ReadPrec [TexCoord4 a]
Read, Typeable)

instance Functor TexCoord4 where
   fmap :: forall a b. (a -> b) -> TexCoord4 a -> TexCoord4 b
fmap a -> b
f (TexCoord4 a
x a
y a
z a
w) = b -> b -> b -> b -> TexCoord4 b
forall a. a -> a -> a -> a -> TexCoord4 a
TexCoord4 (a -> b
f a
x) (a -> b
f a
y) (a -> b
f a
z) (a -> b
f a
w)

instance Applicative TexCoord4 where
   pure :: forall a. a -> TexCoord4 a
pure a
a = a -> a -> a -> a -> TexCoord4 a
forall a. a -> a -> a -> a -> TexCoord4 a
TexCoord4 a
a a
a a
a a
a
   TexCoord4 a -> b
f a -> b
g a -> b
h a -> b
i <*> :: forall a b. TexCoord4 (a -> b) -> TexCoord4 a -> TexCoord4 b
<*> TexCoord4 a
x a
y a
z a
w = b -> b -> b -> b -> TexCoord4 b
forall a. a -> a -> a -> a -> TexCoord4 a
TexCoord4 (a -> b
f a
x) (a -> b
g a
y) (a -> b
h a
z) (a -> b
i a
w)

instance Foldable TexCoord4 where
   foldr :: forall a b. (a -> b -> b) -> b -> TexCoord4 a -> b
foldr a -> b -> b
f b
a (TexCoord4 a
x a
y a
z a
w) = a
x `f ` (a
y a -> b -> b
`f` (a
z a -> b -> b
`f` (a
w a -> b -> b
`f` b
a)))
   foldl :: forall b a. (b -> a -> b) -> b -> TexCoord4 a -> b
foldl b -> a -> b
f b
a (TexCoord4 a
x a
y a
z a
w) = (((b
a b -> a -> b
`f` a
x) b -> a -> b
`f` a
y) b -> a -> b
`f` a
z) b -> a -> b
`f` a
w
   foldr1 :: forall a. (a -> a -> a) -> TexCoord4 a -> a
foldr1 a -> a -> a
f (TexCoord4 a
x a
y a
z a
w) = a
x a -> a -> a
`f` (a
y a -> a -> a
`f` (a
z a -> a -> a
`f` a
w))
   foldl1 :: forall a. (a -> a -> a) -> TexCoord4 a -> a
foldl1 a -> a -> a
f (TexCoord4 a
x a
y a
z a
w) = ((a
x a -> a -> a
`f` a
y) a -> a -> a
`f` a
z) a -> a -> a
`f` a
w

instance Traversable TexCoord4 where
   traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TexCoord4 a -> f (TexCoord4 b)
traverse a -> f b
une:///usr/lib/ghc/lib/../../../share/doc/ghc-doc/html/libraries/ghc-internal-9.1003.0-cf9e/src/GHC.Internal.Data.Traversable.html#Traversable">Traversable (UniformLocation -> TexCoord3 a -> IO ())
-> UniformLocation -> StateVar (TexCoord3 a)
forall a (b :: * -> *).
(UniformComponent a, Storable (b a)) =>1
(UniformLocation -> b a -> ¶¯e( a) -> Vector3 a -> Int
unsafeIndex :: (Vector3 a, Vector3 a) -> Vector3 a -> Int
$cinRange :: forall a. Ix a => (Vector3ass="doc/html/src/Graphics.GL.Tokens.html#GL_TEXTURE_MATRIX">GL_TEXTURE_MATRIX
        PNameMatrix
GetColorMatrix -> GLenum -> Maybe GLenum
forall a. a -> Maybe a
Traversable Just GLenum
TraversableReadPrec [Vertex4 a]
ReadPrec (Vertex4 a)
Int -> ReadS (Vertex4 a)
ReadS [Vertex4 a]
(Int -> ReadS (Vertex4 a))
-> ReadS [Vertex4 a]
-> ReadPrec (Vertex4 a)
-> ReadPrec [Vertex4 a]
-> Read (Vertex4 a)
forext">poke :: Ptr (Vector4 a) -> Vector4 a -> IO ()