diff --git a/static/brush-box.js b/static/brush-box.js index 78baefb..27c47e7 100644 --- a/static/brush-box.js +++ b/static/brush-box.js @@ -1,4 +1,3 @@ -import { BrushPreview } from "rkgk/brush-preview.js"; import { Haku } from "rkgk/haku.js"; import { randomId } from "rkgk/random.js"; import { SaveData } from "rkgk/framework.js"; diff --git a/static/brush-preview.js b/static/brush-preview.js index cca3150..4851f63 100644 --- a/static/brush-preview.js +++ b/static/brush-preview.js @@ -1,17 +1,63 @@ -export class BrushPreview extends HTMLElement { - constructor(width, height) { - super(); +import { BrushRenderer } from "rkgk/brush-renderer.js"; - this.width = width; - this.height = height; +export class BrushPreview extends HTMLElement { + connectedCallback() { + this.canvas = this.appendChild(document.createElement("canvas")); + this.gl = this.canvas.getContext("webgl2"); + + this.brushRenderer = new BrushRenderer(this.gl, this.canvasSource()); + + let resizeObserver = new ResizeObserver(() => this.#updateCanvasSize()); + resizeObserver.observe(this); + this.#updateCanvasSize(); } - connectedCallback() { - // TODO + #updateCanvasSize() { + this.canvas.width = this.clientWidth; + this.canvas.height = this.clientHeight; + this.dispatchEvent(new Event(".pixmapLost")); + } + + canvasSource() { + let canvas = this.canvas; + return { + useCanvas(gl, id) { + let viewport = { x: 0, y: 0, width: canvas.width, height: canvas.height }; + gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height); + return viewport; + }, + + resetCanvas(gl) {}, + }; } async #renderBrushInner(haku) { - // TODO + let gl = this.gl; + + gl.clearColor(0, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT); + + let canvas = this.canvas; + let result = await haku.evalBrush({ + runDotter: async () => { + return { + fromX: canvas.width / 2, + fromY: canvas.height / 2, + toX: canvas.width / 2, + toY: canvas.height / 2, + num: 0, + }; + }, + + runScribble: async (renderToCanvas) => { + return renderToCanvas(this.brushRenderer, 0, 0, 0); + }, + }); + + if (result.status != "ok") { + return { status: "error", phase: "eval", result }; + } + return { status: "ok" }; } diff --git a/static/chunk-allocator.js b/static/chunk-allocator.js index 12c60e5..e353cdd 100644 --- a/static/chunk-allocator.js +++ b/static/chunk-allocator.js @@ -177,7 +177,6 @@ export class AtlasAllocator { gl.bindBuffer(gl.ARRAY_BUFFER, this.compositeRectVbo); gl.bufferData(gl.ARRAY_BUFFER, this.compositeRectData, gl.DYNAMIC_DRAW); - console.log(this.compositeRectData.byteLength); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.compositeRectIbo); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, compositeRectIndices, gl.DYNAMIC_DRAW); diff --git a/static/index.js b/static/index.js index 856c4aa..ac04d96 100644 --- a/static/index.js +++ b/static/index.js @@ -287,7 +287,7 @@ function readUrl(urlString) { let data = new Blob(dataParts); - console.log("sending edit data. record count:", editRecords.length, "data blob:", data); + console.debug("sending edit data. record count:", editRecords.length, "data blob:", data); session.sendEdit(editRecords, data); }); diff --git a/static/wall.js b/static/wall.js index 33da1ed..b2aefa1 100644 --- a/static/wall.js +++ b/static/wall.js @@ -89,7 +89,7 @@ export class Layer { let blob = canvas.convertToBlob({ type: "image/png" }); let end = performance.now(); - console.log("encoding image took", end - start, "ms"); + console.debug("encoding image took", end - start, "ms"); encodeTime += end - start; return blob;