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 stringcase = require('stringcase')
|
16 | const co = require('co')
|
17 | const fontStyleElm = require('../element/font_style_elm')
|
18 |
|
19 |
|
20 | module.exports = Generator.define({
|
21 | width: 768,
|
22 | height: 256,
|
23 | shape: 'c',
|
24 | color: 'br',
|
25 | font: 'n',
|
26 | text: 'sample',
|
27 | fontSize: null,
|
28 | svgData (id) {
|
29 | const s = this
|
30 |
|
31 | let w = s.width
|
32 | let h = s.height
|
33 | let shape = s.shape
|
34 | let font = s.font
|
35 | let color = s.color
|
36 | let fontSize = s.fontSize || h * 0.75
|
37 |
|
38 | return {
|
39 | '@': svgAttr(id, w, h),
|
40 | style: fontStyleElm(font),
|
41 | g: [
|
42 | {
|
43 | svg: shapeElm(shape, w, h, color)
|
44 | },
|
45 | {
|
46 | '@': colorAttr(color, shapeElm.isReversed(shape)),
|
47 | text: textElm(w / 2, h / 2, s.text, fontSize)
|
48 | }
|
49 | ]
|
50 | }
|
51 | },
|
52 | generate (filename) {
|
53 | const s = this
|
54 | let basename = path.basename(filename, path.extname(filename))
|
55 | let id = 'fur-banner-' + stringcase.spinalcase(basename)
|
56 | let data = s.svgData(id)
|
57 | return co(function * () {
|
58 | return yield s.render(filename, s.format, data)
|
59 | })
|
60 | }
|
61 | })
|