packages feed

balkon-1.3.0.0: src/Data/Text/ParagraphLayout/Internal/Line.hs

module Data.Text.ParagraphLayout.Internal.Line (Line (..), shiftLine)
where

import Data.Int (Int32)

import Data.Text.ParagraphLayout.Internal.Rect

-- | Information about a line in a laid out paragraph.
data Line = Line
    { lineNumber :: Int
    -- ^ Logical number of the line box, starting at 1 for a given paragraph.
    , lineRect :: Rect Int32
    -- ^ Dimensions of the line box (CSS), containing all fragments on a given
    -- line, and matching the width of the whole paragraph.
    }
    deriving (Eq, Read, Show)

-- | Add @dx@ and @dy@ to the line's `x_origin` and `y_origin`,
-- respectively.
shiftLine :: Int32 -> Int32 -> Line -> Line
shiftLine dx dy l = l'
    where
        l' = l { lineRect = r' }
        r' = r { x_origin = x_origin r + dx, y_origin = y_origin r + dy }
        r = lineRect l