{-# LANGUAGE OverloadedStrings, DeriveGeneric #-} ------------------------------------------------------------------------------- -- | -- Module : Network.Internal.Model -- Copyright : (C) 2016 Ismail Mustafa -- License : BSD-style (see the file LICENSE) -- Maintainer : Ismail Mustafa ), mconcat) import Data.Text import Data.Word (Word8) import GHC.Generics {-| Credentials that take and key and secret token. -} data Credentials = Credentials { keyToken :: String , secretToken :: String } deriving Show {-| Handwriting data type that contains all the information about a specific handwriting style. -} data Handwriting = Handwriting { handwritingId :: Text , title :: Text , dateCreated :: Text , dateModified :: Text , ratingNeatness :: Double , ratingCursivity :: Double , ratingEmbellishment :: Double , ratingCharacterWidth :: Double } deriving (Generic) {-| Pretty print the handwriting data type. -} instance Show Handwriting where show (Handwriting a b c d e f g h) = "{" <> mconcat [" Handwriting Id: ", show a, "\n"] <> mconcat [" Title: ", show b, "\n"] <> mconcat [" Date Created: ", show c, "\n"] <> mconcat [" Date Modified: ", show d, "\n"] <> mconcat [" Rating Neatness: ", show e, "\n"] <> mconcat [" Rating Cursivity: ", show f, "\n"] <> mconcat [" Rating Embellishment: ", show g, "\n"] <> mconcat ["Rating CharacterWidth: ", show h, "\n"] <> "}" {-| Handwriting JSON instance. -} instance FromJSON Handwriting instance ToJSON Handwriting {-| Color type representing (R,G,B). -} type Color = (Word8, Word8, Word8) {-| Format determines rendered image format in either png or pdf. -} data Format = PNG | PDF deriving (Show) {-| 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 | Repeatable deriving (Show) {-| PDFUnits is used to specify measurements when rendering a PDF. -} data PDFUnits = Points | Inches deriving (Show) {-| Optional image parameters that dictate different properties of the rendered image. -} data ImageParams = ImageParams { format :: Format , width :: Maybe Double , height :: Maybe Double , hId :: Maybe String , size :: Maybe Double , color :: Maybe Color , lineSpacing :: Maybe Double , lineSpacingVariance :: Maybe Double , wordSpacingVariance :: Maybe Double , randomSeed :: RandomSeed , pdfUnits :: PDFUnits } deriving (Show) {-| Default image parameters provided for convenience. -} defaultImageParams :: ImageParams defaultImageParams = ImageParams { format = PNG , width = Nothing , height = Nothing , hId = Just "2D5S46A80003" , size = Nothing , color = Nothing , lineSpacing = Nothing , lineSpacingVariance = Nothing , wordSpacingVariance = Nothing , randomSeed = Randomize , pdfUnits = Inches }