75 lines
2 KiB
JavaScript
75 lines
2 KiB
JavaScript
/* eslint-env node, browser */
|
|
|
|
const windowWidth = window.innerWidth;
|
|
const windowHeight = window.innerHeight;
|
|
const dpi = window.devicePixelRatio;
|
|
const ipc = require("electron").ipcRenderer;
|
|
const packagingTasks = require("./packaging-tasks.json");
|
|
|
|
let onScroll = function () {};
|
|
ipc.on("scroll", function () {
|
|
onScroll.apply(this, arguments);
|
|
setTimeout(function () {
|
|
ipc.send("snapshot", "scroll-done");
|
|
}, 500);
|
|
});
|
|
let onComplete = function () {};
|
|
ipc.on("complete", function () {
|
|
onComplete.apply(this, arguments);
|
|
});
|
|
|
|
function captureElement(options, callback) {
|
|
window.scroll(0, 0);
|
|
setTimeout(function () {
|
|
const element = document.querySelector(options.el);
|
|
if (options.applyClass) element.className = options.applyClass;
|
|
if (options.applyFeature) element.style = "font-feature-settings:" + options.applyFeature;
|
|
|
|
const rect = element.getBoundingClientRect();
|
|
onScroll = function (event, arg) {
|
|
window.scrollTo(0, arg);
|
|
};
|
|
onComplete = function () {
|
|
if (callback) callback();
|
|
onComplete = function () {};
|
|
};
|
|
ipc.send("snapshot", {
|
|
name: options.name,
|
|
windowWidth: windowWidth,
|
|
windowHeight: windowHeight,
|
|
doubleTrim: options.doubleTrim,
|
|
dpi: dpi,
|
|
x: rect.left | 0,
|
|
y: rect.top | 0,
|
|
width: rect.width | 0,
|
|
height: rect.height | 0
|
|
});
|
|
}, 10);
|
|
}
|
|
|
|
window.onload = function () {
|
|
const snapshotTasks = [
|
|
{ el: "#languages", name: "languages" },
|
|
{ el: "#stylesets", name: "stylesets" },
|
|
{ el: "#charvars", name: "charvars" },
|
|
{ el: "#matrix", name: "matrix" },
|
|
{ el: "#previews", name: "preview-all" },
|
|
{ el: "#weights", name: "weights" },
|
|
{ el: "#ligations", name: "ligations", doubleTrim: "white" },
|
|
...packagingTasks
|
|
];
|
|
let current = 0;
|
|
const step = function () {
|
|
const doit = function () {
|
|
captureElement(snapshotTasks[current], function () {
|
|
current += 1;
|
|
if (current >= snapshotTasks.length) window.close();
|
|
else setTimeout(step, 100);
|
|
});
|
|
};
|
|
setTimeout(doit, 100);
|
|
};
|
|
ipc.send("snapshot", "i am ready");
|
|
console.log("I AM READY");
|
|
setTimeout(step, 2000);
|
|
};
|