-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | API Client for the handwriting.io API.
--   
--   Please see README.md
@package handwriting
@version 0.1.0.3


-- | Model definitions for the API wrapper.
module Network.Internal.Model

-- | Credentials that take and key and secret token.
data Credentials
Credentials :: String -> String -> Credentials
[keyToken] :: Credentials -> String
[secretToken] :: Credentials -> String

-- | Handwriting data type that contains all the information about a
--   specific handwriting style.
data Handwriting
Handwriting :: Text -> Text -> Text -> Text -> Double -> Double -> Double -> Double -> Handwriting
[handwritingId] :: Handwriting -> Text
[title] :: Handwriting -> Text
[dateCreated] :: Handwriting -> Text
[dateModified] :: Handwriting -> Text
[ratingNeatness] :: Handwriting -> Double
[ratingCursivity] :: Handwriting -> Double
[ratingEmbellishment] :: Handwriting -> Double
[ratingCharacterWidth] :: Handwriting -> Double

-- | Optional image parameters that dictate different properties of the
--   rendered image.
data ImageParams
ImageParams :: Format -> Maybe Double -> Maybe Double -> Maybe String -> Maybe Double -> Maybe Color -> Maybe Double -> Maybe Double -> Maybe Double -> RandomSeed -> PDFUnits -> ImageParams
[format] :: ImageParams -> Format
[width] :: ImageParams -> Maybe Double
[height] :: ImageParams -> Maybe Double
[hId] :: ImageParams -> Maybe String
[size] :: ImageParams -> Maybe Double
[color] :: ImageParams -> Maybe Color
[lineSpacing] :: ImageParams -> Maybe Double
[lineSpacingVariance] :: ImageParams -> Maybe Double
[wordSpacingVariance] :: ImageParams -> Maybe Double
[randomSeed] :: ImageParams -> RandomSeed
[pdfUnits] :: ImageParams -> PDFUnits

-- | Color type representing (R,G,B).
type Color = (Word8, Word8, Word8)

-- | Format determines rendered image format in either png or pdf.
data Format
PNG :: Format
PDF :: Format

-- | PDFUnits is used to specify measurements when rendering a PDF.
data PDFUnits
Points :: PDFUnits
Inches :: PDFUnits

-- | RandomSeed is used to specify if every rendered image called with the
--   same parameters should render differently or the same each time.
data RandomSeed
Randomize :: RandomSeed
Repeatable :: RandomSeed

-- | Default image parameters provided for convenience.
defaultImageParams :: ImageParams
instance GHC.Show.Show Network.Internal.Model.ImageParams
instance GHC.Show.Show Network.Internal.Model.PDFUnits
instance GHC.Show.Show Network.Internal.Model.RandomSeed
instance GHC.Show.Show Network.Internal.Model.Format
instance GHC.Generics.Generic Network.Internal.Model.Handwriting
instance GHC.Show.Show Network.Internal.Model.Credentials
instance GHC.Show.Show Network.Internal.Model.Handwriting
instance Data.Aeson.Types.FromJSON.FromJSON Network.Internal.Model.Handwriting
instance Data.Aeson.Types.ToJSON.ToJSON Network.Internal.Model.Handwriting


-- | Helper functions that don't belong anywhere else.
module Network.Internal.Utilities

-- | Convert a json object to a handwriting data type.
jsonToHandwriting :: Value -> Handwriting

-- | Takes in image parameters and the text to render and generates a
--   properly formatted endpoint.
processImageParams :: ImageParams -> String -> String


-- | API Client for the handwriting.io API.
module Network.Handwriting

-- | Get a single handwriting by id.
--   
--   <pre>
--   import Network.Handwriting
--   creds :: Credentials
--   creds = Credentials "key" "secret"
--   
--   main :: IO ()
--   main = do
--       handwritings &lt;- getHandwritings creds "31SF81NG00ES"
--   </pre>
getHandwriting :: Credentials -> String -> IO Handwriting

-- | Get a list of all Handwritings.
--   
--   <pre>
--   import Network.Handwriting
--   creds :: Credentials
--   creds = Credentials "key" "secret"
--   
--   main :: IO ()
--   main = do
--       handwritings &lt;- getHandwritings creds
--   </pre>
getHandwritings :: Credentials -> IO [Handwriting]

-- | Get a handwriting image as either a PDF or PNG.
--   
--   <pre>
--   import Network.Handwriting
--   creds :: Credentials
--   creds = Credentials "key" "secret"
--   
--   main :: IO ()
--   main = do
--       let params = defaultImageParams {format = PDF}
--       imageByteString &lt;- renderImage creds params "Hello World!"
--   </pre>
renderImage :: Credentials -> ImageParams -> String -> IO ByteString

-- | Color type representing (R,G,B).
type Color = (Word8, Word8, Word8)

-- | Credentials that take and key and secret token.
data Credentials
Credentials :: String -> String -> Credentials
[keyToken] :: Credentials -> String
[secretToken] :: Credentials -> String

-- | Default image parameters provided for convenience.
defaultImageParams :: ImageParams

-- | Format determines rendered image format in either png or pdf.
data Format
PNG :: Format
PDF :: Format

-- | Handwriting data type that contains all the information about a
--   specific handwriting style.
data Handwriting
Handwriting :: Text -> Text -> Text -> Text -> Double -> Double -> Double -> Double -> Handwriting
[handwritingId] :: Handwriting -> Text
[title] :: Handwriting -> Text
[dateCreated] :: Handwriting -> Text
[dateModified] :: Handwriting -> Text
[ratingNeatness] :: Handwriting -> Double
[ratingCursivity] :: Handwriting -> Double
[ratingEmbellishment] :: Handwriting -> Double
[ratingCharacterWidth] :: Handwriting -> Double

-- | Optional image parameters that dictate different properties of the
--   rendered image.
data ImageParams
ImageParams :: Format -> Maybe Double -> Maybe Double -> Maybe String -> Maybe Double -> Maybe Color -> Maybe Double -> Maybe Double -> Maybe Double -> RandomSeed -> PDFUnits -> ImageParams
[format] :: ImageParams -> Format
[width] :: ImageParams -> Maybe Double
[height] :: ImageParams -> Maybe Double
[hId] :: ImageParams -> Maybe String
[size] :: ImageParams -> Maybe Double
[color] :: ImageParams -> Maybe Color
[lineSpacing] :: ImageParams -> Maybe Double
[lineSpacingVariance] :: ImageParams -> Maybe Double
[wordSpacingVariance] :: ImageParams -> Maybe Double
[randomSeed] :: ImageParams -> RandomSeed
[pdfUnits] :: ImageParams -> PDFUnits

-- | PDFUnits is used to specify measurements when rendering a PDF.
data PDFUnits
Points :: PDFUnits
Inches :: PDFUnits

-- | RandomSeed is used to specify if every rendered image called with the
--   same parameters should render differently or the same each time.
data RandomSeed
Randomize :: RandomSeed
Repeatable :: RandomSeed
