[orx-shadestyles] Improve gradient and imageFill shadestyles

This commit is contained in:
Edwin Jakobs
2025-02-25 12:16:57 +01:00
parent 21a3d7f483
commit 9a93d95318
30 changed files with 1296 additions and 386 deletions

View File

@@ -0,0 +1,80 @@
package gradients
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.shadestyles.fills.SpreadMethod
import org.openrndr.extra.shadestyles.fills.gradients.gradient
import org.openrndr.math.Vector2
import kotlin.math.cos
fun main() {
application {
configure {
width = 720
height = 720
}
program {
extend {
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.RED
stops[0.1] = ColorRGBa.GREEN
stops[0.2] = ColorRGBa.PINK
stops[0.9] = ColorRGBa.WHITE
stops[1.0] = ColorRGBa.BLACK
linear {
start = Vector2(0.1, 0.1).rotate(seconds * 36.0, Vector2(0.5, 0.5))
end = Vector2(0.9, 0.9).rotate(seconds * 36.0, Vector2(0.5, 0.5))
}
}
drawer.rectangle(0.0, 0.0, 360.0, 360.0)
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.RED
stops[0.1] = ColorRGBa.GREEN
stops[0.2] = ColorRGBa.PINK
stops[0.9] = ColorRGBa.WHITE
stops[1.0] = ColorRGBa.BLACK
spreadMethod = SpreadMethod.REFLECT
stellar {
radius = (cos(seconds) * 0.25 + 0.5) * 0.5
sharpness = 0.5
sides = 6
rotation = seconds * 36.0
}
}
drawer.rectangle(360.0, 0.0, 360.0, 360.0)
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.RED
stops[0.1] = ColorRGBa.GREEN
stops[0.2] = ColorRGBa.PINK
stops[0.9] = ColorRGBa.WHITE
stops[1.0] = ColorRGBa.BLACK
spreadMethod = SpreadMethod.REFLECT
radial {
radius = (cos(seconds) * 0.25 + 0.5) * 0.5
}
}
drawer.rectangle(360.0, 360.0, 360.0, 360.0)
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.RED
stops[0.1] = ColorRGBa.GREEN
stops[0.2] = ColorRGBa.PINK
stops[0.9] = ColorRGBa.WHITE
stops[1.0] = ColorRGBa.BLACK
spreadMethod = SpreadMethod.REPEAT
linear {
start = Vector2(0.45, 0.45).rotate(seconds * 36.0)
end = Vector2(0.55, 0.55).rotate(seconds * 36.0)
}
}
drawer.rectangle(0.0, 360.0, 360.0, 360.0)
}
}
}
}

View File

@@ -0,0 +1,64 @@
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
fun main() {
application {
configure {
width = 720
height = 720
}
program {
extend {
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.BLUE_STEEL
stops[0.75] = ColorRGBa.WHITE
stops[0.8] = ColorRGBa.BLACK
quantization = 10
fillUnits = FillUnits.WORLD
spreadMethod = SpreadMethod.REFLECT
levelWarpFunction = """float levelWarp(vec2 p, float level) { return level + cos(p.x*0.01 + level)*0.1; } """
stellar {
radius = drawer.bounds.width/4.0
center = drawer.bounds.position(0.5, 0.0)
sides = 6
sharpness = 0.5
rotation = seconds * 36.0
}
}
drawer.rectangle(drawer.bounds)
drawer.shadeStyle = gradient<ColorRGBa> {
stops[0.0] = ColorRGBa.BLUE_STEEL
stops[0.75] = ColorRGBa.WHITE
stops[0.8] = ColorRGBa.BLACK
quantization = 10
fillUnits = FillUnits.WORLD
spreadMethod = SpreadMethod.REFLECT
levelWarpFunction = """float levelWarp(vec2 p, float level) { return level + 0.1 + cos(p.x*0.01 + level)*0.1; } """
stellar {
radius = drawer.bounds.width/4.0
center = drawer.bounds.position(0.5, 0.0)
sides = 6
sharpness = 0.5
rotation = seconds * 36.0
}
}
drawer.fontMap = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 196.0)
for (i in 0 until 5) {
drawer.text("Gradient", 0.0, 128.0 + i * drawer.height / 5.0)
}
}
}
}
}

View File

@@ -0,0 +1,36 @@
package gradients
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.color.presets.BLUE_STEEL
import org.openrndr.extra.color.spaces.OKHSV
import org.openrndr.extra.color.tools.shiftHue
import org.openrndr.extra.shadestyles.fills.SpreadMethod
import org.openrndr.extra.shadestyles.fills.gradients.gradient
import org.openrndr.math.Vector2
fun main() {
application {
configure {
width = 720
height = 720
}
program {
extend {
drawer.shadeStyle = gradient<ColorRGBa> {
for (i in 0 .. 10) {
stops[i/10.0] = ColorRGBa.RED.shiftHue<OKHSV>(i * 36.0)
}
spreadMethod = SpreadMethod.REFLECT
conic {
center = Vector2(0.5, 0.5)
angle = 360.0
rotation = seconds * 10.0
}
}
drawer.rectangle(drawer.bounds)
}
}
}
}