UNPKG

1.46 kBJavaScriptView Raw
1/**
2 * Generator for banner.
3 * @augment Generator
4 * @constructor BannerGenerator
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 stringcase = require('stringcase')
16const co = require('co')
17const fontStyleElm = require('../element/font_style_elm')
18
19/** @lends BannerGenerator */
20module.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})