[orx-shade-styles] Add elliptical gradient support

This commit is contained in:
Edwin Jakobs
2025-03-04 08:37:06 +01:00
parent 5bd5421f31
commit e7f11d90b2
7 changed files with 242 additions and 49 deletions

View File

@@ -0,0 +1,45 @@
package gradients
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.loadFont
import org.openrndr.extra.color.presets.BLUE_STEEL
import org.openrndr.extra.shadestyles.fills.FillUnits
import org.openrndr.extra.shadestyles.fills.SpreadMethod
import org.openrndr.extra.shadestyles.fills.gradients.gradient
import org.openrndr.extra.shapes.primitives.grid
import kotlin.math.PI
import kotlin.math.cos
import kotlin.math.sin
fun main() = application {
configure {
width = 720
height = 720
}
program {
extend {
val grid = drawer.bounds.grid(2, 2)
drawer.stroke = null
for ((index, cell) in grid.flatten().withIndex()) {
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.RED
stops[0.5] = ColorRGBa.PINK
stops[1.0] = ColorRGBa.WHITE
fillUnits = FillUnits.BOUNDS
spreadMethod = SpreadMethod.REPEAT
quantization = 8
elliptic {
radiusX = cos(index / 2.0 * PI + seconds) * 0.45 + 0.5
radiusY = sin(index / 2.0 * PI + seconds) * 0.45 + 0.5
}
}
drawer.rectangle(cell)
}
}
}
}