[orx-shade-styles] Implement StyleParameters in GradientBuilder

Make GradientBuilder comply with StyleParameters by adding related fields and methods. This enables parameter management for gradient styles.
This commit is contained in:
Edwin Jakobs
2025-03-05 15:19:17 +01:00
parent 68ac84e8b2
commit 50efe4da82

View File

@@ -3,7 +3,9 @@ package org.openrndr.extra.shadestyles.fills.gradients
import org.openrndr.color.AlgebraicColor import org.openrndr.color.AlgebraicColor
import org.openrndr.color.ColorRGBa import org.openrndr.color.ColorRGBa
import org.openrndr.color.ConvertibleToColorRGBa import org.openrndr.color.ConvertibleToColorRGBa
import org.openrndr.draw.ObservableHashmap
import org.openrndr.draw.ShadeStyle import org.openrndr.draw.ShadeStyle
import org.openrndr.draw.StyleParameters
import org.openrndr.extra.shadestyles.fills.FillFit import org.openrndr.extra.shadestyles.fills.FillFit
import org.openrndr.extra.shadestyles.fills.FillUnits import org.openrndr.extra.shadestyles.fills.FillUnits
import org.openrndr.extra.shadestyles.fills.SpreadMethod import org.openrndr.extra.shadestyles.fills.SpreadMethod
@@ -11,8 +13,12 @@ import org.openrndr.math.CastableToVector4
import org.openrndr.math.Vector4 import org.openrndr.math.Vector4
import kotlin.reflect.KClass import kotlin.reflect.KClass
class GradientBuilder<C>(val colorType: KClass<C>) class GradientBuilder<C>(val colorType: KClass<C>): StyleParameters
where C : ConvertibleToColorRGBa, C : AlgebraicColor<C>, C : CastableToVector4 { where C : ConvertibleToColorRGBa, C : AlgebraicColor<C>, C : CastableToVector4 {
override var parameterTypes: ObservableHashmap<String, String> = ObservableHashmap(mutableMapOf()) {}
override var parameterValues: MutableMap<String, Any> = mutableMapOf()
override var textureBaseIndex: Int = 2
var stops = mutableMapOf<Double, C>() var stops = mutableMapOf<Double, C>()
var fillUnits = FillUnits.BOUNDS var fillUnits = FillUnits.BOUNDS
@@ -24,6 +30,8 @@ class GradientBuilder<C>(val colorType: KClass<C>)
var quantization = 0 var quantization = 0
private fun setBaseParameters(style: GradientBase<C>) { private fun setBaseParameters(style: GradientBase<C>) {
style.parameterTypes.putAll(parameterTypes)
style.parameterValues.putAll(parameterValues)
style.quantization = quantization style.quantization = quantization
style.spreadMethod = spreadMethod.ordinal style.spreadMethod = spreadMethod.ordinal
style.fillUnits = fillUnits.ordinal style.fillUnits = fillUnits.ordinal