progress drawing spaces within search string, and drawing behind background of search string

This commit is contained in:
2024-11-15 09:50:35 +00:00
parent 025f9d2bf4
commit d5eb19f8d9
3 changed files with 59 additions and 26 deletions

View File

@@ -40,7 +40,7 @@ struct
val left = (left - halfWidth) / halfWidth val left = (left - halfWidth) / halfWidth
val right = (right - halfWidth) / halfWidth val right = (right - halfWidth) / halfWidth
val vec = in
#[ left, top, r, g, b #[ left, top, r, g, b
, right, top, r, g, b , right, top, r, g, b
, left, bottom, r, g, b , left, bottom, r, g, b
@@ -49,8 +49,6 @@ struct
, right, bottom, r, g, b , right, bottom, r, g, b
, right, top, r, g, b , right, top, r, g, b
] ]
in
[vec]
end end
(* builds text from a string with char-wrap. (* builds text from a string with char-wrap.
@@ -106,7 +104,8 @@ struct
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
val {r, g, b, ...} = colourData val {r, g, b, ...} = colourData
val cursorAcc = buildCursor (posX, posY, fw, fh, r, g ,b) val cursorHd = buildCursor (posX, posY, fw, fh, r, g ,b)
val cursorAcc = cursorHd :: cursorAcc
in in
buildTextString buildTextString
( pos + 1, str, acc, posX + xSpace, posY, startX ( pos + 1, str, acc, posX + xSpace, posY, startX
@@ -129,7 +128,8 @@ struct
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
val {r, g, b, ...} = colourData val {r, g, b, ...} = colourData
val cursorAcc = buildCursor (posX, posY, fw, fh, r, g ,b) val cursorHd = buildCursor (posX, posY, fw, fh, r, g ,b)
val cursorAcc = cursorHd :: cursorAcc
in in
buildTextString buildTextString
( pos + 1, str, acc, startX, posY + ySpace, startX ( pos + 1, str, acc, startX, posY + ySpace, startX
@@ -184,7 +184,8 @@ struct
let let
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
val {r, g, b, hr, hg, hb} = colourData val {r, g, b, hr, hg, hb} = colourData
val cursorAcc = buildCursor (posX, posY, fw, fh, r, g ,b) val cursorHd = buildCursor (posX, posY, fw, fh, r, g ,b)
val cursorAcc = cursorHd :: cursorAcc
in in
if posX + xSpace < #w windowData then if posX + xSpace < #w windowData then
let let
@@ -278,6 +279,26 @@ struct
* else, just skip as usual *) * else, just skip as usual *)
if absIdx <> cursorPos then if absIdx <> cursorPos then
(* not in cursur *) (* not in cursur *)
if isInSearchRange (absIdx, searchPos, searchHd, searchLen) then
(* draw *)
let
(* todo: temp colours *)
val r: Real32.real = 0.3
val g: Real32.real = 0.1
val b: Real32.real = 0.1
val {fw, fh, ...} = windowData
val space = buildCursor (posX, posY, fw, fh, r, g, b)
val cursorAcc = space :: cursorAcc
in
buildTextStringSearch
( pos + 1, str, acc, posX + xSpace, posY, startX
, tl, absIdx + 1, cursorPos, cursorAcc
, windowData, colourData
, searchHd, searchTl, searchPos, searchLen
)
end
else
buildTextStringSearch buildTextStringSearch
( pos + 1, str, acc, posX + xSpace, posY, startX ( pos + 1, str, acc, posX + xSpace, posY, startX
, tl, absIdx + 1, cursorPos, cursorAcc , tl, absIdx + 1, cursorPos, cursorAcc
@@ -290,7 +311,8 @@ struct
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
val {r, g, b, ...} = colourData val {r, g, b, ...} = colourData
val cursorAcc = buildCursor (posX, posY, fw, fh, r, g ,b) val cursorHd = buildCursor (posX, posY, fw, fh, r, g ,b)
val cursorAcc = cursorHd :: cursorAcc
in in
buildTextStringSearch buildTextStringSearch
( pos + 1, str, acc, posX + xSpace, posY, startX ( pos + 1, str, acc, posX + xSpace, posY, startX
@@ -315,7 +337,8 @@ struct
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
val {r, g, b, ...} = colourData val {r, g, b, ...} = colourData
val cursorAcc = buildCursor (posX, posY, fw, fh, r, g ,b) val cursorHd = buildCursor (posX, posY, fw, fh, r, g ,b)
val cursorAcc = cursorHd :: cursorAcc
in in
buildTextStringSearch buildTextStringSearch
( pos + 1, str, acc, startX, posY + ySpace, startX ( pos + 1, str, acc, startX, posY + ySpace, startX
@@ -338,13 +361,22 @@ struct
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
(* todo: temp colours *) (* todo: temp colours *)
val r: Real32.real = 0.5 val r: Real32.real = 0.7
val g: Real32.real = 0.5 val g: Real32.real = 0.7
val b: Real32.real = 0.5 val b: Real32.real = 0.7
(* build char vec *)
val chrVec = val chrVec =
chrFun (posX, posY, fontSize, fontSize, fw, fh, r, g, b) chrFun (posX, posY, fontSize, fontSize, fw, fh, r, g, b)
val acc = chrVec :: acc val acc = chrVec :: acc
(* build cursor (behind text) vec *)
val r: Real32.real = 0.3
val g: Real32.real = 0.1
val b: Real32.real = 0.1
val space = buildCursor (posX, posY, fw, fh, r, g, b)
val cursorAcc = space :: cursorAcc
in in
buildTextStringSearch buildTextStringSearch
( pos + 1, str, acc, posX + xSpace, posY, startX ( pos + 1, str, acc, posX + xSpace, posY, startX
@@ -398,7 +430,8 @@ struct
let let
val {fw, fh, ...} = windowData val {fw, fh, ...} = windowData
val {r, g, b, hr, hg, hb} = colourData val {r, g, b, hr, hg, hb} = colourData
val cursorAcc = buildCursor (posX, posY, fw, fh, r, g ,b) val cursorHd = buildCursor (posX, posY, fw, fh, r, g ,b)
val cursorAcc = cursorHd :: cursorAcc
in in
if posX + xSpace < #w windowData then if posX + xSpace < #w windowData then
let let

BIN
shf

Binary file not shown.