M balkon.cabal => balkon.cabal +1 -0
@@ 100,6 100,7 @@ library balkon-internal
Data.Text.ParagraphLayout.Internal.LineHeight,
Data.Text.ParagraphLayout.Internal.Paragraph,
Data.Text.ParagraphLayout.Internal.ParagraphConstruction,
+ Data.Text.ParagraphLayout.Internal.ParagraphLayout,
Data.Text.ParagraphLayout.Internal.Plain,
Data.Text.ParagraphLayout.Internal.Rect,
Data.Text.ParagraphLayout.Internal.ResolvedSpan,
M lib/Data/Text/ParagraphLayout.hs => lib/Data/Text/ParagraphLayout.hs +1 -0
@@ 33,5 33,6 @@ where
import Data.Text.ParagraphLayout.Internal.Fragment
import Data.Text.ParagraphLayout.Internal.LineHeight
import Data.Text.ParagraphLayout.Internal.Paragraph
+import Data.Text.ParagraphLayout.Internal.ParagraphLayout
import Data.Text.ParagraphLayout.Internal.Plain
import Data.Text.ParagraphLayout.Internal.Span
M src/Data/Text/ParagraphLayout/Internal/Paragraph.hs => src/Data/Text/ParagraphLayout/Internal/Paragraph.hs +0 -56
@@ 1,24 1,14 @@
module Data.Text.ParagraphLayout.Internal.Paragraph
(Paragraph(..)
- ,ParagraphLayout(..)
,ParagraphOptions(..)
- ,paragraphLayout
- ,paragraphOriginX
- ,paragraphOriginY
- ,paragraphSpanBounds
- ,shapedRuns
)
where
import Data.Int (Int32)
-import Data.List.NonEmpty (NonEmpty)
-import qualified Data.List.NonEmpty as NonEmpty
import Data.Text.Array (Array)
import Data.Text.Glyphize (Font)
-import Data.Text.ParagraphLayout.Internal.Fragment
import Data.Text.ParagraphLayout.Internal.LineHeight
-import Data.Text.ParagraphLayout.Internal.Rect
import Data.Text.ParagraphLayout.Internal.Span
-- | Text to be laid out as a single paragraph.
@@ 80,49 70,3 @@ data ParagraphOptions = ParagraphOptions
}
deriving (Eq, Show)
-
--- | The resulting layout of the whole paragraph.
-data ParagraphLayout = ParagraphLayout
- { paragraphRect :: Rect Int32
- -- ^ The containing block (CSS3).
- , spanLayouts :: [SpanLayout]
- }
- deriving (Eq, Read, Show)
-
--- | Calculate the offsets into the `Paragraph`'s underlying `Array` where each
--- span starts and ends, in ascending order. The resulting list will be one
--- larger than the list of input spans.
-paragraphSpanBounds :: Paragraph -> NonEmpty Int
-paragraphSpanBounds (Paragraph _ initialOffset spans _) =
- NonEmpty.scanl (+) initialOffset (map spanLength spans)
-
-paragraphOriginX :: (Num a) => a
-paragraphOriginX = 0
-
-paragraphOriginY :: (Num a) => a
-paragraphOriginY = 0
-
-empty :: (Num a) => Rect a
-empty = Rect
- { x_origin = paragraphOriginX
- , y_origin = paragraphOriginY
- , x_size = 0
- , y_size = 0
- }
-
-containRects :: (Ord a, Num a) => [Rect a] -> Rect a
-containRects = foldr union empty
-
--- | Wrap the given `SpanLayout`s and compute their containing rectangle.
-paragraphLayout :: [SpanLayout] -> ParagraphLayout
-paragraphLayout sls = ParagraphLayout pRect sls
- where pRect = containRects $ concat $ map spanRects sls
-
--- | Return all fragments of shaped text in one flat list,
--- discarding information about their associated spans.
-paragraphFragments :: ParagraphLayout -> [Fragment]
-paragraphFragments pl = concat $ map spanFragments $ spanLayouts pl
-
--- | Return all shaped runs in the paragraph.
-shapedRuns :: ParagraphLayout -> [ShapedRun]
-shapedRuns pl = map shapedRun $ paragraphFragments pl
A src/Data/Text/ParagraphLayout/Internal/ParagraphLayout.hs => src/Data/Text/ParagraphLayout/Internal/ParagraphLayout.hs +64 -0
@@ 0,0 1,64 @@
+module Data.Text.ParagraphLayout.Internal.ParagraphLayout
+ (ParagraphLayout(..)
+ ,paragraphLayout
+ ,paragraphOriginX
+ ,paragraphOriginY
+ ,paragraphSpanBounds
+ ,shapedRuns
+ )
+where
+
+import Data.Int (Int32)
+import Data.List.NonEmpty (NonEmpty)
+import qualified Data.List.NonEmpty as NonEmpty
+
+import Data.Text.ParagraphLayout.Internal.Fragment
+import Data.Text.ParagraphLayout.Internal.Paragraph
+import Data.Text.ParagraphLayout.Internal.Rect
+import Data.Text.ParagraphLayout.Internal.Span
+
+-- | The resulting layout of the whole paragraph.
+data ParagraphLayout = ParagraphLayout
+ { paragraphRect :: Rect Int32
+ -- ^ The containing block (CSS3).
+ , spanLayouts :: [SpanLayout]
+ }
+ deriving (Eq, Read, Show)
+
+-- | Calculate the offsets into the `Paragraph`'s underlying `Data.Text.Array`
+-- where each span starts and ends, in ascending order. The resulting list
+-- will be one larger than the list of input spans.
+paragraphSpanBounds :: Paragraph -> NonEmpty Int
+paragraphSpanBounds (Paragraph _ initialOffset spans _) =
+ NonEmpty.scanl (+) initialOffset (map spanLength spans)
+
+paragraphOriginX :: (Num a) => a
+paragraphOriginX = 0
+
+paragraphOriginY :: (Num a) => a
+paragraphOriginY = 0
+
+empty :: (Num a) => Rect a
+empty = Rect
+ { x_origin = paragraphOriginX
+ , y_origin = paragraphOriginY
+ , x_size = 0
+ , y_size = 0
+ }
+
+containRects :: (Ord a, Num a) => [Rect a] -> Rect a
+containRects = foldr union empty
+
+-- | Wrap the given `SpanLayout`s and compute their containing rectangle.
+paragraphLayout :: [SpanLayout] -> ParagraphLayout
+paragraphLayout sls = ParagraphLayout pRect sls
+ where pRect = containRects $ concat $ map spanRects sls
+
+-- | Return all fragments of shaped text in one flat list,
+-- discarding information about their associated spans.
+paragraphFragments :: ParagraphLayout -> [Fragment]
+paragraphFragments pl = concat $ map spanFragments $ spanLayouts pl
+
+-- | Return all shaped runs in the paragraph.
+shapedRuns :: ParagraphLayout -> [ShapedRun]
+shapedRuns pl = map shapedRun $ paragraphFragments pl
M src/Data/Text/ParagraphLayout/Internal/Plain.hs => src/Data/Text/ParagraphLayout/Internal/Plain.hs +1 -0
@@ 33,6 33,7 @@ import Data.Text.ParagraphLayout.Internal.Break
import Data.Text.ParagraphLayout.Internal.Fragment
import Data.Text.ParagraphLayout.Internal.LineHeight
import Data.Text.ParagraphLayout.Internal.Paragraph
+import Data.Text.ParagraphLayout.Internal.ParagraphLayout
import qualified Data.Text.ParagraphLayout.Internal.ProtoFragment as PF
import Data.Text.ParagraphLayout.Internal.Rect
import Data.Text.ParagraphLayout.Internal.ResolvedSpan (WithSpan(WithSpan))
M test/Data/Text/ParagraphLayoutSpec.hs => test/Data/Text/ParagraphLayoutSpec.hs +1 -1
@@ 12,7 12,7 @@ import System.FilePath ((</>))
import Data.Text.ParagraphLayout
import Data.Text.ParagraphLayout.FontLoader
import Data.Text.ParagraphLayout.Internal.Fragment
-import Data.Text.ParagraphLayout.Internal.Paragraph
+import Data.Text.ParagraphLayout.Internal.ParagraphLayout
import Data.Text.ParagraphLayout.ParagraphData
import Data.Text.ParagraphLayout.Rect