Files
ReceiptGenerator/scripts/make-icon.mjs
T

18 lines
1.0 KiB
JavaScript

import {PNG} from 'pngjs'
import fs from 'node:fs/promises'
const png=new PNG({width:256,height:256})
for(let y=0;y<256;y++)for(let x=0;x<256;x++){
const i=(y*256+x)*4,dx=Math.max(38-x,0,x-217),dy=Math.max(38-y,0,y-217)
let color=[22,133,118,dx*dx+dy*dy<=38*38?255:0]
if(x>=64&&x<=192&&y>=39&&y<=216)color=[255,255,255,255]
if(x>=163&&y<=68&&y<39+(x-163))color=[22,133,118,255]
if((y>=89&&y<=95||y>=112&&y<=118||y>=135&&y<=141)&&x>=83&&x<=171)color=[144,199,185,255]
const r=Math.hypot(x-158,y-183)
if(r>=18&&r<=23)color=[22,133,118,255]
for(let c=0;c<4;c++)png.data[i+c]=color[c]
}
const data=PNG.sync.write(png),head=Buffer.alloc(22)
head.writeUInt16LE(1,2);head.writeUInt16LE(1,4);head[6]=0;head[7]=0;head.writeUInt16LE(1,10);head.writeUInt16LE(32,12);head.writeUInt32LE(data.length,14);head.writeUInt32LE(22,18)
await fs.mkdir('build',{recursive:true});await fs.mkdir('dist',{recursive:true})
await fs.writeFile('build/icon.png',data);await fs.writeFile('build/icon.ico',Buffer.concat([head,data]));await fs.writeFile('dist/icon.png',data)