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,17 +40,15 @@ struct
val left = (left - halfWidth) / halfWidth val left = (left - halfWidth) / halfWidth
val right = (right - halfWidth) / halfWidth val right = (right - halfWidth) / halfWidth
val vec =
#[ left, top, r, g, b
, right, top, r, g, b
, left, bottom, r, g, b
, left, bottom, r, g, b
, right, bottom, r, g, b
, right, top, r, g, b
]
in in
[vec] #[ left, top, r, g, b
, right, top, r, g, b
, left, bottom, r, g, b
, left, bottom, r, g, b
, right, bottom, r, g, b
, right, top, r, g, b
]
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,19 +279,40 @@ 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 *)
buildTextStringSearch if isInSearchRange (absIdx, searchPos, searchHd, searchLen) then
( pos + 1, str, acc, posX + xSpace, posY, startX (* draw *)
, tl, absIdx + 1, cursorPos, cursorAcc let
, windowData, colourData (* todo: temp colours *)
, searchHd, searchTl, searchPos, searchLen 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
( pos + 1, str, acc, posX + xSpace, posY, startX
, tl, absIdx + 1, cursorPos, cursorAcc
, windowData, colourData
, searchHd, searchTl, searchPos, searchLen
)
else else
(* in cursor *) (* in cursor *)
let let
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

View File

@@ -64,7 +64,7 @@ struct
val app = AppType.init (lineGap, 1920, 1080) val app = AppType.init (lineGap, 1920, 1080)
(* todo: remove temp line below which tests search list *) (* todo: remove temp line below which tests search list *)
val app = BuildSearchList.build (app, 0, lineGap, "val") val app = BuildSearchList.build (app, 0, lineGap, "val ")
(* create mailboxes for CML communication *) (* create mailboxes for CML communication *)
val inputMailbox = Mailbox.mailbox () val inputMailbox = Mailbox.mailbox ()

BIN
shf

Binary file not shown.