package main import ( "strconv" "github.com/fogleman/gg" ) /* 8x8 square of 100x100 px squares First 6 characters of the hash are the color For the next 8 characters each character represents 4 bits of a row being on or off. The image is then mirrored to the right side. 9d26bf3cf1fb2b2f02d4a2013333f4fcd551cb2e 9d26bf -> color 3 -> row1 c -> row2 ... b -> row8 3 = 0 0 1 1 c = 1 1 0 0 ... b = 1 0 1 1 */ func FourBitSquares(dc *gg.Context, username string) { hash := hash(username) colorString := hash[0:6] r, g, b := rgbFromHex(colorString) dc.SetRGB255(r, g, b) for i, character := range hash[6:14] { integer, _ := strconv.ParseUint(string(character), 16, 4) for j := range 4 { on := hasBit(integer, j) dc.DrawRectangle(float64(j * 100), float64(i * 100), 100, 100) dc.DrawRectangle(700 - float64(j * 100), float64(i * 100), 100, 100) if !on { dc.SetRGB255(r, g, b) } else { dc.SetRGB255(255, 255, 255) } dc.Fill() } } }