module Graphics.UI.SDL.MPEG.Types where
import Foreign
import Graphics.UI.SDL

newtype MutexStruct = MkMutexStruct ()
type Mutex = ForeignPtr MutexStruct

newtype MPEGStruct = MkMPEGStruct ()
type MPEG = ForeignPtr MPEGStruct

newtype InfoStruct = MkInfoStruct ()
type Info = ForeignPtr InfoStruct

newtype FilterStruct = MkFilterStruct ()
type Filter = ForeignPtr FilterStruct

newtype AudioSpecStruct = MkAudioSpecStruct ()
type AudioSpec = ForeignPtr AudioSpecStruct

type DisplayCallback = Ptr SurfaceStruct -> Int -> Int -> Int -> Int -> IO ()

data Status = SMPEG_ERROR | SMPEG_STOPPED | SMPEG_PLAYING
    deriving (Eq, Ord, Bounded)

instance Enum Status where
    toEnum (-1) = SMPEG_ERROR
    toEnum 0    = SMPEG_STOPPED
    toEnum 1    = SMPEG_PLAYING
    toEnum _    = error "Status's enum value should be -1, 0 or 1"
    fromEnum SMPEG_ERROR   = -1
    fromEnum SMPEG_STOPPED = 0
    fromEnum SMPEG_PLAYING = 1