1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | 'use strict'
|
8 |
|
9 | const Generator = require('./generator')
|
10 | const textElm = require('../element/text_elm')
|
11 | const svgAttr = require('../element/svg_attr')
|
12 | const colorAttr = require('../element/color_attr')
|
13 | const shapeElm = require('../element/shape_elm')
|
14 | const path = require('path')
|
15 | const co = require('co')
|
16 | const stringcase = require('stringcase')
|
17 | const fontStyleElm = require('../element/font_style_elm')
|
18 |
|
19 |
|
20 | module.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 | })
|