UNPKG

1.44 kBJavaScriptView Raw
1/**
2 * Generator for favicon.
3 * @augment Generator
4 * @constructor FaviconGenerator
5 */
6
7'use strict'
8
9const Generator = require('./generator')
10const textElm = require('../element/text_elm')
11const svgAttr = require('../element/svg_attr')
12const colorAttr = require('../element/color_attr')
13const shapeElm = require('../element/shape_elm')
14const path = require('path')
15const co = require('co')
16const stringcase = require('stringcase')
17const fontStyleElm = require('../element/font_style_elm')
18
19/** @lends FaviconGenerator */
20module.exports = Generator.define({
21 size: 256,
22 shape: 'e',
23 color: 'j',
24 font: 'k',
25 text: 'smpl',
26 fontSize: null,
27 svgData (id) {
28 const s = this
29
30 let w = s.size
31 let h = s.size
32 let shape = s.shape
33 let font = s.font
34 let color = s.color
35 let fontSize = s.fontSize || h * 0.75
36
37 return {
38 '@': svgAttr(id, w, h),
39 style: fontStyleElm(font),
40 g: [
41 {
42 svg: shapeElm(shape, w, h, color)
43 },
44 {
45 '@': colorAttr(color, shapeElm.isReversed(shape)),
46 text: textElm(w / 2, h / 2, s.text, fontSize)
47 }
48 ]
49 }
50 },
51 generate (filename) {
52 const s = this
53 let basename = path.basename(filename, path.extname(filename))
54 let id = 'fur-favicon-' + stringcase.spinalcase(basename)
55 let data = s.svgData(id)
56 return co(function * () {
57 return yield s.render(filename, s.format, data)
58 })
59 }
60})