@@ 1,7 1,14 @@
-module Data.Text.ParagraphLayout.Internal.ResolvedBox (ResolvedBox (..))
+module Data.Text.ParagraphLayout.Internal.ResolvedBox
+ ( ResolvedBox (..)
+ , boxEndSpacing
+ , boxLeftSpacing
+ , boxRightSpacing
+ , boxStartSpacing
+ )
where
-import Data.Text.Glyphize (Direction)
+import Data.Int (Int32)
+import Data.Text.Glyphize (Direction (DirLTR, DirRTL))
import Data.Text.ParagraphLayout.Internal.BoxOptions
@@ 16,3 23,25 @@ data ResolvedBox d = ResolvedBox
instance Eq (ResolvedBox d) where
a == b = boxIndex a == boxIndex b
+
+boxLeftSpacing :: ResolvedBox d -> Int32
+boxLeftSpacing rb = case boxSpacing $ boxOptions rb of
+ BoxSpacingLeftRight s _ -> s
+
+boxRightSpacing :: ResolvedBox d -> Int32
+boxRightSpacing rb = case boxSpacing $ boxOptions rb of
+ BoxSpacingLeftRight _ s -> s
+
+-- | Spacing at the start of the given box.
+boxStartSpacing :: ResolvedBox d -> Int32
+boxStartSpacing rb = case (boxDirection rb, boxSpacing $ boxOptions rb) of
+ (DirLTR, BoxSpacingLeftRight s _) -> s
+ (DirRTL, BoxSpacingLeftRight _ s) -> s
+ (_, _) -> 0
+
+-- | Spacing at the end of the given box.
+boxEndSpacing :: ResolvedBox d -> Int32
+boxEndSpacing rb = case (boxDirection rb, boxSpacing $ boxOptions rb) of
+ (DirLTR, BoxSpacingLeftRight _ s) -> s
+ (DirRTL, BoxSpacingLeftRight s _) -> s
+ (_, _) -> 0