summaryrefslogtreecommitdiffstats
path: root/src/TextViewport/Render/RenderItem.hs
blob: 6c9cbc32f4a79a6bec33e43e3e734f07f993a3ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
           }