UNPKG

1.71 kBJavaScriptView Raw
1
2const { svg2png } = require('../common/svg2png')
3const { symbolSvg } = require('./fsw-symbol-svg');
4const fs = require('fs');
5
6/**
7 * Function that creates a binary PNG image from an FSW symbol key with an optional style string
8 * @function fsw.symbolPng
9 * @param {string} fswSym - an FSW symbol key with optional style string
10 * @returns {ArrayBuffer} symbol png
11 * @example
12 * // using promise.then
13 * fsw.symbolPng('S20500-C').then( png => {
14 * console.log(png)
15 * })
16 * @example
17 * // using async/await
18 * const png = await fsw.symbolPng('S20500-C')
19 */
20 const symbolPng = async (fswSym) => {
21 let svg = await symbolSvg(fswSym);
22 svg = svg.replace(/<text.*text>/g, "");
23 const png = await svg2png(svg);
24 return png;
25}
26
27/**
28 * Function that creates a data url PNG image from an FSW symbol key with an optional style string
29 * @function fsw.symbolPngDataUrl
30 * @param {string} fswSym - an FSW symbol key with optional style string
31 * @returns {string} symbol png
32 * @example
33 * // using promise.then
34 * fsw.symbolPngDataUrl('S20500-C').then( png => {
35 * console.log(png)
36 * })
37 * @example
38 * // using async/await
39 * const png = await fsw.symbolPngDataUrl('S20500-C')
40 */
41const symbolPngDataUrl = async (fswSym) => {
42 const res = await symbolPng(fswSym);
43 return 'data:image/png;base64,' + res.toString('base64');
44}
45
46if (require.main === module) {
47 if (process.argv[3]) {
48 symbolPng(process.argv[2]).then ( res => {
49 fs.writeFileSync(process.argv[3], res);
50 })
51 } else {
52 symbolPngDataUrl(process.argv[2]).then ( res => {
53 console.log(res)
54 })
55 }
56} else {
57 module.exports = { symbolPng, symbolPngDataUrl }
58}