From eb550c0671842e9024174292270cd3d093a356f8 Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Fri, 7 May 2021 11:12:03 -0500 Subject: [PATCH] text alignments --- src/pixie/fonts.nim | 58 ++++++++++++++++++ tests/fonts/diffs/alignments.png | Bin 0 -> 42200 bytes tests/fonts/masters/alignments.png | Bin 0 -> 18810 bytes tests/fonts/rendered/alignments.png | Bin 0 -> 42743 bytes tests/fonts_megatest.nim | 13 ++-- tests/test_fonts.nim | 90 ++++++++++++++++++++++++++++ 6 files changed, 155 insertions(+), 6 deletions(-) create mode 100644 tests/fonts/diffs/alignments.png create mode 100644 tests/fonts/masters/alignments.png create mode 100644 tests/fonts/rendered/alignments.png diff --git a/src/pixie/fonts.nim b/src/pixie/fonts.nim index da49b4c..e4a8ebd 100644 --- a/src/pixie/fonts.nim +++ b/src/pixie/fonts.nim @@ -139,6 +139,10 @@ proc typeset*( if rune.uint32 >= SP.uint32 or rune.uint32 == LF.uint32: result.runes.add(rune) + if result.runes.len == 0: + # No runes to typeset, early return + return + result.runes.convertTextCase(textCase) result.positions.setLen(result.runes.len) result.selectionRects.setLen(result.runes.len) @@ -197,6 +201,60 @@ proc typeset*( result.selectionRects[i] = rect(at.x, at.y - initialY, advance, lineHeight) at.x += advance + if bounds.x > 0 and hAlign != haLeft: + # Since horizontal alignment adjustments are different for each line, + # find the start and stop of each line of text. + var + lines: seq[(int, int)] # (start, stop) + start: int + prevY = result.positions[0].y + for i, pos in result.positions: + if pos.y != prevY: + lines.add((start, i - 1)) + start = i + prevY = pos.y + lines.add((start, result.positions.len - 1)) + + for (start, stop) in lines: + var furthestX: float32 + for i in countdown(stop, start): + if result.runes[i] != SP and result.runes[i] != LF: + furthestX = result.selectionRects[i].x + result.selectionRects[i].w + break + + var xAdjustment: float32 + case hAlign: + of haLeft: + discard + of haCenter: + xAdjustment = round((bounds.x - furthestX) / 2) + of haRight: + xAdjustment = bounds.x - furthestX + + if xAdjustment != 0: + for i in 0 ..< result.positions.len: + result.positions[i].x += xAdjustment + result.selectionRects[i].x += xAdjustment + + if bounds.y > 0: + let + finalSelectionRect = result.selectionRects[^1] + furthestY = finalSelectionRect.y + finalSelectionRect.h + + var yAdjustment: float32 + case vAlign: + of vaTop: + discard + of vaMiddle: + yAdjustment = round((bounds.y - furthestY) / 2) + of vaBottom: + yAdjustment = bounds.y - furthestY + + if yAdjustment != 0: + for i in 0 ..< result.positions.len: + result.positions[i].y += yAdjustment + result.selectionRects[i].y += yAdjustment + iterator paths*(arrangement: Arrangement): Path = for i in 0 ..< arrangement.runes.len: if arrangement.runes[i].uint32 > SP.uint32: # Don't draw control runes diff --git a/tests/fonts/diffs/alignments.png b/tests/fonts/diffs/alignments.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4a1845d2f782a8ba67af76a9d4e7e18db0599b GIT binary patch literal 42200 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 literal 0 HcmV?d00001 diff --git a/tests/fonts_megatest.nim b/tests/fonts_megatest.nim index 157d6f2..f76f15c 100644 --- a/tests/fonts_megatest.nim +++ b/tests/fonts_megatest.nim @@ -1,11 +1,12 @@ -import common, pixie, flatty/memoryused +import common, pixie -# Clone https://github.com/google/fonts -# Check out commit ebaa6a7aab9b700da4e30a4682687acdf427eae7 +# Clone https://github.com/treeform/fidgetfonts -let fontPaths = findAllFonts("../fonts") +let fontPaths = findAllFonts("../fidgetfonts") for fontPath in fontPaths: echo fontPath - let font = readFont(fontPath) - # echo memoryUsed(font) + try: + var font = readFont(fontPath) + except PixieError: + echo "ERROR: ", getCurrentExceptionMsg() diff --git a/tests/test_fonts.nim b/tests/test_fonts.nim index de43441..0cf985e 100644 --- a/tests/test_fonts.nim +++ b/tests/test_fonts.nim @@ -553,3 +553,93 @@ Fifth line""", ) doDiff(image, "lines2") + +block: + var font = readFont("tests/fonts/Roboto-Regular_1.ttf") + font.size = 36 + + let image = newImage(800, 800) + image.fill(rgba(255, 255, 255, 255)) + + image.fillText( + font, + "TopLeft", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haLeft, + vAlign = vaTop + ) + + image.fillText( + font, + "TopCenter", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haCenter, + vAlign = vaTop + ) + + image.fillText( + font, + "TopRight", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haRight, + vAlign = vaTop + ) + + image.fillText( + font, + "MiddleLeft", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haLeft, + vAlign = vaMiddle + ) + + image.fillText( + font, + "MiddleCenter", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haCenter, + vAlign = vaMiddle + ) + + image.fillText( + font, + "MiddleRight", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haRight, + vAlign = vaMiddle + ) + + image.fillText( + font, + "BottomLeft", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haLeft, + vAlign = vaBottom + ) + + image.fillText( + font, + "BottomCenter", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haCenter, + vAlign = vaBottom + ) + + image.fillText( + font, + "BottomRight", + rgba(0, 0, 0, 255), + bounds = image.wh, + hAlign = haRight, + vAlign = vaBottom + ) + + doDiff(image, "alignments")