{-# LANGUAGE MultiParamTypeClasses, TypeFamilies, NullaryTypeClasses #-}

module FWGL.Backend.IO where

import FRP.Yampa
import FWGL.Backend.GLES
import FWGL.Input

class GLES => BackendIO where
        -- TODO: loadImage may fail
        loadImage :: FilePath -> ((Image, Int, Int) -> IO ()) -> IO ()

        loadTextFile :: FilePath -> (Either String String -> IO ()) -> IO ()

        setup :: (Int -> Int -> Ctx -> IO state)
              -> (out -> Ctx -> state -> IO state)
              -> IO inp
              -> SF (Input inp) out
              -> IO ()