module Codec.GlTF
  ( GlTF(..)
  , fromByteString
  , fromFile
  , fromChunk
  ) where

import Data.ByteString (ByteString)

import qualified Data.Aeson as JSON

import Codec.GlTF.Root (GlTF(..))

import qualified Codec.GLB  as GLB

fromByteString :: ByteString -> Either String GlTF
fromByteString :: ByteString -> Either String GlTF
fromByteString = ByteString -> Either String GlTF
forall a. FromJSON a => ByteString -> Either String a
JSON.eitherDecodeStrict'

fromFile :: FilePath -> IO (Either String GlTF)
fromFile :: String -> IO (Either String GlTF)
fromFile = String -> IO (Either String GlTF)
forall a. FromJSON a => String -> IO (Either String a)
JSON.eitherDecodeFileStrict'

fromChunk :: GLB.Chunk -> Either String GlTF
fromChunk :: Chunk -> Either String GlTF
fromChunk = ByteString -> Either String GlTF
forall a. FromJSON a => ByteString -> Either String a
JSON.eitherDecodeStrict' (ByteString -> Either String GlTF)
-> (Chunk -> ByteString) -> Chunk -> Either String GlTF
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Chunk -> ByteString
GLB.chunkData