poshlostios/app/mxwm/zcom.js

88 lines
1.8 KiB
JavaScript

function hasGraphicsImplementation() {
return true
}
/** returns wid and context */
function createWindow(options) {
let canvas = document.createElement("canvas")
let win = {
"title": options["title"],
"x": options["x"] || 0,
"y": options["y"] || 0,
"width": options["width"] || options["w"] || 200,
"height": options["height"] || options["h"] || 200,
"wid": Date.now().toString() + Math.round(Math.random() * 100).toString(),
"on_signal": options["on_signal"] || options["callback"] || (o => {})
}
canvas.width = win["width"].toString()
canvas.height = win["height"].toString()
let context = canvas.getContext("2d")
win["canvas"] = canvas
win["context"] = context
if ("mxwm_windows" in window) {
window.mxwm_windows.push(win)
} else {
window.mxwm_windows = [ win ]
}
}
function moveWindow(wid, x, y, w, h) {
if (!("mxwm_windows" in window)) {
window.mxwm_windows = [ ]
}
for (const win of window.mxwm_windows) {
if (win["wid"] == wid) {
win.x = x
win.y = y
win.width = w
win.height = h
}
}
}
function signalWindow(wid, signal) {
if (!("mxwm_windows" in window)) {
window.mxwm_windows = [ ]
}
for (const win of window.mxwm_windows) {
if (win["wid"] == wid) {
win.on_signal(signal)
}
}
}
function closeWindow(wid) {
if (!("mxwm_windows" in window)) {
window.mxwm_windows = [ ]
}
window.mxwm_windows = window.mxwm_windows.filter(o => o.wid != wid)
}
function getWindow(wid) {
if (!("mxwm_windows" in window)) {
window.mxwm_windows = [ ]
}
for (const win of window.mxwm_windows) {
if (win["wid"] == wid) {
return win
}
}
return null
}
function listWindows() {
if (!("mxwm_windows" in window)) {
window.mxwm_windows = [ ]
}
return window.mxwm_windows
}