[orx-shadestyle] Fix COVER and CONTAIN fit modes for BOUNDS units in GradientBase

This commit is contained in:
Edwin Jakobs
2025-02-27 10:20:04 +01:00
parent ee8a709cc0
commit fe87704efd
3 changed files with 170 additions and 114 deletions

View File

@@ -0,0 +1,49 @@
package gradients
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.color.spaces.OKHSV
import org.openrndr.extra.color.tools.shiftHue
import org.openrndr.extra.shadestyles.fills.FillFit
import org.openrndr.extra.shadestyles.fills.SpreadMethod
import org.openrndr.extra.shadestyles.fills.gradients.gradient
import org.openrndr.extra.shapes.primitives.grid
import org.openrndr.extra.shapes.primitives.placeIn
import org.openrndr.math.Vector2
fun main() {
application {
configure {
width = 720
height = 720
}
program {
extend {
val grid = drawer.bounds.grid(3, 3)
for ((index, row) in grid.withIndex()) {
drawer.shadeStyle = gradient<ColorRGBa> {
for (i in 0..10) {
stops[i / 10.0] = ColorRGBa.RED.shiftHue<OKHSV>(i * 36.0)
}
spreadMethod = SpreadMethod.PAD
this.fillFit = FillFit.entries[index]
radial {
center = Vector2(0.5, 0.5)
}
}
for ((x, cell) in row.withIndex()) {
val paddedCell = cell.offsetEdges(-10.0)
when (x) {
0 -> drawer.rectangle(paddedCell.sub(0.0..0.5, 0.0..1.0).placeIn(paddedCell))
1 -> drawer.rectangle(paddedCell)
2 -> drawer.rectangle(paddedCell.sub(0.0..1.0, 0.0..0.5).placeIn(paddedCell))
}
}
}
}
}
}
}