62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package gopow
|
|
|
|
import (
|
|
"image/color"
|
|
|
|
"github.com/lucasb-eyer/go-colorful"
|
|
)
|
|
|
|
type Palette interface {
|
|
ColorAt(table *TableComplex, x, y int) color.Color
|
|
}
|
|
|
|
type YellowPalette struct {
|
|
}
|
|
|
|
func (p *YellowPalette) ColorAt(table *TableComplex, x, y int) color.Color {
|
|
cell := table.Rows[y].Sample(x)
|
|
|
|
hueStart := 0.0
|
|
hueEnd := 1.0
|
|
|
|
span := (*table.Config.MinPower - *table.Config.MaxPower) * -1
|
|
hPerDeg := (hueStart - hueEnd) / span
|
|
powNormalized := cell - *table.Config.MinPower
|
|
powDegrees := powNormalized * hPerDeg
|
|
hue := hueStart - powDegrees
|
|
|
|
if hue < hueStart {
|
|
hue = hueStart
|
|
}
|
|
if hue > hueEnd {
|
|
hue = hueEnd
|
|
}
|
|
|
|
return colorful.Color{hue, hue, 0}
|
|
}
|
|
|
|
type SpectrumPalette struct {
|
|
}
|
|
|
|
func (p *SpectrumPalette) ColorAt(table *TableComplex, x, y int) color.Color {
|
|
cell := table.Rows[y].Sample(x)
|
|
|
|
hueStart := 236.0
|
|
hueEnd := 0.0
|
|
|
|
span := (*table.Config.MinPower - *table.Config.MaxPower) * -1
|
|
hPerDeg := (hueStart - hueEnd) / span
|
|
powNormalized := cell - *table.Config.MinPower
|
|
powDegrees := powNormalized * hPerDeg
|
|
hue := hueStart - powDegrees
|
|
|
|
if hue > hueStart {
|
|
hue = hueStart
|
|
}
|
|
if hue < hueEnd {
|
|
hue = hueEnd
|
|
}
|
|
|
|
return colorful.Hsv(hue, 1, 0.90)
|
|
}
|