mirror of
https://github.com/ful1e5/apple_cursor.git
synced 2025-05-17 16:44:59 -04:00
🎥 Animated cursors render
This commit is contained in:
parent
03de7c6c2e
commit
daa680d6db
1 changed files with 63 additions and 16 deletions
57
src/index.ts
57
src/index.ts
|
@ -3,7 +3,16 @@ import path from "path";
|
||||||
import puppeteer from "puppeteer";
|
import puppeteer from "puppeteer";
|
||||||
|
|
||||||
import { generateRenderTemplate } from "./helpers/htmlTemplate";
|
import { generateRenderTemplate } from "./helpers/htmlTemplate";
|
||||||
import { staticSvgs, bitmapsDir } from "./config";
|
import { staticSvgs, bitmapsDir, svgsDir, animatedCursors } from "./config";
|
||||||
|
|
||||||
|
// --------------------------- Helpers
|
||||||
|
const pad = (number: number, length: number) => {
|
||||||
|
var str = "" + number;
|
||||||
|
while (str.length < length) {
|
||||||
|
str = "0" + str;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
// --------------------------- Main
|
// --------------------------- Main
|
||||||
(async () => {
|
(async () => {
|
||||||
|
@ -13,6 +22,7 @@ import { staticSvgs, bitmapsDir } from "./config";
|
||||||
headless: true,
|
headless: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
// Rendering satic .svg files
|
// Rendering satic .svg files
|
||||||
for (let svg of staticSvgs) {
|
for (let svg of staticSvgs) {
|
||||||
fs.readFile(svg, "utf8", async (error, data) => {
|
fs.readFile(svg, "utf8", async (error, data) => {
|
||||||
|
@ -26,7 +36,6 @@ import { staticSvgs, bitmapsDir } from "./config";
|
||||||
const out = path.resolve(bitmapsDir, bitmap);
|
const out = path.resolve(bitmapsDir, bitmap);
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
try {
|
|
||||||
const page = await browser.newPage();
|
const page = await browser.newPage();
|
||||||
await page.setContent(template);
|
await page.setContent(template);
|
||||||
|
|
||||||
|
@ -39,9 +48,47 @@ import { staticSvgs, bitmapsDir } from "./config";
|
||||||
console.log(`Static Cursor rendered at ${out}`);
|
console.log(`Static Cursor rendered at ${out}`);
|
||||||
|
|
||||||
await page.close();
|
await page.close();
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rendering animated .svg files
|
||||||
|
for (let [svg, { frames }] of Object.entries(animatedCursors)) {
|
||||||
|
fs.readFile(path.resolve(svgsDir, svg), "utf8", async (error, data) => {
|
||||||
|
if (error) throw new Error(`${error}`);
|
||||||
|
|
||||||
|
// Generating HTML Template
|
||||||
|
const template = generateRenderTemplate(data);
|
||||||
|
|
||||||
|
const page = await browser.newPage();
|
||||||
|
await page.setContent(template);
|
||||||
|
|
||||||
|
await page.waitForSelector("#container");
|
||||||
|
const svgElement = await page.$("#container svg");
|
||||||
|
|
||||||
|
if (!svgElement) throw new Error("svg element not found");
|
||||||
|
|
||||||
|
// Render Frames
|
||||||
|
for (let index = 1; index <= frames; index++) {
|
||||||
|
// config
|
||||||
|
const padIndex = pad(index, frames.toString().length);
|
||||||
|
const bitmap =
|
||||||
|
frames == 1
|
||||||
|
? `${path.basename(svg, ".svg")}.png`
|
||||||
|
: `${path.basename(svg, ".svg")}-${padIndex}.png`;
|
||||||
|
|
||||||
|
const out = path.resolve(bitmapsDir, bitmap);
|
||||||
|
|
||||||
|
// Render
|
||||||
|
await svgElement.screenshot({ omitBackground: true, path: out });
|
||||||
|
console.log(`${svg} Rendered ${padIndex}/${frames} `);
|
||||||
|
}
|
||||||
|
|
||||||
|
await page.close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
} finally {
|
||||||
|
console.log("📸 Render Complete");
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue