287 lines
5.0 KiB
JavaScript
287 lines
5.0 KiB
JavaScript
var fs = require('fs');
|
|
var path = require('path');
|
|
|
|
// You need to npm install svg2png for this to work
|
|
var svg2png = require('svg2png');
|
|
|
|
var svgdir = "svg";
|
|
var outputdir = "out";
|
|
|
|
const svgNS = "http://www.w3.org/2000/svg";
|
|
|
|
const icons = {
|
|
heart: `
|
|
. # . # .
|
|
# # # # #
|
|
# # # # #
|
|
. # # # .
|
|
. . # . .`,
|
|
smallheart: `
|
|
. . . . .
|
|
. # . # .
|
|
. # # # .
|
|
. . # . .
|
|
. . . . .`,
|
|
happy: `
|
|
. . . . .
|
|
. # . # .
|
|
. . . . .
|
|
# . . . #
|
|
. # # # .`,
|
|
sad: `
|
|
. . . . .
|
|
. # . # .
|
|
. . . . .
|
|
. # # # .
|
|
# . . . #`,
|
|
confused: `
|
|
. . . . .
|
|
. # . # .
|
|
. . . . .
|
|
. # . # .
|
|
# . # . #`,
|
|
angry: `
|
|
# . . . #
|
|
. # . # .
|
|
. . . . .
|
|
# # # # #
|
|
# . # . #`,
|
|
asleep: `
|
|
. . . . .
|
|
# # . # #
|
|
. . . . .
|
|
. # # # .
|
|
. . . . .`,
|
|
surprised: `
|
|
. # . # .
|
|
. . . . .
|
|
. . # . .
|
|
. # . # .
|
|
. . # . .`,
|
|
silly: `
|
|
# . . . #
|
|
. . . . .
|
|
# # # # #
|
|
. . . # #
|
|
. . . # #`,
|
|
fabulous: `
|
|
# # # # #
|
|
# # . # #
|
|
. . . . .
|
|
. # . # .
|
|
. # # # .`,
|
|
meh: `
|
|
# # . # #
|
|
. . . . .
|
|
. . . # .
|
|
. . # . .
|
|
. # . . .`,
|
|
yes: `
|
|
. . . . .
|
|
. . . . #
|
|
. . . # .
|
|
# . # . .
|
|
. # . . .`,
|
|
no: `
|
|
# . . . #
|
|
. # . # .
|
|
. . # . .
|
|
. # . # .
|
|
# . . . #`,
|
|
triangle: `
|
|
. . . . .
|
|
. . # . .
|
|
. # . # .
|
|
# # # # #
|
|
. . . . .`,
|
|
lefttriangle: `
|
|
# . . . .
|
|
# # . . .
|
|
# . # . .
|
|
# . . # .
|
|
# # # # #`,
|
|
chessboard: `
|
|
. # . # .
|
|
# . # . #
|
|
. # . # .
|
|
# . # . #
|
|
. # . # .`,
|
|
diamond: `
|
|
. . # . .
|
|
. # . # .
|
|
# . . . #
|
|
. # . # .
|
|
. . # . .`,
|
|
smalldiamond: `
|
|
. . . . .
|
|
. . # . .
|
|
. # . # .
|
|
. . # . .
|
|
. . . . .`,
|
|
square: `
|
|
# # # # #
|
|
# . . . #
|
|
# . . . #
|
|
# . . . #
|
|
# # # # #`,
|
|
smallsquare: `
|
|
. . . . .
|
|
. # # # .
|
|
. # . # .
|
|
. # # # .
|
|
. . . . .`,
|
|
scissors: `
|
|
# # . . #
|
|
# # . # .
|
|
. . # . .
|
|
# # . # .
|
|
# # . . #`,
|
|
tshirt: `
|
|
# # . # #
|
|
# # # # #
|
|
. # # # .
|
|
. # # # .
|
|
. # # # .`,
|
|
rollerskate: `
|
|
. . . # #
|
|
. . . # #
|
|
# # # # #
|
|
# # # # #
|
|
. # . # .`,
|
|
duck: `
|
|
. # # . .
|
|
# # # . .
|
|
. # # # #
|
|
. # # # .
|
|
. . . . .`,
|
|
house: `
|
|
. . # . .
|
|
. # # # .
|
|
# # # # #
|
|
. # # # .
|
|
. # . # .`,
|
|
tortoise: `
|
|
. . . . .
|
|
. # # # .
|
|
# # # # #
|
|
. # . # .
|
|
. . . . .`,
|
|
butterfly: `
|
|
# # . # #
|
|
# # # # #
|
|
. . # . .
|
|
# # # # #
|
|
# # . # #`,
|
|
stickfigure: `
|
|
. . # . .
|
|
# # # # #
|
|
. . # . .
|
|
. # . # .
|
|
# . . . #`,
|
|
ghost: `
|
|
. # # # .
|
|
# . # . #
|
|
# # # # #
|
|
# # # # #
|
|
# . # . #`,
|
|
sword: `
|
|
. . # . .
|
|
. . # . .
|
|
. . # . .
|
|
. # # # .
|
|
. . # . .`
|
|
,
|
|
giraffe: `
|
|
# # . . .
|
|
. # . . .
|
|
. # . . .
|
|
. # # # .
|
|
. # . # .`,
|
|
skull: `
|
|
. # # # .
|
|
# . # . #
|
|
# # # # #
|
|
. # # # .
|
|
. # # # .`,
|
|
umbrella: `
|
|
. # # # .
|
|
# # # # #
|
|
. . # . .
|
|
# . # . .
|
|
# # # . .`,
|
|
snake: `
|
|
# # . . .
|
|
# # . # #
|
|
. # . # .
|
|
. # # # .
|
|
. . . . .`,
|
|
rabbit: `
|
|
# . # . .
|
|
# . # . .
|
|
# # # # .
|
|
# # . # .
|
|
# # # # .`,
|
|
cow: `
|
|
# . . . #
|
|
# . . . #
|
|
# # # # #
|
|
. # # # .
|
|
. . # . .`,
|
|
quarternote: `
|
|
. . # . .
|
|
. . # . .
|
|
. . # . .
|
|
# # # . .
|
|
# # # . .`,
|
|
eigthnote: `
|
|
. . # . .
|
|
. . # # .
|
|
. . # . #
|
|
# # # . .
|
|
# # # . .`,
|
|
pitchfork: `
|
|
# . # . #
|
|
# . # . #
|
|
# # # # #
|
|
. . # . .
|
|
. . # . .`,
|
|
target: `
|
|
. . # . .
|
|
. # # # .
|
|
# # . # #
|
|
. # # # .
|
|
. . # . .`
|
|
}
|
|
|
|
Object.keys(icons).forEach(icon => {
|
|
const data = icons[icon];
|
|
const hexLiteral = data
|
|
.replace(/[ \n`\(\)]/gi, '');
|
|
|
|
var svg = `<svg xmlns="http://www.w3.org/2000/svg" height="200" width="200">`;
|
|
const width = 200;
|
|
const height = 200;
|
|
//svg += '<rect width="100%" height="100%" fill="#176CBF"/>';
|
|
for (var i = 0; i < 5; i++) {
|
|
for (j = 0; j < 5; j++) {
|
|
const hexItemVal = hexLiteral[(i * 5) + j] ? hexLiteral[(i * 5) + j] == '#' : false;
|
|
const x = j * (width / 5);
|
|
const y = i * (height / 5);
|
|
svg += `<rect y="5" x="5" width="30" height="30" rx="5" transform="translate(${x},${y})"
|
|
fill="${hexItemVal ? '#fff' : '#000'}"
|
|
fill-opacity="${hexItemVal ? '1.0' : '0.2'}"/>\n`; //#006CC2
|
|
}
|
|
}
|
|
svg += `</svg>`;
|
|
const svgPath = path.join(svgdir, icon + ".svg");
|
|
fs.writeFile(svgPath, svg, { encoding: 'utf8', flag: 'w' }, function(err, result) {
|
|
if (err) console.log("error writing to file");
|
|
});
|
|
|
|
const sourceBuffer = Buffer.from(svg, 'utf8');
|
|
svg2png(sourceBuffer, { width: 200, height: 200 })
|
|
.then(buffer => fs.writeFile(path.join(outputdir, icon + "-icon.png"), buffer, { encoding: 'utf8', flag: 'w' }, function (err, result) {
|
|
if (err) console.log("error writing to file");
|
|
}))
|
|
.catch(e => console.error(e));
|
|
}); |