[orx-text-writer] Add orx-text-writer

This commit is contained in:
Edwin Jakobs
2024-03-15 20:38:17 +01:00
parent 058e833330
commit 05b00d2878
19 changed files with 310 additions and 27 deletions

View File

@@ -15,6 +15,7 @@ tasks.test {
dependencies {
implementation(project(":orx-expression-evaluator"))
implementation(project(":orx-text-writer"))
implementation(libs.openrndr.application)
implementation(libs.openrndr.math)
implementation(libs.kotlin.coroutines)

View File

@@ -3,9 +3,10 @@ package org.openrndr.panel.elements
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap
import org.openrndr.draw.Writer
import org.openrndr.draw.isolated
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.panel.style.*
import org.openrndr.shape.Rectangle
@@ -53,7 +54,7 @@ class Button : Element(ElementType("button")) {
val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize)
val writer = Writer(null)
val writer = TextWriter(null)
writer.box = Rectangle(0.0,
0.0,
@@ -84,7 +85,7 @@ class Button : Element(ElementType("button")) {
(root() as? Body)?.controlManager?.fontManager?.let {
val font = it.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (font)
val textWidth = writer.textWidth(label)
val textHeight = font.ascenderLength

View File

@@ -4,8 +4,9 @@ import kotlinx.coroutines.yield
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer
import org.openrndr.draw.LineCap
import org.openrndr.draw.Writer
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.launch
import org.openrndr.panel.style.*
@@ -62,7 +63,7 @@ class ColorpickerButton : Element(ElementType("colorpicker-button")), Disposable
(root() as? Body)?.controlManager?.fontManager?.let {
val font = it.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (font)
val text = "$label"

View File

@@ -5,12 +5,12 @@ import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap
import org.openrndr.panel.style.*
import org.openrndr.shape.Rectangle
import org.openrndr.extra.textwriter.TextWriter
import kotlinx.coroutines.yield
import org.openrndr.KEY_ARROW_DOWN
import org.openrndr.KEY_ARROW_UP
import org.openrndr.KEY_ENTER
import org.openrndr.draw.Writer
import org.openrndr.events.Event
import org.openrndr.launch
import kotlin.math.max
@@ -80,7 +80,7 @@ class DropdownButton : Element(ElementType("dropdown-button")), DisposableElemen
val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken"
val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 16.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize)
val writer = Writer(null)
val writer = TextWriter(null)
writer.box = Rectangle(0.0,
0.0,
@@ -116,7 +116,7 @@ class DropdownButton : Element(ElementType("dropdown-button")), DisposableElemen
(root() as? Body)?.controlManager?.fontManager?.let {
val font = it.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (font)
val text = (value?.label) ?: "<choose>"

View File

@@ -1,9 +1,11 @@
package org.openrndr.panel.elements
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Cursor
import org.openrndr.draw.Drawer
import org.openrndr.draw.Writer
import org.openrndr.extra.textwriter.Cursor
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.math.Vector2
import org.openrndr.panel.style.*
@@ -53,7 +55,7 @@ class EnvelopeButton : Element(ElementType("envelope-button")) {
(root() as? Body)?.controlManager?.fontManager?.let {
val font = it.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (font)
drawer.fill = (ColorRGBa.BLACK)
writer.cursor = Cursor(0.0,layout.screenHeight - 4.0)

View File

@@ -5,6 +5,8 @@ import org.openrndr.KeyModifier
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.*
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.Cursor
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.math.Vector2
import org.openrndr.math.map
import org.openrndr.panel.style.effectiveColor
@@ -196,7 +198,7 @@ open class SequenceEditorBase(type: String = "sequence-editor-base") : Element(E
drawer.fill = computedStyle.effectiveColor
(root() as? Body)?.controlManager?.fontManager?.let {
val font = it.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (font)
drawer.fill = computedStyle.effectiveColor
writer.cursor = Cursor(0.0, 4.0)

View File

@@ -3,11 +3,13 @@ package org.openrndr.panel.elements
import io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.*
import org.openrndr.*
import org.openrndr.draw.Cursor
import org.openrndr.draw.Drawer
import org.openrndr.draw.LineCap
import org.openrndr.draw.Writer
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.Cursor
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.math.Vector2
import org.openrndr.panel.style.Color
import org.openrndr.panel.style.color
@@ -267,7 +269,7 @@ class Slider : Element(ElementType("slider")), DisposableElement {
(root() as? Body)?.controlManager?.fontManager?.let {
val font = it.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (font)
drawer.fill = computedStyle.effectiveColor
writer.cursor = Cursor(0.0, 8.0)

View File

@@ -4,7 +4,8 @@ import kotlinx.coroutines.yield
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap
import org.openrndr.draw.Writer
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.launch
import org.openrndr.math.Vector2
import org.openrndr.panel.style.*
@@ -20,7 +21,7 @@ class TextNode(var text: String) : Element(ElementType("text")) {
drawer.fill = (fill)
}
val fontMap = (root() as Body).controlManager.fontManager.font(computedStyle)
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = (fontMap)
writer.box = Rectangle(Vector2(layout.screenX * 0.0, layout.screenY * 0.0), layout.screenWidth, layout.screenHeight)
@@ -35,7 +36,7 @@ class TextNode(var text: String) : Element(ElementType("text")) {
val fontSize = (style.fontSize as? LinearDimension.PX)?.value?: 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize)
val writer = Writer(null)
val writer = TextWriter(null)
writer.box = Rectangle(layout.screenX,
layout.screenY,

View File

@@ -7,9 +7,9 @@ import org.openrndr.draw.Drawer
import org.openrndr.draw.LineCap
import org.openrndr.panel.style.*
import org.openrndr.KeyModifier
import org.openrndr.draw.Cursor
import org.openrndr.draw.writer
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.Cursor
import org.openrndr.extra.textwriter.writer
import org.openrndr.launch
import org.openrndr.shape.Rectangle
import kotlin.reflect.KMutableProperty0

View File

@@ -7,8 +7,9 @@ import org.openrndr.draw.LineCap
import org.openrndr.panel.style.*
import org.openrndr.shape.Rectangle
import org.openrndr.draw.Writer
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.launch
import kotlin.reflect.KMutableProperty0
@@ -35,7 +36,7 @@ class Toggle : Element(ElementType("toggle")), DisposableElement {
val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize)
val writer = Writer(null)
val writer = TextWriter(null)
writer.box = Rectangle(0.0,
0.0,

View File

@@ -4,8 +4,9 @@ import kotlinx.coroutines.yield
import org.openrndr.*
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer
import org.openrndr.draw.Writer
import org.openrndr.events.Event
import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.math.Vector2
import org.openrndr.math.clamp
import org.openrndr.math.map
@@ -213,7 +214,7 @@ class XYPad : Element(ElementType("xy-pad")) {
val valueLabel = "${String.format("%.0${precision}f", value.x)}, ${String.format("%.0${precision}f", value.y)}"
(root() as? Body)?.controlManager?.fontManager?.let {
val writer = Writer(drawer)
val writer = TextWriter(drawer)
drawer.fontMap = it.font(computedStyle)
val textWidth = writer.textWidth(valueLabel)

View File

@@ -4,7 +4,8 @@ import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap
import org.openrndr.draw.isolated
import org.openrndr.draw.writer
import org.openrndr.extra.textwriter.writer
import org.openrndr.math.Vector2
import org.openrndr.panel.elements.Body
import org.openrndr.panel.elements.Element