genesis
This commit is contained in:
3
go.mod
Normal file
3
go.mod
Normal file
@@ -0,0 +1,3 @@
|
||||
module forge.sunglocto.net/sunglocto/xep0392
|
||||
|
||||
go 1.25.1
|
||||
59
main.go
Normal file
59
main.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package xep0392
|
||||
|
||||
import (
|
||||
"crypto/sha1"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"image"
|
||||
"image/color"
|
||||
"math"
|
||||
)
|
||||
|
||||
// TODO: import "github.com/hsluv/go-hsluv"
|
||||
func HsluvToRGB(h, s, l float64) (r, g, b float64) {
|
||||
return 0, 0, 0
|
||||
}
|
||||
|
||||
func ColorFromString(id string) color.RGBA {
|
||||
hue := hueFromString(id)
|
||||
s := 100.0
|
||||
l := 50.0
|
||||
r, g, b := HsluvToRGB(hue, s, l)
|
||||
return color.RGBA{
|
||||
R: uint8(clamp01(r) * 255),
|
||||
G: uint8(clamp01(g) * 255),
|
||||
B: uint8(clamp01(b) * 255),
|
||||
A: 255,
|
||||
}
|
||||
}
|
||||
|
||||
func ImageWithColor(id string, width, height int) *image.RGBA {
|
||||
c := ColorFromString(id)
|
||||
img := image.NewRGBA(image.Rect(0, 0, width, height))
|
||||
for y := 0; y < height; y++ {
|
||||
for x := 0; x < width; x++ {
|
||||
img.SetRGBA(x, y, c)
|
||||
}
|
||||
}
|
||||
return img
|
||||
}
|
||||
|
||||
func hueFromString(s string) float64 {
|
||||
h := sha1.Sum([]byte(s))
|
||||
v := binary.LittleEndian.Uint16(h[18:20])
|
||||
hue := float64(v) * 360.0 / 65536.0
|
||||
if hue >= 360.0 {
|
||||
hue = math.Mod(hue, 360.0)
|
||||
}
|
||||
return hue
|
||||
}
|
||||
|
||||
func clamp01(f float64) float64 {
|
||||
if f < 0 {
|
||||
return 0
|
||||
}
|
||||
if f > 1 {
|
||||
return 1
|
||||
}
|
||||
return f
|
||||
}
|
||||
Reference in New Issue
Block a user