[orx-text-writer] Add horizontal and vertical text alignment features

Introduced horizontalAlign and verticalAlign properties in WriteStyle and TextWriter, enabling precise text alignment within bounding boxes. Enhanced text token management to support alignment calculations and adjusted demos to showcase the new capabilities.
This commit is contained in:
Edwin Jakobs
2025-02-26 12:27:40 +01:00
parent a4c053183c
commit 46744025a8
5 changed files with 386 additions and 14 deletions

View File

@@ -1,9 +1,11 @@
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.TextSettingMode
import org.openrndr.draw.isolated
import org.openrndr.draw.loadFont
import org.openrndr.extra.textwriter.writer
import org.openrndr.shape.Rectangle
import kotlin.math.cos
/**
* This demo features the drawing of a centered rectangle and the addition of styled text inside
@@ -24,9 +26,7 @@ import org.openrndr.shape.Rectangle
* - `writer` facilitates text rendering with alignment and spacing adjustments.
*/
fun main() {
application {
program {
extend {
val r = Rectangle.fromCenter(drawer.bounds.center, 200.0, 200.0)
@@ -37,9 +37,15 @@ fun main() {
}
drawer.fontMap = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 24.0)
writer {
drawer.drawStyle.textSetting = TextSettingMode.SUBPIXEL
style.horizontalAlign = cos(seconds) * 0.5 + 0.5
box = r.offsetEdges(-10.0)
newLine()
text("hello world")
newLine()
text("this is a test")
newLine()
text("centered")
}
}
}