packages feed

aeson-tiled-0.0.2.0: src/Codec/Tiled/Object/Text.hs

module Codec.Tiled.Object.Text where

import Data.Text qualified as The
import GHC.Generics (Generic)

import Codec.Tiled.Aeson (FromJSON(..), ToJSON(..), genericParseJSON, genericToJSON)

data Text = Text
  { bold       :: Maybe Bool     -- ^  Whether to use a bold font (default: false)
  , color      :: Maybe The.Text -- ^  Hex-formatted color (#RRGGBB or #AARRGGBB) (default: #000000)
  , fontFamily :: Maybe The.Text -- ^  Font family (default: sans-serif)
  , hAlign     :: Maybe The.Text -- ^  Horizontal alignment (center, right, justify or left (default))
  , italic     :: Maybe Bool     -- ^  Whether to use an italic font (default: false)
  , kerning    :: Maybe Bool     -- ^  Whether to use kerning when placing characters (default: true)
  , pixelSize  :: Maybe Int      -- ^  Pixel size of font (default: 16)
  , strikeout  :: Maybe Bool     -- ^  Whether to strike out the text (default: false)
  , text       :: The.Text       -- ^  Text
  , underline  :: Maybe Bool     -- ^  Whether to underline the text (default: false)
  , vAlign     :: Maybe The.Text -- ^  Vertical alignment (center, bottom or top (default))
  , wrap       :: Maybe Bool     -- ^  Whether the text is wrapped within the object bounds (default: false)
  }
  deriving (Eq, Show, Generic)

instance FromJSON Text where
  parseJSON = genericParseJSON

instance ToJSON Text where
  toJSON = genericToJSON