workaround large canvas label failures in firefox. update webgl renderer retrieval

This commit is contained in:
Stewart Allen 2022-08-21 11:26:56 -04:00
commit 2dcd8e8e47

View file

@ -376,7 +376,12 @@ gapp.register("moto.space", [], (root, exports) => {
canvas.width = w * scale; canvas.width = w * scale;
canvas.height = h * scale; canvas.height = h * scale;
try {
context.scale(scale, scale); context.scale(scale, scale);
} catch (e) {
console.log('unable to create label canvas', e ? e.name : 'unknown');
return {};
}
context.fillStyle = color || fontColor; context.fillStyle = color || fontColor;
context.font = `${size}px sans-serif`; context.font = `${size}px sans-serif`;
context.textAlign = textAlign; context.textAlign = textAlign;
@ -426,6 +431,7 @@ gapp.register("moto.space", [], (root, exports) => {
canvas = canvasInMesh(x + xPadding, labelSize * 3, 'center', 'top', rulerColor, labelSize), canvas = canvasInMesh(x + xPadding, labelSize * 3, 'center', 'top', rulerColor, labelSize),
context = canvas.context, context = canvas.context,
mesh = canvas.mesh; mesh = canvas.mesh;
if (!(context && mesh)) return;
for (let i = 0; i >= ruler.x1; i -= grid.unitMajor) { for (let i = 0; i >= ruler.x1; i -= grid.unitMajor) {
context.fillText((i * factor).round(1).toString(), ruler.xo + i + xPadding / 2, 0); context.fillText((i * factor).round(1).toString(), ruler.xo + i + xPadding / 2, 0);
@ -445,6 +451,7 @@ gapp.register("moto.space", [], (root, exports) => {
canvas = canvasInMesh(labelSize * 4, y + yPadding, 'end', 'middle', rulerColor, labelSize), canvas = canvasInMesh(labelSize * 4, y + yPadding, 'end', 'middle', rulerColor, labelSize),
context = canvas.context, context = canvas.context,
mesh = canvas.mesh; mesh = canvas.mesh;
if (!(context && mesh)) return;
for (let i = 0; i >= ruler.y1; i -= grid.unitMajor) { for (let i = 0; i >= ruler.y1; i -= grid.unitMajor) {
context.fillText((i * factor).round(1), labelSize * 4, y - (ruler.yo + i) + yPadding / 2); context.fillText((i * factor).round(1), labelSize * 4, y - (ruler.yo + i) + yPadding / 2);
@ -1375,15 +1382,13 @@ gapp.register("moto.space", [], (root, exports) => {
animate(); animate();
const ctx = renderer.getContext(); const ctx = renderer.getContext();
const ext = ctx.getExtension('WEBGL_debug_renderer_info');
Space.info = { Space.info = {
ver: ctx.getParameter(ctx.VERSION), ver: ctx.getParameter(ctx.VERSION),
ven: ctx.getParameter(ctx.VENDOR), ven: ctx.getParameter(ctx.VENDOR),
glr: ctx.getParameter(ext.UNMASKED_RENDERER_WEBGL), glr: ctx.getParameter(ctx.RENDERER),
// glv: ctx.getParameter(ext.UNMASKED_VENDOR_WEBGL),
pla: nav.platform pla: nav.platform
}, };
initialized = true; initialized = true;
} }