mirror of
https://github.com/arfct/itty-bitty.git
synced 2026-03-11 08:54:33 +00:00
83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
let script = window.script;
|
|
|
|
function render() {
|
|
let colors = params.body;
|
|
window.canvas = el("canvas.fullbleed", {width:screen.width, height:screen.height});
|
|
window.ctx = canvas.getContext("2d");
|
|
window.w = window.canvas.width
|
|
window.h = window.canvas.height
|
|
document.body.appendChild(
|
|
el("form.toolbar", {onchange: updateDimensions},
|
|
el("select#size",
|
|
el("option", {value:"*"}, "this screen"),
|
|
el("option", {value:"page", selected:"selected"}, "this page"),
|
|
el("option", {value:"1500x500"}, "a cover image"),
|
|
el("option", {value:"1920x1080"}, "a virtual background"),
|
|
el("option", {value:"1600x1600"}, "a square"),
|
|
),
|
|
el("a#save", {href:"#", onclick:saveImage}, "Save")
|
|
)
|
|
);
|
|
document.body.appendChild(window.canvas);
|
|
updateDimensions();
|
|
}
|
|
|
|
function updateDimensions(e) {
|
|
var ua = navigator.userAgent;
|
|
var isMac = /Macintosh/.test(ua)
|
|
var isWin = /Windows/.test(ua)
|
|
var iOS = /iPad|iPhone|iPod/.test(ua)
|
|
|
|
var density = window.devicePixelRatio;
|
|
var sh = screen.height, sw = screen.width;
|
|
if (iOS && Math.abs(window.orientation) == 90) {
|
|
[sw, sh] = [sh, sw]
|
|
}
|
|
|
|
sw *= density; sh *= density;
|
|
|
|
let sizeString = document.querySelector('#size').value || "*";
|
|
// localStorage.setItem("size", sizeString)
|
|
|
|
if (sizeString == "page") { //} || fullbleed) {
|
|
sw = window.innerWidth;
|
|
sh = window.innerHeight;
|
|
sw *= density;
|
|
sh *= density;
|
|
} else if (sizeString != "*") {
|
|
let sizes = sizeString.split("x");
|
|
sw = sizes[0]
|
|
sh = sizes[1] || sw
|
|
density = 2;
|
|
}
|
|
canvas.width = window.w = sw;
|
|
canvas.height = window.h = sh;
|
|
redraw();
|
|
}
|
|
|
|
function redraw() {
|
|
eval(params.body);
|
|
console.log("params", params)
|
|
}
|
|
|
|
|
|
|
|
function saveImage(e) {
|
|
let target = e.target;
|
|
target.href = window.canvas.toDataURL("image/png");
|
|
target.download = "title.png";
|
|
|
|
// window.canvas.toBlob(function(blob) {
|
|
// window.URL.revokeObjectURL(blobURL);
|
|
// blobURL = window.URL.createObjectURL(blob);
|
|
// target.href = blobURL;
|
|
// });
|
|
}
|
|
|
|
var path = script.substring(0, script.lastIndexOf("."));
|
|
var cssURL = path + ".css";
|
|
Promise.all([
|
|
loadSyle(cssURL)
|
|
]).then(render);
|
|
|
|
|