{-# LANGUAGE GADTs #-}
module Tart.Format.Types
  ( TartFile(..)
  , TartFileFormat(..)
  )
where

import qualified Data.Binary as B
import qualified Data.Text as T

import Tart.Canvas

data TartFile =
    TartFile { TartFile -> [Canvas]
tartFileCanvasList  :: [Canvas]
             , TartFile -> [Text]
tartFileCanvasNames :: [T.Text]
             , TartFile -> [Int]
tartFileCanvasOrder :: [Int]
             }

data TartFileFormat where
    BinaryFormatVersion :: (B.Get a)
                        -> (a -> IO (Either String TartFile))
                        -> TartFileFormat