[orx-panel] Load fonts through loadFont instead FontImageMap.fromUrl

This commit is contained in:
Edwin Jakobs
2024-09-27 14:30:50 +02:00
parent 98851e0ab8
commit 7c2e55b82b
7 changed files with 26 additions and 8 deletions

View File

@@ -276,6 +276,8 @@ class ControlManager : Extension {
val mouseInput = MouseInput() val mouseInput = MouseInput()
override fun setup(program: Program) { override fun setup(program: Program) {
fontManager.program = program
this.program = program this.program = program
contentScale = program.window.contentScale contentScale = program.window.contentScale

View File

@@ -1,12 +1,15 @@
package org.openrndr.panel package org.openrndr.panel
import org.openrndr.Program
import org.openrndr.draw.FontImageMap import org.openrndr.draw.FontImageMap
import org.openrndr.draw.loadFont
import org.openrndr.panel.style.LinearDimension import org.openrndr.panel.style.LinearDimension
import org.openrndr.panel.style.StyleSheet import org.openrndr.panel.style.StyleSheet
import org.openrndr.panel.style.fontFamily import org.openrndr.panel.style.fontFamily
import org.openrndr.panel.style.fontSize import org.openrndr.panel.style.fontSize
class FontManager { class FontManager() {
var program: Program? = null
val registry: MutableMap<String, String> = mutableMapOf() val registry: MutableMap<String, String> = mutableMapOf()
var contentScale: Double = 1.0 var contentScale: Double = 1.0
@@ -15,7 +18,7 @@ class FontManager {
fun font(cs: StyleSheet): FontImageMap { fun font(cs: StyleSheet): FontImageMap {
val fontUrl = resolve(cs.fontFamily) ?: "cp:fonts/Roboto-Medium.ttf" val fontUrl = resolve(cs.fontFamily) ?: "cp:fonts/Roboto-Medium.ttf"
val fontSize = (cs.fontSize as? LinearDimension.PX)?.value ?: 16.0 val fontSize = (cs.fontSize as? LinearDimension.PX)?.value ?: 16.0
return FontImageMap.fromUrl(fontUrl, fontSize, contentScale = contentScale) return program?.loadFont(fontUrl, fontSize) ?: error("no program")
} }
fun register(name: String, url: String) { fun register(name: String, url: String) {

View File

@@ -2,9 +2,9 @@ package org.openrndr.panel.elements
import org.openrndr.color.ColorRGBa import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap
import org.openrndr.draw.isolated import org.openrndr.draw.isolated
import org.openrndr.draw.loadFont
import org.openrndr.events.Event import org.openrndr.events.Event
import org.openrndr.extra.textwriter.TextWriter import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.panel.style.* import org.openrndr.panel.style.*
@@ -52,7 +52,9 @@ class Button : Element(ElementType("button")) {
computedStyle.let { style -> computedStyle.let { style ->
val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken" val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken"
val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 14.0 val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize)
val program = (root() as? Body)?.controlManager?.program ?: error("no program")
val fontMap = program.loadFont(fontUrl, fontSize)
val writer = TextWriter(null) val writer = TextWriter(null)

View File

@@ -10,6 +10,7 @@ import kotlinx.coroutines.yield
import org.openrndr.KEY_ARROW_DOWN import org.openrndr.KEY_ARROW_DOWN
import org.openrndr.KEY_ARROW_UP import org.openrndr.KEY_ARROW_UP
import org.openrndr.KEY_ENTER import org.openrndr.KEY_ENTER
import org.openrndr.draw.loadFont
import org.openrndr.events.Event import org.openrndr.events.Event
import org.openrndr.launch import org.openrndr.launch
@@ -79,7 +80,10 @@ class DropdownButton : Element(ElementType("dropdown-button")), DisposableElemen
computedStyle.let { style -> computedStyle.let { style ->
val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken" val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken"
val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 16.0 val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 16.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize)
val program = (root() as? Body)?.controlManager?.program ?: error("no program")
val fontMap = program.loadFont(fontUrl, fontSize)
val writer = TextWriter(null) val writer = TextWriter(null)
writer.box = Rectangle(0.0, writer.box = Rectangle(0.0,

View File

@@ -4,6 +4,7 @@ import kotlinx.coroutines.yield
import org.openrndr.color.ColorRGBa import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap import org.openrndr.draw.FontImageMap
import org.openrndr.draw.loadFont
import org.openrndr.extra.textwriter.TextWriter import org.openrndr.extra.textwriter.TextWriter
import org.openrndr.launch import org.openrndr.launch
@@ -34,7 +35,8 @@ class TextNode(var text: String) : Element(ElementType("text")) {
computedStyle.let { style -> computedStyle.let { style ->
val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily)?:"broken" val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily)?:"broken"
val fontSize = (style.fontSize as? LinearDimension.PX)?.value?: 14.0 val fontSize = (style.fontSize as? LinearDimension.PX)?.value?: 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize) val program = (root() as? Body)?.controlManager?.program ?: error("no program")
val fontMap = program.loadFont(fontUrl, fontSize)
val writer = TextWriter(null) val writer = TextWriter(null)

View File

@@ -4,6 +4,7 @@ import kotlinx.coroutines.*
import org.openrndr.draw.Drawer import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap import org.openrndr.draw.FontImageMap
import org.openrndr.draw.LineCap import org.openrndr.draw.LineCap
import org.openrndr.draw.loadFont
import org.openrndr.panel.style.* import org.openrndr.panel.style.*
import org.openrndr.shape.Rectangle import org.openrndr.shape.Rectangle
@@ -34,7 +35,8 @@ class Toggle : Element(ElementType("toggle")), DisposableElement {
computedStyle.let { style -> computedStyle.let { style ->
val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken" val fontUrl = (root() as? Body)?.controlManager?.fontManager?.resolve(style.fontFamily) ?: "broken"
val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 14.0 val fontSize = (style.fontSize as? LinearDimension.PX)?.value ?: 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize) val program = (root() as? Body)?.controlManager?.program ?: error("no program")
val fontMap = program.loadFont(fontUrl, fontSize)
val writer = TextWriter(null) val writer = TextWriter(null)

View File

@@ -4,6 +4,7 @@ import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer import org.openrndr.draw.Drawer
import org.openrndr.draw.FontImageMap import org.openrndr.draw.FontImageMap
import org.openrndr.draw.isolated import org.openrndr.draw.isolated
import org.openrndr.draw.loadFont
import org.openrndr.extra.textwriter.writer import org.openrndr.extra.textwriter.writer
import org.openrndr.math.Vector2 import org.openrndr.math.Vector2
@@ -16,7 +17,9 @@ class Tooltip(val parent: Element, val position: Vector2, val message: String) {
val fontUrl = (parent.root() as Body).controlManager.fontManager.resolve("default") ?: error("no font") val fontUrl = (parent.root() as Body).controlManager.fontManager.resolve("default") ?: error("no font")
val fontSize = 14.0 val fontSize = 14.0
val fontMap = FontImageMap.fromUrl(fontUrl, fontSize) val program = (parent.root() as? Body)?.controlManager?.program ?: error("no program")
val fontMap = program.loadFont(fontUrl, fontSize)
val lines = message.split("\n") val lines = message.split("\n")
drawer.isolated { drawer.isolated {