hex avatar experiment

This commit is contained in:
Ted Unangst 2022-01-22 16:30:02 -05:00
parent 60bc158774
commit e9a742a132
6 changed files with 39 additions and 4 deletions

View File

@ -1470,7 +1470,11 @@ func junkuser(user *WhatAbout) junk.Junk {
if ava := user.Options.Avatar; ava != "" {
a["url"] = ava
} else {
a["url"] = fmt.Sprintf("https://%s/a?a=%s", serverName, url.QueryEscape(user.URL))
u := fmt.Sprintf("https://%s/a?a=%s", serverName, url.QueryEscape(user.URL))
if user.Options.Avahex {
u += "&hex=1"
}
a["url"] = u
}
j["icon"] = a
} else {

View File

@ -66,7 +66,7 @@ func loadAvatarColors() {
}
}
func genAvatar(name string) []byte {
func genAvatar(name string, hex bool) []byte {
h := sha512.New()
h.Write([]byte(name))
s := h.Sum(nil)
@ -74,6 +74,27 @@ func genAvatar(name string) []byte {
for i := 0; i < 64; i++ {
for j := 0; j < 64; j++ {
p := i*img.Stride + j*4
if hex {
tan := 0.577
if i < 32 {
if j < 17-int(float64(i)*tan) || j > 46+int(float64(i)*tan) {
img.Pix[p+0] = 0
img.Pix[p+1] = 0
img.Pix[p+2] = 0
img.Pix[p+3] = 255
continue
}
} else {
if j < 17-int(float64(64-i)*tan) || j > 46+int(float64(64-i)*tan) {
img.Pix[p+0] = 0
img.Pix[p+1] = 0
img.Pix[p+2] = 0
img.Pix[p+3] = 255
continue
}
}
}
xx := i/16*16 + j/16
x := s[xx]
if x < 64 {

View File

@ -51,10 +51,11 @@ type WhatAbout struct {
type UserOptions struct {
SkinnyCSS bool `json:",omitempty"`
OmitImages bool `json:",omitempty"`
Avahex bool `json:",omitempty"`
MentionAll bool `json:",omitempty"`
Avatar string `json:",omitempty"`
MapLink string `json:",omitempty"`
Reaction string `json:",omitempty"`
MentionAll bool
Chats int
}

View File

@ -1,3 +1,4 @@
//go:build openbsd
// +build openbsd
//

View File

@ -10,6 +10,8 @@
<p><textarea name="whatabout">{{ .WhatAbout }}</textarea>
<p><label class="button" for="skinny">skinny layout:</label>
<input tabindex=1 type="checkbox" id="skinny" name="skinny" value="skinny" {{ if .User.Options.SkinnyCSS }}checked{{ end }}><span></span>
<p><label class="button" for="avahex">hex avatar:</label>
<input tabindex=1 type="checkbox" id="avahex" name="avahex" value="avahex" {{ if .User.Options.Avahex }}checked{{ end }}><span></span>
<p><label class="button" for="omitimages">omit images:</label>
<input tabindex=1 type="checkbox" id="omitimages" name="omitimages" value="omitimages" {{ if .User.Options.OmitImages }}checked{{ end }}><span></span>
<p><label class="button" for="mentionall">mention all:</label>

8
web.go
View File

@ -1107,6 +1107,11 @@ func saveuser(w http.ResponseWriter, r *http.Request) {
} else {
options.SkinnyCSS = false
}
if r.FormValue("avahex") == "avahex" {
options.Avahex = true
} else {
options.Avahex = false
}
if r.FormValue("omitimages") == "omitimages" {
options.OmitImages = true
} else {
@ -2104,7 +2109,8 @@ func avatate(w http.ResponseWriter, r *http.Request) {
loadAvatarColors()
}
n := r.FormValue("a")
a := genAvatar(n)
hex := r.FormValue("hex") == "1"
a := genAvatar(n, hex)
if !debugMode {
w.Header().Set("Cache-Control", "max-age="+somedays())
}