    -----------------------------------------------------------------------------
    -- |
    -- Module      :  Graphics.UI.SDL.Mixer.Types
    -- Copyright   :  (c) David Himmelstrup 2005
    -- License     :  BSD-like
    --
    -- Maintainer  :  lemmih@gmail.com
    -- Stability   :  provisional
    -- Portability :  portable
    --
    -----------------------------------------------------------------------------
    module Graphics.UI.SDL.Mixer.Types
        ( ChunkStruct
        , Chunk
        , MusicStruct
        , Music
        , Channel
        , MusicType (..)
        , Fading (..)
        ) where

    import Foreign(ForeignPtr)

    data ChunkStruct
    type Chunk = ForeignPtr ChunkStruct

    data MusicStruct
    type Music = ForeignPtr MusicStruct

    type Channel = Int

    data MusicType
        = MusicNone
        | MusicCmd
        | MusicWav
        | MusicMod
        | MusicMid
        | MusicOgg
        | MusicMp3
          deriving (Int -> MusicType -> ShowS
    [MusicType] -> ShowS
    MusicType -> String
    (Int -> MusicType -> ShowS)
    -> (MusicType -> String)
    -> ([MusicType] -> ShowS)
    -> Show MusicType
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [MusicType] -> ShowS
    $cshowList :: [MusicType] -> ShowS
    show :: MusicType -> String
    $cshow :: MusicType -> String
    showsPrec :: Int -> MusicType -> ShowS
    $cshowsPrec :: Int -> MusicType -> ShowS
    Show,MusicType -> MusicType -> Bool
    (MusicType -> MusicType -> Bool)
    -> (MusicType -> MusicType -> Bool) -> Eq MusicType
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    /= :: MusicType -> MusicType -> Bool
    $c/= :: MusicType -> MusicType -> Bool
    == :: MusicType -> MusicType -> Bool
    $c== :: MusicType -> MusicType -> Bool
    Eq,Eq MusicType
    Eq MusicType =>
    (MusicType -> MusicType -> Ordering)
    -> (MusicType -> MusicType -> Bool)
    -> (MusicType -> MusicType -> Bool)
    -> (MusicType -> MusicType -> Bool)
    -> (MusicType -> MusicType -> Bool)
    -> (MusicType -> MusicType -> MusicType)
    -> (MusicType -> MusicType -> MusicType)
    -> Ord MusicType
    MusicType -> MusicType -> Bool
    MusicType -> MusicType -> Ordering
    MusicType -> MusicType -> MusicType
    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
    min :: MusicType -> MusicType -> MusicType
    $cmin :: MusicType -> MusicType -> MusicType
    max :: MusicType -> MusicType -> MusicType
    $cmax :: MusicType -> MusicType -> MusicType
    >= :: MusicType -> MusicType -> Bool
    $c>= :: MusicType -> MusicType -> Bool
    > :: MusicType -> MusicType -> Bool
    $c> :: MusicType -> MusicType -> Bool
    <= :: MusicType -> MusicType -> Bool
    $c<= :: MusicType -> MusicType -> Bool
    < :: MusicType -> MusicType -> Bool
    $c< :: MusicType -> MusicType -> Bool
    compare :: MusicType -> MusicType -> Ordering
    $ccompare :: MusicType -> MusicType -> Ordering
    $cp1Ord :: Eq MusicType
    Ord,Int -> MusicType
    MusicType -> Int
    MusicType -> [MusicType]
    MusicType -> MusicType
    MusicType -> MusicType -> [MusicType]
    MusicType -> MusicType -> MusicType -> [MusicType]
    (MusicType -> MusicType)
    -> (MusicType -> MusicType)
    -> (Int -> MusicType)
    -> (MusicType -> Int)
    -> (MusicType -> [MusicType])
    -> (MusicType -> MusicType -> [MusicType])
    -> (MusicType -> MusicType -> [MusicType])
    -> (MusicType -> MusicType -> MusicType -> [MusicType])
    -> Enum MusicType
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    enumFromThenTo :: MusicType -> MusicType -> MusicType -> [MusicType]
    $cenumFromThenTo :: MusicType -> MusicType -> MusicType -> [MusicType]
    enumFromTo :: MusicType -> MusicType -> [MusicType]
    $cenumFromTo :: MusicType -> MusicType -> [MusicType]
    enumFromThen :: MusicType -> MusicType -> [MusicType]
    $cenumFromThen :: MusicType -> MusicType -> [MusicType]
    enumFrom :: MusicType -> [MusicType]
    $cenumFrom :: MusicType -> [MusicType]
    fromEnum :: MusicType -> Int
    $cfromEnum :: MusicType -> Int
    toEnum :: Int -> MusicType
    $ctoEnum :: Int -> MusicType
    pred :: MusicType -> MusicType
    $cpred :: MusicType -> MusicType
    succ :: MusicType -> MusicType
    $csucc :: MusicType -> MusicType
    Enum,MusicType
    MusicType -> MusicType -> Bounded MusicType
    forall a. a -> a -> Bounded a
    maxBound :: MusicType
    $cmaxBound :: MusicType
    minBound :: MusicType
    $cminBound :: MusicType
    Bounded)

    data Fading
        = NoFading
        | FadingOut
        | FadingIn
          deriving (Int -> Fading -> ShowS
    [Fading] -> ShowS
    Fading -> String
    (Int -> Fading -> ShowS)
    -> (Fading -> String) -> ([Fading] -> ShowS) -> Show Fading
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [Fading] -> ShowS
    $cshowList :: [Fading] -> ShowS
    show :: Fading -> String
    $cshow :: Fading -> String
    showsPrec :: Int -> Fading -> ShowS
    $cshowsPrec :: Int -> Fading -> ShowS
    Show,Fading -> Fading -> Bool
    (Fading -> Fading -> Bool)
    -> (Fading -> Fading -> Bool) -> Eq Fading
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    /= :: Fading -> Fading -> Bool
    $c/= :: Fading -> Fading -> Bool
    == :: Fading -> Fading -> Bool
    $c== :: Fading -> Fading -> Bool
    Eq,Eq Fading
    Eq Fading =>
    (Fading -> Fading -> Ordering)
    -> (Fading -> Fading -> Bool)
    -> (Fading -> Fading -> Bool)
    -> (Fading -> Fading -> Bool)
    -> (Fading -> Fading -> Bool)
    -> (Fading -> Fading -> Fading)
    -> (Fading -> Fading -> Fading)
    -> Ord Fading
    Fading -> Fading -> Bool
    Fading -> Fading -> Ordering
    Fading -> Fading -> Fading
    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
    min :: Fading -> Fading -> Fading
    $cmin :: Fading -> Fading -> Fading
    max :: Fading -> Fading -> Fading
    $cmax :: Fading -> Fading -> Fading
    >= :: Fading -> Fading -> Bool
    $c>= :: Fading -> Fading -> Bool
    > :: Fading -> Fading -> Bool
    $c> :: Fading -> Fading -> Bool
    <= :: Fading -> Fading -> Bool
    $c<= :: Fading -> Fading -> Bool
    < :: Fading -> Fading -> Bool
    $c< :: Fading -> Fading -> Bool
    compare :: Fading -> Fading -> Ordering
    $ccompare :: Fading -> Fading -> Ordering
    $cp1Ord :: Eq Fading
    Ord,Int -> Fading
    Fading -> Int
    Fading -> [Fading]
    Fading -> Fading
    Fading -> Fading -> [Fading]
    Fading -> Fading -> Fading -> [Fading]
    (Fading -> Fading)
    -> (Fading -> Fading)
    -> (Int -> Fading)
    -> (Fading -> Int)
    -> (Fading -> [Fading])
    -> (Fading -> Fading -> [Fading])
    -> (Fading -> Fading -> [Fading])
    -> (Fading -> Fading -> Fading -> [Fading])
    -> Enum Fading
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    enumFromThenTo :: Fading -> Fading -> Fading -> [Fading]
    $cenumFromThenTo :: Fading -> Fading -> Fading -> [Fading]
    enumFromTo :: Fading -> Fading -> [Fading]
    $cenumFromTo :: Fading -> Fading -> [Fading]
    enumFromThen :: Fading -> Fading -> [Fading]
    $cenumFromThen :: Fading -> Fading -> [Fading]
    enumFrom :: Fading -> [Fading]
    $cenumFrom :: Fading -> [Fading]
    fromEnum :: Fading -> Int
    $cfromEnum :: Fading -> Int
    toEnum :: Int -> Fading
    $ctoEnum :: Int -> Fading
    pred :: Fading -> Fading
    $cpred :: Fading -> Fading
    succ :: Fading -> Fading
    $csucc :: Fading -> Fading
    Enum,Fading
    Fading -> Fading -> Bounded Fading
    forall a. a -> a -> Bounded a
    maxBound :: Fading
    $cmaxBound :: Fading
    minBound :: Fading
    $cminBound :: Fading
    Bounded)