Initial commit
This commit is contained in:
68
main.go
Normal file
68
main.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/sha1"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/fogleman/gg"
|
||||
)
|
||||
|
||||
// 8x8 square of 100x100 px squares
|
||||
func main() {
|
||||
dc := gg.NewContext(800, 800)
|
||||
|
||||
hash := hash("InsightForgeOrg")
|
||||
|
||||
colorString := hash[0:6]
|
||||
r, g, b := rgbFromHex(colorString)
|
||||
dc.SetRGB255(r, g, b)
|
||||
|
||||
for i, character := range hash[6:14] {
|
||||
tmp, _ := strconv.ParseUint(string(character), 16, 8)
|
||||
n := int(tmp)
|
||||
for _, v := range []uint{0, 1, 2, 3} {
|
||||
on := hasBit(n, v)
|
||||
|
||||
dc.DrawRectangle(float64(v * 100), float64(i * 100), 100, 100)
|
||||
dc.DrawRectangle(700 - float64(v * 100), float64(i * 100), 100, 100)
|
||||
if !on {
|
||||
dc.SetRGB255(r, g, b)
|
||||
} else {
|
||||
dc.SetRGB255(255, 255, 255)
|
||||
}
|
||||
dc.Fill()
|
||||
}
|
||||
}
|
||||
|
||||
dc.SavePNG("out.png")
|
||||
}
|
||||
|
||||
func rgbFromHex(hex string) (int, int, int) {
|
||||
r, _ := strconv.ParseUint(hex[0:2], 16, 8)
|
||||
g, _ := strconv.ParseUint(hex[2:4], 16, 8)
|
||||
b, _ := strconv.ParseUint(hex[4:6], 16, 8)
|
||||
return int(r), int(g), int(b)
|
||||
}
|
||||
|
||||
func hash(str string) string {
|
||||
h := sha1.New()
|
||||
h.Write([]byte(str))
|
||||
res := h.Sum(nil)
|
||||
return fmt.Sprintf("%x", res)
|
||||
}
|
||||
|
||||
func hasBit(n int, pos uint) bool {
|
||||
val := n & (1 << pos)
|
||||
return (val > 0)
|
||||
}
|
||||
|
||||
// 9d26bf3cf1fb2b2f02d4a2013333f4fcd551cb2e
|
||||
// 9d26bf -> color
|
||||
// 3 -> row1
|
||||
// c -> row2
|
||||
// ...
|
||||
// b -> row8
|
||||
|
||||
// 3 = 0 0 1 1
|
||||
//
|
||||
Reference in New Issue
Block a user