summaryrefslogtreecommitdiffstats
path: root/src/TextViewport/Render/RenderItem.hs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-03-06 20:45:39 +0100
committertv <tv@krebsco.de>2026-03-06 23:36:06 +0100
commitb098daf7bcb6e4a493723026f5644bd81164c641 (patch)
tree71108cdebf54729830c72b61d725c6f91a3cfdcd /src/TextViewport/Render/RenderItem.hs
parent7e516fc31601fd07923d7033ba64f530175cac0e (diff)
modularize
Diffstat (limited to 'src/TextViewport/Render/RenderItem.hs')
-rw-r--r--src/TextViewport/Render/RenderItem.hs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/TextViewport/Render/RenderItem.hs b/src/TextViewport/Render/RenderItem.hs
new file mode 100644
index 0000000..6c9cbc3
--- /dev/null
+++ b/src/TextViewport/Render/RenderItem.hs
@@ -0,0 +1,23 @@
+module TextViewport.Render.RenderItem where
+
+import TextViewport.Buffer.Item (Item(..))
+import TextViewport.Render.CachedRender
+import TextViewport.Render.RenderedItem
+import TextViewport.Render.Segmentation (applyStrategy)
+
+renderItem :: Int -> Int -> Item -> Maybe CachedRender -> CachedRender
+renderItem width itemIx (Item txt strategy) mOld =
+ case mOld of
+ Just old
+ | crWidth old == width
+ , crText old == txt
+ -> old
+ _ ->
+ let linesV = applyStrategy strategy width itemIx txt
+ rendered = RenderedItem linesV
+ in CachedRender
+ { crWidth = width
+ , crStrategy = strategy
+ , crText = txt
+ , crRendered = rendered
+ }