{-# LANGUAGE ConstraintKinds #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module Graphics.Image.IO.Formats
( module Graphics.Image.IO.Formats.JuicyPixels
, module Graphics.Image.IO.Formats.Netpbm
, ImageFormat(..)
, InputFormat(..)
, OutputFormat(..)
, Readable(..)
, Writable(..)
, Convertible(..)
, Seq(..)
, AllReadable
, AllWritable
, ComplexWritable
) where
import Graphics.Image.Interface
import Graphics.Image.IO.Base
import Graphics.Image.IO.Formats.JuicyPixels
import Graphics.Image.IO.Formats.Netpbm
data InputFormat = InputBMP
| InputGIF
| InputHDR
| InputJPG
| InputPNG
| InputTIF
| InputPNM
| InputTGA deriving (Eq, Show, Enum, Bounded)
instance ImageFormat InputFormat where
data SaveOption InputFormat
ext InputBMP = ext BMP
ext InputGIF = ext GIF
ext InputHDR = ext HDR
ext InputJPG = ext JPG
ext InputPNG = ext PNG
ext InputTGA = ext TGA
ext InputTIF = ext TIF
ext InputPNM = ext PPM
exts InputBMP = exts BMP
exts InputGIF = exts GIF
exts InputHDR = exts HDR
exts InputJPG = exts JPG
exts InputPNG = exts PNG
exts InputTGA = exts TGA
exts InputTIF = exts TIF
exts InputPNM = [ext PBM, ext PGM, ext PPM]
type AllReadable arr cs = ( Readable (Image arr cs Double) BMP
, Readable (Image arr cs Double) GIF
, Readable (Image arr cs Double) HDR
, Readable (Image arr cs Double) JPG
, Readable (Image arr cs Double) PNG
, Readable (Image arr cs Double) TGA
, Readable (Image arr cs Double) TIF
, Readable (Image arr cs Double) PPM
)
instance AllReadable arr cs => Readable (Image arr cs Double) InputFormat where
decode InputBMP = decode BMP
decode InputGIF = decode GIF
decode InputHDR = decode HDR
decode InputJPG = decode JPG
decode InputPNG = decode PNG
decode InputTIF = decode TIF
decode InputPNM = decode PPM
decode InputTGA = decode TGA
data OutputFormat = OutputBMP
| OutputGIF
| OutputHDR
| OutputJPG
| OutputPNG
| OutputTIF
| OutputTGA deriving (Eq, Show, Enum, Bounded)
instance ImageFormat OutputFormat where
data SaveOption OutputFormat
ext OutputBMP = ext BMP
ext OutputGIF = ext GIF
ext OutputHDR = ext HDR
ext OutputJPG = ext JPG
ext OutputPNG = ext PNG
ext OutputTGA = ext TGA
ext OutputTIF = ext TIF
exts OutputBMP = exts BMP
exts OutputGIF = exts GIF
exts OutputHDR = exts HDR
exts OutputJPG = exts JPG
exts OutputPNG = exts PNG
exts OutputTGA = exts TGA
exts OutputTIF = exts TIF
type AllWritable arr cs = ( Writable (Image arr cs Double) BMP
, Writable (Image arr cs Double) GIF
, Writable (Image arr cs Double) HDR
, Writable (Image arr cs Double) JPG
, Writable (Image arr cs Double) PNG
, Writable (Image arr cs Double) TGA
, Writable (Image arr cs Double) TIF )
instance AllWritable arr cs => Writable (Image arr cs Double) OutputFormat where
encode OutputBMP _ = encode BMP []
encode OutputGIF _ = encode GIF []
encode OutputHDR _ = encode HDR []
encode OutputJPG _ = encode JPG []
encode OutputPNG _ = encode PNG []
encode OutputTGA _ = encode TGA []
encode OutputTIF _ = encode TIF []