module Data.Text.ParagraphLayout.Internal.BoxOptions ( BoxOptions (..) , BoxSpacing (..) , defaultBoxOptions ) where import Data.Int (Int32) -- | Style options to be applied to an inline box. -- -- This record type is likely to be extended in the future. -- Use `defaultBoxOptions` and update it with specific record selectors -- instead of constructing `BoxOptions` directly. data BoxOptions = BoxOptions { boxSpacing :: BoxSpacing -- Determines amount of empty space to add before the first fragment -- and/or after the last fragment of this box. -- -- This can be used to reserve space for a left margin, border, -- and/or padding. } deriving (Eq) -- | Determines the amount of empty space to add around a box. data BoxSpacing -- | Specification using absolute directions, unaffected by text direction. -- -- (However, text direction is still used in case of fragmentation, -- to determine how to map the first (last) fragment to left (right).) = BoxSpacingLeftRight Int32 -- ^ Amount of empty space to add to the left side of the -- first fragment (for LTR text) or last fragment (for RTL text) -- created from this box. Int32 -- ^ Amount of empty space to add to the right side of the -- first fragment (for RTL text) or last fragment (for LTR text) -- created from this box. deriving (Eq, Show, Read) -- | `BoxOptions` with default values. defaultBoxOptions :: BoxOptions defaultBoxOptions = BoxOptions { boxSpacing = BoxSpacingLeftRight 0 0 }