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.
53 lines
2.0 KiB
Kotlin
53 lines
2.0 KiB
Kotlin
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
|
|
* the rectangle. The application manages the drawing of shapes and implementation of text rendering
|
|
* with specific font and settings.
|
|
*
|
|
* The following operations are performed:
|
|
* - A rectangle is created from the center of the drawing bounds.
|
|
* - The rectangle is drawn without a fill and with a white stroke.
|
|
* - A custom font is loaded and applied to the drawer.
|
|
* - A `TextWriter` is utilized to display the text "hello world" inside the rectangle, adhering to
|
|
* specific styling and formatting rules.
|
|
*
|
|
* Key Components:
|
|
* - `application` establishes the visual environment.
|
|
* - `Rectangle` provides a way to define the rectangular area.
|
|
* - `drawer` enables isolated operations for drawing elements.
|
|
* - `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)
|
|
drawer.isolated {
|
|
drawer.fill = null
|
|
drawer.stroke = ColorRGBa.WHITE
|
|
drawer.rectangle(r)
|
|
}
|
|
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")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |