mirror of
https://github.com/penpot/penpot.git
synced 2025-07-30 08:08:31 +02:00
37 lines
1.1 KiB
Clojure
37 lines
1.1 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns app.util.avatars
|
|
(:require
|
|
[app.util.object :as obj]
|
|
[cuerdas.core :as str]))
|
|
|
|
(defn generate*
|
|
[{:keys [name color size]
|
|
:or {color "#000000" size 128}}]
|
|
|
|
(let [parts (str/words (str/upper name))
|
|
letters (if (= 1 (count parts))
|
|
(ffirst parts)
|
|
(str (ffirst parts) (first (second parts))))
|
|
canvas (.createElement js/document "canvas")
|
|
context (.getContext canvas "2d")]
|
|
|
|
(obj/set! canvas "width" size)
|
|
(obj/set! canvas "height" size)
|
|
|
|
(obj/set! context "fillStyle" color)
|
|
(.fillRect context 0 0 size size)
|
|
|
|
(obj/set! context "font" (str (/ size 2) "px Arial"))
|
|
(obj/set! context "textAlign" "center")
|
|
(obj/set! context "fillStyle" "#ffffff")
|
|
(.fillText context letters (/ size 2) (/ size 1.5))
|
|
|
|
(.toDataURL canvas)))
|
|
|
|
(def generate (memoize generate*))
|
|
|