chiasma-0.12.2.0: lib/Chiasma/Ui/Data/ViewGeometry.hs
module Chiasma.Ui.Data.ViewGeometry where
import Data.Data (Data)
import Prettyprinter (Doc, Pretty (..), emptyDoc, space, (<+>))
data ViewGeometry =
ViewGeometry {
minSize :: Maybe Float,
maxSize :: Maybe Float,
fixedSize :: Maybe Float,
minimizedSize :: Maybe Float,
weight :: Maybe Float,
position :: Maybe Float
}
deriving stock (Eq, Show, Data, Generic)
deriving anyclass (Default)
mayPretty :: Text -> Maybe Float -> Doc a
mayPretty prefix (Just a) =
space <> pretty prefix <> ":" <+> pretty a
mayPretty _ Nothing =
emptyDoc
instance Pretty ViewGeometry where
pretty (ViewGeometry minSize maxSize fixedSize _ _ _) =
foldl @[] (<>) emptyDoc (uncurry mayPretty <$> [("min", minSize), ("max", maxSize), ("fixed", fixedSize)])