mirror of
https://codeberg.org/Codeberg/avatars.git
synced 2023-08-10 21:12:50 +03:00
Exporte gender aware avatar generation (#9)
Add function to create male or female avatars Co-authored-by: nfirbas <nejc.firbas99@gmail.com> Reviewed-on: https://codeberg.org/Codeberg/avatars/pulls/9 Co-authored-by: nfirbas <nfirbas@noreply.codeberg.org> Co-committed-by: nfirbas <nfirbas@noreply.codeberg.org>
This commit is contained in:
parent
c868879277
commit
8da63012fe
24
avatars.go
24
avatars.go
@ -10,17 +10,23 @@ import (
|
||||
|
||||
// MakeAvatar create svg from seed
|
||||
func MakeAvatar(seedString string) string {
|
||||
var seed uint64
|
||||
for _, c := range []byte(seedString) {
|
||||
seed = bits.RotateLeft64(seed, 8)
|
||||
seed ^= uint64(c)
|
||||
}
|
||||
seed := generateSeed(seedString)
|
||||
if seed&1 == 0 {
|
||||
return femaleAvatar(seed, "")
|
||||
}
|
||||
return maleAvatar(seed, "")
|
||||
}
|
||||
|
||||
// MakeFemaleAvatar create female svg from seed
|
||||
func MakeFemaleAvatar(seedString string) string {
|
||||
return femaleAvatar(generateSeed(seedString), "")
|
||||
}
|
||||
|
||||
// MakeMaleAvatar create male svg from seed
|
||||
func MakeMaleAvatar(seedString string) string {
|
||||
return maleAvatar(generateSeed(seedString), "")
|
||||
}
|
||||
|
||||
/**
|
||||
* Based on TypeScript DiceBear Avatars, which in turn were inspired by 8biticon avatars:
|
||||
* (MIT License, Copyright (c) 2012 Plastic Jam, Copyright (c) 2019 DiceBear)
|
||||
@ -31,6 +37,14 @@ type lcg struct {
|
||||
seed uint64
|
||||
}
|
||||
|
||||
func generateSeed(seedString string) (seed uint64) {
|
||||
for _, c := range []byte(seedString) {
|
||||
seed = bits.RotateLeft64(seed, 8)
|
||||
seed ^= uint64(c)
|
||||
}
|
||||
return seed
|
||||
}
|
||||
|
||||
func (g *lcg) random() uint32 {
|
||||
/* Linear Congruent Generator, POSIX/glibc [de]rand48 setting, bits [47..0] are output bits */
|
||||
g.seed = (25214903917*g.seed + 11) % 281474976710656
|
||||
|
Loading…
Reference in New Issue
Block a user