mattrguerra/cortexmainPrivate on GitHub, published here in full

render.mjs

Language JavaScript847 B18 lines

design/render.mjs

  1. // Renders design/*.svg to PNG with Playwright's Chromium: node design/render.mjs
  2. import { chromium } from '@playwright/test'
  3. import { readFileSync } from 'node:fs'
  4. const jobs = [
  5. ['design/icon.svg', 'design/icon-1024.png', 1024],
  6. ['design/tray.svg', 'src-tauri/icons/tray.png', 44],
  7. ]
  8. const browser = await chromium.launch()
  9. for (const [src, out, size] of jobs) {
  10. const page = await browser.newPage({ viewport: { width: size, height: size } })
  11. const svg = readFileSync(src, 'utf8').replace(/width="\d+" height="\d+"/, `width="${size}" height="${size}"`)
  12. await page.setContent(`<html><body style="margin:0;background:transparent">${svg}</body></html>`)
  13. await page.screenshot({ path: out, omitBackground: true, clip: { x: 0, y: 0, width: size, height: size } })
  14. await page.close()
  15. console.log('wrote', out)
  16. }
  17. await browser.close()