summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-03-07 00:47:10 +0100
committertv <tv@krebsco.de>2026-03-07 00:47:10 +0100
commitfdf2c5436dfea4a30af445059e77a54e14b64752 (patch)
tree4cd6515e932413fda0398ddf887915bfd37ccd6a
parent18fffd492fe7134ef1cc53e1725d1709ddbde20b (diff)
ViewportInstance -> InstanceHEADmaster
-rw-r--r--src/TextViewport/Viewport/Instance.hs52
-rw-r--r--test/Spec.hs18
2 files changed, 35 insertions, 35 deletions
diff --git a/src/TextViewport/Viewport/Instance.hs b/src/TextViewport/Viewport/Instance.hs
index 3d0568e..1bafcbd 100644
--- a/src/TextViewport/Viewport/Instance.hs
+++ b/src/TextViewport/Viewport/Instance.hs
@@ -12,65 +12,65 @@ import TextViewport.Viewport.Viewport (Viewport, clampViewport, mkViewport)
import TextViewport.Viewport.Viewport qualified as Viewport
-data ViewportInstance = ViewportInstance
+data Instance = Instance
{ viRender :: RenderState
, viView :: Viewport
} deriving (Show)
-mkViewportInstance :: Int -> Int -> Buffer -> ViewportInstance
-mkViewportInstance width height buf =
+mkInstance :: Int -> Int -> Buffer -> Instance
+mkInstance width height buf =
let rs = mkRenderState width buf
vp = mkViewport width height rs
- in ViewportInstance rs vp
+ in Instance rs vp
-visibleLines :: ViewportInstance -> [RenderedLine]
-visibleLines (ViewportInstance rs vp) =
+visibleLines :: Instance -> [RenderedLine]
+visibleLines (Instance rs vp) =
take (Viewport.vpHeight vp) . drop (Viewport.vpOffset vp) . RenderedBuffer.flatten $ RenderState.rsRendered rs
-applyToInstance :: (Viewport -> Viewport) -> ViewportInstance -> ViewportInstance
-applyToInstance f (ViewportInstance rs vp) =
+applyToInstance :: (Viewport -> Viewport) -> Instance -> Instance
+applyToInstance f (Instance rs vp) =
let vp' = f vp
- in ViewportInstance rs (clampViewport rs vp')
+ in Instance rs (clampViewport rs vp')
-applyToInstanceRS :: (RenderState -> Viewport -> Viewport) -> ViewportInstance -> ViewportInstance
-applyToInstanceRS f (ViewportInstance rs vp) =
+applyToInstanceRS :: (RenderState -> Viewport -> Viewport) -> Instance -> Instance
+applyToInstanceRS f (Instance rs vp) =
let vp' = f rs vp
- in ViewportInstance rs (clampViewport rs vp')
+ in Instance rs (clampViewport rs vp')
-scrollByI :: Int -> ViewportInstance -> ViewportInstance
+scrollByI :: Int -> Instance -> Instance
scrollByI delta = applyToInstance (Viewport.scrollBy delta)
-scrollUpI :: Int -> ViewportInstance -> ViewportInstance
+scrollUpI :: Int -> Instance -> Instance
scrollUpI delta = applyToInstance (Viewport.scrollUp delta)
-scrollDownI :: Int -> ViewportInstance -> ViewportInstance
+scrollDownI :: Int -> Instance -> Instance
scrollDownI delta = applyToInstance (Viewport.scrollDown delta)
-pageUpI :: ViewportInstance -> ViewportInstance
+pageUpI :: Instance -> Instance
pageUpI = applyToInstance Viewport.pageUp
-pageDownI :: ViewportInstance -> ViewportInstance
+pageDownI :: Instance -> Instance
pageDownI = applyToInstance Viewport.pageDown
-alignTopI :: ViewportInstance -> ViewportInstance
+alignTopI :: Instance -> Instance
alignTopI = applyToInstance Viewport.alignTop
-alignBottomI :: ViewportInstance -> ViewportInstance
+alignBottomI :: Instance -> Instance
alignBottomI = applyToInstanceRS Viewport.alignBottom
-modifyItemI :: Int -> (Item -> Item) -> ViewportInstance -> ViewportInstance
-modifyItemI ix f (ViewportInstance rs vp) =
+modifyItemI :: Int -> (Item -> Item) -> Instance -> Instance
+modifyItemI ix f (Instance rs vp) =
let buf' = Buffer.modifyItem ix f (RenderState.rsBuffer rs)
rs' = mkRenderState (RenderState.rsWidth rs) buf'
vp' = clampViewport rs' vp
- in ViewportInstance rs' vp'
+ in Instance rs' vp'
-lookupPositionI :: Int -> Int -> ViewportInstance -> Maybe (Int, Int)
-lookupPositionI x y (ViewportInstance rs vp) =
+lookupPositionI :: Int -> Int -> Instance -> Maybe (Int, Int)
+lookupPositionI x y (Instance rs vp) =
lookupPosition x y vp (RenderState.rsRendered rs)
---debugVI :: ViewportInstance -> IO ()
---debugVI (ViewportInstance rs vp) = do
+--debugVI :: Instance -> IO ()
+--debugVI (Instance rs vp) = do
-- putStrLn ("offset = " ++ show (Viewport.vpOffset vp))
-- putStrLn ("height = " ++ show (Viewport.vpHeight vp))
-- putStrLn ("lineCount = " ++ show (RenderState.rsLineCount rs))
diff --git a/test/Spec.hs b/test/Spec.hs
index c7c2cbd..70b1815 100644
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -403,44 +403,44 @@ main = hspec do
describe "Instance" do
- it "mkViewportInstance builds consistent state" do
- let vi = mkViewportInstance 10 3 (mkBuf ["a","b","c"])
+ it "mkInstance builds consistent state" do
+ let vi = mkInstance 10 3 (mkBuf ["a","b","c"])
length (visibleLines vi) `shouldBe` 3
it "scrollUpI clamps correctly" do
- let vi = mkViewportInstance 10 3 (mkBuf ["a","b","c","d","e"])
+ let vi = mkInstance 10 3 (mkBuf ["a","b","c","d","e"])
vi' = scrollUpI 10 vi
vpOffset (viView vi') `shouldBe` 0
it "scrollDownI clamps correctly" do
- let vi = mkViewportInstance 10 3 (mkBuf ["a","b","c","d","e"])
+ let vi = mkInstance 10 3 (mkBuf ["a","b","c","d","e"])
vi' = scrollDownI 10 vi
rs = viRender vi
vpOffset (viView vi') `shouldBe` (RS.rsLineCount rs - 3)
it "modifyItemI updates both buffer and renderstate" do
- let vi = mkViewportInstance 10 3 (mkBuf ["a","b","c"])
+ let vi = mkInstance 10 3 (mkBuf ["a","b","c"])
vi' = modifyItemI 1 (\itm -> itm { itemText = "X" }) vi
RS.rsBuffer (viRender vi') `shouldBe`
Buffer.fromList [mkItem "a", mkItem "X", mkItem "c"]
it "lookupPositionI returns correct coordinates" do
- let vi = mkViewportInstance 10 3 (mkBuf ["hello","world"])
+ let vi = mkInstance 10 3 (mkBuf ["hello","world"])
lookupPositionI 1 0 vi `shouldBe` Just (0,1)
it "visibleLines should clamp offset to available lines" do
- let vi = mkViewportInstance 10 3 (Buffer.fromList [mkItem "a"])
+ let vi = mkInstance 10 3 (Buffer.fromList [mkItem "a"])
vi' = vi { viView = (viView vi) { vpOffset = 999 } }
visibleLines vi' `shouldNotBe` []
it "applyToInstance should clamp using updated render state" do
- let vi0 = mkViewportInstance 10 3 (Buffer.fromList [mkItem "hello"])
+ let vi0 = mkInstance 10 3 (Buffer.fromList [mkItem "hello"])
vi1 = applyToInstance (VP.scrollDown 1) vi0
vi2 = modifyItemI 0 (\_ -> mkItem "hello\nworld\nagain") vi1
vpOffset (viView vi2) `shouldBe` (RS.rsLineCount (viRender vi1) - 3)
it "lookupPositionI should interpret y relative to viewport offset" do
- let vi = mkViewportInstance 10 3 (Buffer.fromList [mkItem "hello", mkItem "world", mkItem "again"])
+ let vi = mkInstance 10 3 (Buffer.fromList [mkItem "hello", mkItem "world", mkItem "again"])
vi' = scrollDownI 1 vi
lookupPositionI 0 0 vi' `shouldBe` Just (0,1)