automated snapshot
This commit is contained in:
62
internal/graphics/graphics.go
Normal file
62
internal/graphics/graphics.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package graphics
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
rl "github.com/gen2brain/raylib-go/raylib"
|
||||
)
|
||||
|
||||
var (
|
||||
FlourescentHues = []float32{
|
||||
0, // hot magenta-red
|
||||
30, // neon orange
|
||||
60, // acid yellow
|
||||
120, // laser green
|
||||
180, // cyan
|
||||
210, // electric blue
|
||||
270, // ultraviolet purple
|
||||
}
|
||||
FlourescentColors = makeFlourescentColors()
|
||||
)
|
||||
|
||||
func makeFlourescentColors() []rl.Color {
|
||||
fc := make([]rl.Color, len(FlourescentHues))
|
||||
for i, hue := range(FlourescentHues) {
|
||||
fc[i] = rl.ColorFromHSV(hue, 1.0, 1.0)
|
||||
}
|
||||
return fc
|
||||
}
|
||||
|
||||
type ColorCycle interface {
|
||||
Next() rl.Color
|
||||
}
|
||||
|
||||
type ArrayBackedColorCycle struct {
|
||||
colors []rl.Color
|
||||
index int
|
||||
}
|
||||
|
||||
func NewFixedColorCycle(colors []rl.Color) ArrayBackedColorCycle {
|
||||
return ArrayBackedColorCycle {
|
||||
colors: colors,
|
||||
index: 0,
|
||||
}
|
||||
}
|
||||
|
||||
func (c ArrayBackedColorCycle) Shuffle(seed int64) ColorCycle {
|
||||
r := rand.New(rand.NewSource(seed))
|
||||
cprime := &ArrayBackedColorCycle {
|
||||
colors: make([]rl.Color, len(c.colors)),
|
||||
index: 0,
|
||||
}
|
||||
r.Shuffle(len(c.colors), func(i, j int) {
|
||||
cprime.colors[i] = c.colors[j]
|
||||
})
|
||||
return cprime
|
||||
}
|
||||
|
||||
func (c *ArrayBackedColorCycle) Next() rl.Color {
|
||||
color := c.colors[c.index]
|
||||
c.index = (c.index + 1) % len(c.colors)
|
||||
return color
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user