change text building function in text-builder.sml to use the 'startX' and 'startY' fields added to the environment type

This commit is contained in:
2025-08-31 01:38:42 +01:00
parent 648346e5ba
commit a9fda7d88b
2 changed files with 41 additions and 67 deletions

View File

@@ -102,7 +102,6 @@ struct
, acc , acc
, posX , posX
, posY , posY
, startX
, tl , tl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -123,7 +122,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -144,7 +142,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -161,9 +158,8 @@ struct
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX , #startX env
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -182,9 +178,8 @@ struct
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX , #startX env
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -212,7 +207,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -226,16 +220,15 @@ struct
val {r, g, b, fw, fh, ...} = env val {r, g, b, fw, fh, ...} = env
val chrVec = makeChr val chrVec = makeChr
(chr, startX, posY + ySpace, fw, fh, r, g, b) (chr, #startX env, posY + ySpace, fw, fh, r, g, b)
val acc = chrVec :: acc val acc = chrVec :: acc
in in
buildTextString buildTextString
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX + xSpace , #startX env + xSpace
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -266,7 +259,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -278,7 +270,7 @@ struct
else if posY + ySpace < #h env then else if posY + ySpace < #h env then
let let
val chrVec = makeChr val chrVec = makeChr
(chr, startX, posY + ySpace, fw, fh, hr, hg, hb) (chr, #startX env, posY + ySpace, fw, fh, hr, hg, hb)
val acc = chrVec :: acc val acc = chrVec :: acc
in in
(* can start building after cursor now, (* can start building after cursor now,
@@ -287,9 +279,8 @@ struct
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX + xSpace , #startX env + xSpace
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -312,7 +303,6 @@ struct
, acc , acc
, posX , posX
, posY , posY
, startX
, tl , tl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -344,7 +334,6 @@ struct
, acc , acc
, posX , posX
, posY , posY
, startX
, tl , tl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -363,7 +352,6 @@ struct
, acc , acc
, posX , posX
, posY , posY
, startX
, tl , tl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -384,7 +372,6 @@ struct
, acc , acc
, posX , posX
, posY , posY
, startX
, tl , tl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -418,7 +405,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -437,7 +423,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -461,7 +446,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -481,9 +465,8 @@ struct
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX , #startX env
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -505,9 +488,8 @@ struct
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX , #startX env
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -555,7 +537,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -580,7 +561,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -597,16 +577,15 @@ struct
val {fw, fh, r, g, b, ...} = env val {fw, fh, r, g, b, ...} = env
val chrVec = makeChr val chrVec = makeChr
(chr, startX, posY + ySpace, fw, fh, r, g, b) (chr, #startX env, posY + ySpace, fw, fh, r, g, b)
val acc = chrVec :: acc val acc = chrVec :: acc
in in
buildTextStringSearch buildTextStringSearch
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX + xSpace , #startX env + xSpace
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -640,7 +619,6 @@ struct
, acc , acc
, posX + xSpace , posX + xSpace
, posY , posY
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -655,7 +633,7 @@ struct
else if posY + ySpace < #h env then else if posY + ySpace < #h env then
let let
val chrVec = makeChr val chrVec = makeChr
(chr, startX, posY + ySpace, fw, fh, hr, hg, hb) (chr, #startX env, posY + ySpace, fw, fh, hr, hg, hb)
val acc = chrVec :: acc val acc = chrVec :: acc
in in
(* can start building after cursor now, (* can start building after cursor now,
@@ -664,9 +642,8 @@ struct
( pos + 1 ( pos + 1
, str , str
, acc , acc
, startX + xSpace , #startX env + xSpace
, posY + ySpace , posY + ySpace
, startX
, tl , tl
, absIdx + 1 , absIdx + 1
, cursorPos , cursorPos
@@ -692,7 +669,6 @@ struct
, acc , acc
, posX , posX
, posY , posY
, startX
, tl , tl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -739,33 +715,14 @@ struct
end end
fun initEnv (windowWidth, windowHeight, msgs) = fun initEnv (windowWidth, windowHeight, msgs) =
let let
val fw = Real32.fromInt windowWidth val fw = Real32.fromInt windowWidth
val fh = Real32.fromInt windowHeight val fh = Real32.fromInt windowHeight
in in
if TC.textLineWidth > windowWidth then if TC.textLineWidth > windowWidth then
{ w = windowWidth { w = windowWidth
, h = windowHeight
, startX = 5
, startY = 5
, fw = fw
, fh = fh
, r = 0.67
, g = 0.51
, b = 0.83
, hr = 0.211
, hg = 0.219
, hb = 0.25
, msgs = msgs
}
else
let
val startX = (windowWidth - TC.textLineWidth) div 2
val finishWidth = startX + TC.textLineWidth
in
{ w = finishWidth
, h = windowHeight , h = windowHeight
, startX = startX , startX = 5
, startY = 5 , startY = 5
, fw = fw , fw = fw
, fh = fh , fh = fh
@@ -777,8 +734,27 @@ struct
, hb = 0.25 , hb = 0.25
, msgs = msgs , msgs = msgs
} }
end else
end let
val startX = (windowWidth - TC.textLineWidth) div 2
val finishWidth = startX + TC.textLineWidth
in
{ w = finishWidth
, h = windowHeight
, startX = startX
, startY = 5
, fw = fw
, fh = fh
, r = 0.67
, g = 0.51
, b = 0.83
, hr = 0.211
, hg = 0.219
, hb = 0.25
, msgs = msgs
}
end
end
fun build fun build
( startLine ( startLine
@@ -815,7 +791,6 @@ struct
, [] , []
, startX , startX
, startY , startY
, startX
, rStrTl , rStrTl
, absIdx , absIdx
, cursorPos , cursorPos
@@ -833,7 +808,6 @@ struct
, [] , []
, startX , startX
, startY , startY
, startX
, rStrTl , rStrTl
, absIdx , absIdx
, cursorPos , cursorPos

View File

@@ -69,7 +69,7 @@ struct
let let
val buffer = #buffer app val buffer = #buffer app
val buffer = LineGap.goToStart buffer val buffer = LineGap.goToStart buffer
val searchString = "abc" val searchString = "val "
val searchList = SearchList.build (buffer, searchString) val searchList = SearchList.build (buffer, searchString)
val buffer = LineGap.goToStart buffer val buffer = LineGap.goToStart buffer
in in