From 47f4d452fe52160a2693bac2f2ee716aea89ad7c Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 19 Oct 2024 23:04:26 +0100 Subject: [PATCH] amend error in cursor.sml's 'getCursorColumn' function, where we may need to check tail of string to start convert cursorIdx to relative strIdx --- fcore/cursor.sml | 98 +++++---- shf | Bin 1175712 -> 1175712 bytes temp.txt | 537 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 597 insertions(+), 38 deletions(-) diff --git a/fcore/cursor.sml b/fcore/cursor.sml index 4fa7a86..a741d3f 100644 --- a/fcore/cursor.sml +++ b/fcore/cursor.sml @@ -213,6 +213,44 @@ struct end | (_, _) => distanceFromLine + fun helpGetCursorColumnBranch (strIdx, strHd, lnHd, leftStrings, leftLines) = + if String.sub (strHd, strIdx) = #"\n" then + (* If we are at newline, column is 0 *) + 0 + else if Vector.length lnHd = 1 then + (* check if the one line idx in the vector + * is before the strIdx *) + let + val lineIdx = Vector.sub (lnHd, 0) + in + if lineIdx < strIdx then strIdx - lineIdx + else helpGetCursorColumn (strIdx, leftStrings, leftLines) + end + else if Vector.length lnHd > 1 then + let + (* check if strIdx is inside line vector, + * and perform binary search if so *) + val low = Vector.sub (lnHd, 0) + in + if low < strIdx then + (* strIdx is less than low, so use bin search + * to find lineIdx that is lower than strIdx *) + let + val lineIdx = binSearch (strIdx - 1, lnHd) + (* linebreakPos = index of linebreak before strIdx *) + val linebreakPos = Vector.sub (lnHd, lineIdx) + in + strIdx - linebreakPos - 1 + end + else + (* line before strIdx must be in leftStrings/lines *) + helpGetCursorColumn (strIdx, leftStrings, leftLines) + end + else + (* lnHd has length of 0, so most recent + * line break must be in leftStrings/lines *) + helpGetCursorColumn (strIdx, leftStrings, leftLines) + (* Prerequisite: lineGap is moved to cursorIdx *) fun getCursorColumn (lineGap: LineGap.t, cursorIdx) = let @@ -221,47 +259,35 @@ struct lineGap in case (rightStrings, rightLines) of - (strHd :: _, lnHd :: _) => + (strHd :: strTl, lnHd :: lnTl) => let (* convert absolute cursorIdx to idx relative to hd string *) val strIdx = cursorIdx - bufferIdx in - if String.sub (strHd, strIdx) = #"\n" then - (* If we are at newline, column is 0 *) - 0 - else if Vector.length lnHd = 1 then - (* check if the one line idx in the vector - * is before the strIdx *) - let - val lineIdx = Vector.sub (lnHd, 0) - in - if lineIdx < strIdx then strIdx - lineIdx - else helpGetCursorColumn (strIdx, leftStrings, leftLines) - end - else if Vector.length lnHd > 1 then - let - (* check if strIdx is inside line vector, - * and perform binary search if so *) - val low = Vector.sub (lnHd, 0) - in - if low < strIdx then - (* strIdx is less than low, so use bin search - * to find lineIdx that is lower than strIdx *) - let - val lineIdx = binSearch (strIdx - 1, lnHd) - (* linebreakPos = index of linebreak before strIdx *) - val linebreakPos = Vector.sub (lnHd, lineIdx) - in - strIdx - linebreakPos - 1 - end - else - (* line before strIdx must be in leftStrings/lines *) - helpGetCursorColumn (strIdx, leftStrings, leftLines) - end + if strIdx < String.size strHd then + (* strIdx is in this string *) + helpGetCursorColumnBranch + (strIdx, strHd, lnHd, leftStrings, leftLines) else - (* lnHd has length of 0, so most recent - * line break must be in leftStrings/lines *) - helpGetCursorColumn (strIdx, leftStrings, leftLines) + (* strIdx must be in the strTl *) + (case (strTl, lnTl) of + (nestStrHd :: nestStrTl, nestLnHd :: nestLnTl) => + let + val strIdx = strIdx - String.size strHd + val leftStrings = strHd :: leftStrings + val leftLines = lnHd :: leftLines + in + helpGetCursorColumnBranch + (strIdx, nestStrHd, nestLnHd, leftStrings, leftLines) + end + | (_, _) => + helpGetCursorColumnBranch + ( String.size strHd - 1 + , strHd + , lnHd + , leftStrings + , leftLines + )) end | (_, _) => helpGetCursorColumn (0, leftStrings, leftLines) end diff --git a/shf b/shf index 2e41dc916525967ee42cac721405a28a91cd6c91..0f3bf0302745c1189f32d7f6d02349d200821776 100755 GIT binary patch delta 89234 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
_ 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�IhUVTv?0OQP)sk81R3BX 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 m{4w*kX{(n%R9||#Ew|RJTtsG{ZIZv MailboxType.t list -enda +end + +structure TextBuilder :> TEXT_BUILDER = +struct + val xSpace = 13 + val xSpace3 = xSpace * 3 + val ySpace = 25 + val fontSize = 30.0 + + fun accToDrawMsg (textAcc, cursorAcc) = + let + open MailboxType + open DrawMsg + + val textAcc = Vector.concat textAcc + val cursorAcc = Vector.concat cursorAcc + + val textMsg = REDRAW_TEXT textAcc + val cursorMsg = REDRAW_CURSOR cursorAcc + in + [DRAW textMsg, DRAW cursorMsg] + end + + fun buildCursor (posX, posY, fWindowWidth, fWindowHeight, r, g, b) = + let + val left = posX + 9 + val left = Real32.fromInt left + val right = left + 12.0 + + val top = Real32.fromInt posY + val bottom = top + fontSize + 2.0 + + val halfHeight = fWindowHeight / 2.0 + val top = (~(top - halfHeight)) / halfHeight + val bottom = (~(bottom - halfHeight)) / halfHeight + + val halfWidth = fWindowWidth / 2.0 + val left = (left - 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 + [vec] + end + + (* builds text from a string with char-wrap. + * char-wrap is a similar concept to word-wrap, + * but it breaks on character in the middle of a word. + * + * Will likely want multiple versions of these two mutually recursive + * functions for each selection and cursor type: + * cursor over an individual character, + * range selection where multiple characters are selected, etc. + * + * Todo: + * - Possibly add visual horizontal indentation when char-wrap occurs + * on an indented line *) + fun buildTextStringAfterCursor + ( pos, str, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) = + if pos < String.size str then + case String.sub (str, pos) of + #" " => + (* if space, then proceed forward one char + * without adding to acc *) + buildTextStringAfterCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + | #"\t" => + (* if tab, proceed forward one char, + * and jump visually forwards three chars *) + buildTextStringAfterCursor + ( pos + 1, str, acc, posX + xSpace3, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + | #"\n" => + (* if \n, move down vertically, and move to start horizontally + * assuming we have not exceeded the window's height. + * If we have exceeded the window's height, just return acc. *) + if posY + ySpace < windowHeight then + buildTextStringAfterCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + else + (* return if there is no more vertical space after line break *) + accToDrawMsg (acc, cursorAcc) + | #"\r" => + (* same as \n, except we also check if we are in a \r\n pair, + * and proceed two characters forward if so *) + if posY + ySpace < windowHeight then + if + pos < String.size str - 1 + andalso String.sub (str, pos + 1) = #"\n" + then + buildTextStringAfterCursor + ( pos + 2, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + else + buildTextStringAfterCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + else + (* return if there is no more vertical space after line break *) + accToDrawMsg (acc, cursorAcc) + | chr => + (* for any other character, add it to acc if there is space, + * and proceed forward one character in the string *) + let + val chrFun = Vector.sub (CozetteAscii.asciiTable, Char.ord chr) + in + if posX + xSpace < windowWidth then + (* if there is horizontal space, place char on the right *) + let + val chrVec = chrFun + (posX, posY, fontSize, fontSize, fWindowWidth, fWindowHeight, r, g, b) + val acc = chrVec :: acc + in + buildTextStringAfterCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + end + else if posY + ySpace < windowHeight then + (* if there is vertical space, place char down below at startX *) + let + val chrVec = chrFun + ( startX, posY + ySpace, fontSize, fontSize + , fWindowWidth, fWindowHeight + , r, g, b + ) + val acc = chrVec :: acc + in + buildTextStringAfterCursor + ( pos + 1, str, acc, startX + xSpace, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + end + else + (* return if no space horizontally or vertically *) + accToDrawMsg (acc, cursorAcc) + end + else + (* if we reached the end of the string, + * call function to build next string *) + continueBuildTextLineGapAfterCursor + ( tl, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, cursorAcc + ) + + and continueBuildTextLineGapAfterCursor + ( strList, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, cursorAcc + ) = + case strList of + hd :: tl => + buildTextStringAfterCursor + ( 0, hd, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + | [] => accToDrawMsg (acc, cursorAcc) + + (* same as buildTextStringAfterCursor, except this keeps track of absolute + * index and cursor pos too *) + fun buildTextStringBeforeCursor + ( pos, str, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx, cursorPos, hr, hg, hb + ) = + if pos < String.size str then + case String.sub (str, pos) of + #" " => + buildTextStringBeforeCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, hr, hg, hb + ) + | #"\t" => + buildTextStringBeforeCursor + ( pos + 1, str, acc, posX + xSpace3, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, hr, hg, hb + ) + | #"\n" => + if posY + ySpace < windowHeight then + buildTextStringBeforeCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, hr, hg, hb + ) + else + accToDrawMsg (acc, []) + | #"\r" => + if posY + ySpace < windowHeight then + if + pos < String.size str - 1 + andalso String.sub (str, pos + 1) = #"\n" + then + buildTextStringBeforeCursor + ( pos + 2, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 2, cursorPos, hr, hg, hb + ) + else + buildTextStringBeforeCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, hr, hg, hb + ) + else + accToDrawMsg (acc, []) + | chr => + let + val chrFun = Vector.sub (CozetteAscii.asciiTable, Char.ord chr) + in + if posX + xSpace < windowWidth then + let + val chrVec = chrFun + (posX, posY, fontSize, fontSize, fWindowWidth, fWindowHeight, r, g, b) + val acc = chrVec :: acc + in + buildTextStringBeforeCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, hr, hg, hb + ) + end + else if posY + ySpace < windowHeight then + let + val chrVec = chrFun + ( startX, posY + ySpace, fontSize, fontSize + , fWindowWidth, fWindowHeight + , r, g, b + ) + val acc = chrVec :: acc + in + buildTextStringBeforeCursor + ( pos + 1, str, acc, startX + xSpace, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, hr, hg, hb + ) + end + else + accToDrawMsg (acc, []) + end + else + continueBuildTextLineGapBeforeCursor + ( tl, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, absIdx, cursorPos, hr, hg, hb + ) + + and buildTextStringWithinCursor + ( pos, str, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx, cursorPos, cursorAcc, hr, hg, hb + ) = + if pos < String.size str then + case String.sub (str, pos) of + #" " => + (* if inside cursor, then create cursorAcc; + * else, just skip as usual *) + if absIdx <> cursorPos then + (* not in cursur *) + buildTextStringWithinCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, cursorAcc, hr, hg, hb + ) + else + (* in cursor *) + let + val cursorAcc = buildCursor (posX, posY, fWindowWidth, fWindowHeight, r, g ,b) + in + buildTextStringAfterCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + end + | #"\t" => + (* todo: draw cursor if cursor is on tab + * but this is not a priority right now *) + buildTextStringWithinCursor + ( pos + 1, str, acc, posX + xSpace3, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, cursorAcc, hr, hg, hb + ) + | #"\n" => + if posY + ySpace < windowHeight then + if absIdx <> cursorPos then + (* not in cursor position, so iterate like normal *) + buildTextStringWithinCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, cursorAcc, hr, hg, hb + ) + else + (* in cursor position, so build cursorAcc + * and call AfterCursor function *) + if pos = String.size str - 1 andalso tl = [] then + (* if we are at end of lineGap, we want to build cursorAcc + * at different coordinates than usual *) + let + val cursorAcc = + buildCursor (startX, posY + ySpace, fWindowWidth, fWindowHeight, r, g, b) + in + accToDrawMsg (acc, cursorAcc) + end + else + let + val cursorAcc = buildCursor (posX, posY, fWindowWidth, fWindowHeight, r, g ,b) + in + buildTextStringAfterCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + end + else + accToDrawMsg (acc, cursorAcc) + | #"\r" => + if posY + ySpace < windowHeight then + if + pos < String.size str - 1 + andalso String.sub (str, pos + 1) = #"\n" + then + buildTextStringWithinCursor + ( pos + 2, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 2, cursorPos, cursorAcc, hr, hg, hb + ) + else + buildTextStringWithinCursor + ( pos + 1, str, acc, startX, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, cursorAcc, hr, hg, hb + ) + else + accToDrawMsg (acc, cursorAcc) + | chr => + let + val chrFun = Vector.sub (CozetteAscii.asciiTable, Char.ord chr) + in + if absIdx <> cursorPos then + (* not equal to cursor *) + if posX + xSpace < windowWidth then + let + val chrVec = chrFun + (posX, posY, fontSize, fontSize, fWindowWidth, fWindowHeight, r, g, b) + val acc = chrVec :: acc + in + buildTextStringWithinCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, cursorAcc, hr, hg, hb + ) + end + else if posY + ySpace < windowHeight then + let + val chrVec = chrFun + ( startX, posY + ySpace, fontSize, fontSize + , fWindowWidth, fWindowHeight + , r, g, b + ) + val acc = chrVec :: acc + in + buildTextStringWithinCursor + ( pos + 1, str, acc, startX + xSpace, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx + 1, cursorPos, cursorAcc, hr, hg, hb + ) + end + else + accToDrawMsg (acc, cursorAcc) + else + (* equal to cursor *) + let + val cursorAcc = buildCursor (posX, posY, fWindowWidth, fWindowHeight, r, g ,b) + in + if posX + xSpace < windowWidth then + let + val chrVec = chrFun + ( posX, posY, fontSize, fontSize + , fWindowWidth, fWindowHeight + , hr, hg, hb + ) + val acc = chrVec :: acc + in + (* can start building after cursor now, + * since cursor was built *) + buildTextStringAfterCursor + ( pos + 1, str, acc, posX + xSpace, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + end + else if posY + ySpace < windowHeight then + let + val chrVec = chrFun + ( startX, posY + ySpace, fontSize, fontSize + , fWindowWidth, fWindowHeight + , hr, hg, hb + ) + val acc = chrVec :: acc + in + (* can start building after cursor now, + * since cursor was built *) + buildTextStringAfterCursor + ( pos + 1, str, acc, startX + xSpace, posY + ySpace, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, cursorAcc + ) + end + else + accToDrawMsg (acc, cursorAcc) + end + end + + else + (* we have built cursor now, so can call after-cursor function + * to build rest of text *) + continueBuildTextLineGapAfterCursor + ( tl, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, cursorAcc + ) + + and continueBuildTextLineGapBeforeCursor + ( strList, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, absIdx, cursorPos, hr, hg, hb + ) = + case strList of + hd :: tl => + if cursorPos >= absIdx + cursorPos then + (* if end of string is before cursor *) + buildTextStringBeforeCursor + ( 0, hd, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx, cursorPos, hr, hg, hb + ) + else + (* if within cursor *) + buildTextStringWithinCursor + ( 0, hd, acc, posX, posY, startX + , windowWidth, windowHeight, fWindowWidth, fWindowHeight + , r, g, b, tl, absIdx, cursorPos, [], hr, hg, hb + ) + | [] => accToDrawMsg (acc, []) + + fun build + (startLine, cursorPos, lineGap: LineGap.t, windowWidth, windowHeight) = + let + val lineGap = LineGap.goToLine (startLine, lineGap) + val {rightStrings, rightLines, line = curLine, idx = curIdx, ...} = lineGap + in + case (rightStrings, rightLines) of + (rStrHd :: rStrTl, rLnHd :: _) => + let + (* get index of line to start building from *) + val startIdx = + if startLine > curLine then + let + val lnPos = startLine - curLine - 1 + val startIdx = Vector.sub (rLnHd, lnPos) + in + if + String.sub (rStrHd, startIdx) = #"\r" + andalso startIdx < String.size rStrHd - 1 + andalso String.sub (rStrHd, startIdx + 1) = #"\n" + then + (* handle \r\n pair *) + startIdx + 2 + else startIdx + 1 + end + else + 0 + + val absIdx = curIdx + startIdx + + in + if cursorPos < curIdx + String.size rStrHd then + (* if cursor is within string *) + buildTextStringWithinCursor + ( startIdx, rStrHd, [] + , 5, 5, 5 + , windowWidth, windowHeight + , Real32.fromInt windowWidth, Real32.fromInt windowHeight + , 0.67, 0.51, 0.83 + , rStrTl, absIdx, cursorPos, [] + , 0.211, 0.219, 0.25 + ) + else + (* if cursor is after string *) + buildTextStringBeforeCursor + ( startIdx, rStrHd, [] + , 5, 5, 5 + , windowWidth, windowHeight + , Real32.fromInt windowWidth, Real32.fromInt windowHeight + , 0.67, 0.51, 0.83 + , rStrTl, absIdx, cursorPos + , 0.211, 0.219, 0.25 + ) + end + | (_, _) => + (* requested line goes beyond the buffer, + * so just return empty list as there is nothig + * else we can do. *) + [] + end +end