hex avatar experiment
This commit is contained in:
parent
60bc158774
commit
e9a742a132
|
@ -1470,7 +1470,11 @@ func junkuser(user *WhatAbout) junk.Junk {
|
||||||
if ava := user.Options.Avatar; ava != "" {
|
if ava := user.Options.Avatar; ava != "" {
|
||||||
a["url"] = ava
|
a["url"] = ava
|
||||||
} else {
|
} 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
|
j["icon"] = a
|
||||||
} else {
|
} else {
|
||||||
|
|
23
avatar.go
23
avatar.go
|
@ -66,7 +66,7 @@ func loadAvatarColors() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func genAvatar(name string) []byte {
|
func genAvatar(name string, hex bool) []byte {
|
||||||
h := sha512.New()
|
h := sha512.New()
|
||||||
h.Write([]byte(name))
|
h.Write([]byte(name))
|
||||||
s := h.Sum(nil)
|
s := h.Sum(nil)
|
||||||
|
@ -74,6 +74,27 @@ func genAvatar(name string) []byte {
|
||||||
for i := 0; i < 64; i++ {
|
for i := 0; i < 64; i++ {
|
||||||
for j := 0; j < 64; j++ {
|
for j := 0; j < 64; j++ {
|
||||||
p := i*img.Stride + j*4
|
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
|
xx := i/16*16 + j/16
|
||||||
x := s[xx]
|
x := s[xx]
|
||||||
if x < 64 {
|
if x < 64 {
|
||||||
|
|
3
honk.go
3
honk.go
|
@ -51,10 +51,11 @@ type WhatAbout struct {
|
||||||
type UserOptions struct {
|
type UserOptions struct {
|
||||||
SkinnyCSS bool `json:",omitempty"`
|
SkinnyCSS bool `json:",omitempty"`
|
||||||
OmitImages bool `json:",omitempty"`
|
OmitImages bool `json:",omitempty"`
|
||||||
|
Avahex bool `json:",omitempty"`
|
||||||
|
MentionAll bool `json:",omitempty"`
|
||||||
Avatar string `json:",omitempty"`
|
Avatar string `json:",omitempty"`
|
||||||
MapLink string `json:",omitempty"`
|
MapLink string `json:",omitempty"`
|
||||||
Reaction string `json:",omitempty"`
|
Reaction string `json:",omitempty"`
|
||||||
MentionAll bool
|
|
||||||
Chats int
|
Chats int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
<p><textarea name="whatabout">{{ .WhatAbout }}</textarea>
|
<p><textarea name="whatabout">{{ .WhatAbout }}</textarea>
|
||||||
<p><label class="button" for="skinny">skinny layout:</label>
|
<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>
|
<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>
|
<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>
|
<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>
|
<p><label class="button" for="mentionall">mention all:</label>
|
||||||
|
|
8
web.go
8
web.go
|
@ -1107,6 +1107,11 @@ func saveuser(w http.ResponseWriter, r *http.Request) {
|
||||||
} else {
|
} else {
|
||||||
options.SkinnyCSS = false
|
options.SkinnyCSS = false
|
||||||
}
|
}
|
||||||
|
if r.FormValue("avahex") == "avahex" {
|
||||||
|
options.Avahex = true
|
||||||
|
} else {
|
||||||
|
options.Avahex = false
|
||||||
|
}
|
||||||
if r.FormValue("omitimages") == "omitimages" {
|
if r.FormValue("omitimages") == "omitimages" {
|
||||||
options.OmitImages = true
|
options.OmitImages = true
|
||||||
} else {
|
} else {
|
||||||
|
@ -2104,7 +2109,8 @@ func avatate(w http.ResponseWriter, r *http.Request) {
|
||||||
loadAvatarColors()
|
loadAvatarColors()
|
||||||
}
|
}
|
||||||
n := r.FormValue("a")
|
n := r.FormValue("a")
|
||||||
a := genAvatar(n)
|
hex := r.FormValue("hex") == "1"
|
||||||
|
a := genAvatar(n, hex)
|
||||||
if !debugMode {
|
if !debugMode {
|
||||||
w.Header().Set("Cache-Control", "max-age="+somedays())
|
w.Header().Set("Cache-Control", "max-age="+somedays())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue