Files
rtl-gopow/internal/gopow/palette.go
2020-07-18 19:50:55 +02:00

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)
}