Compare commits
2 commits
236d612c20
...
ab7f576dea
| Author | SHA1 | Date | |
|---|---|---|---|
| ab7f576dea | |||
| 563c0d3e29 |
5 changed files with 56 additions and 12 deletions
|
|
@ -1,4 +1,3 @@
|
||||||
import { BrushPreview } from "rkgk/brush-preview.js";
|
|
||||||
import { Haku } from "rkgk/haku.js";
|
import { Haku } from "rkgk/haku.js";
|
||||||
import { randomId } from "rkgk/random.js";
|
import { randomId } from "rkgk/random.js";
|
||||||
import { SaveData } from "rkgk/framework.js";
|
import { SaveData } from "rkgk/framework.js";
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,63 @@
|
||||||
export class BrushPreview extends HTMLElement {
|
import { BrushRenderer } from "rkgk/brush-renderer.js";
|
||||||
constructor(width, height) {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.width = width;
|
export class BrushPreview extends HTMLElement {
|
||||||
this.height = height;
|
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() {
|
#updateCanvasSize() {
|
||||||
// TODO
|
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) {
|
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" };
|
return { status: "ok" };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,6 @@ export class AtlasAllocator {
|
||||||
|
|
||||||
gl.bindBuffer(gl.ARRAY_BUFFER, this.compositeRectVbo);
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.compositeRectVbo);
|
||||||
gl.bufferData(gl.ARRAY_BUFFER, this.compositeRectData, gl.DYNAMIC_DRAW);
|
gl.bufferData(gl.ARRAY_BUFFER, this.compositeRectData, gl.DYNAMIC_DRAW);
|
||||||
console.log(this.compositeRectData.byteLength);
|
|
||||||
|
|
||||||
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.compositeRectIbo);
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.compositeRectIbo);
|
||||||
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, compositeRectIndices, gl.DYNAMIC_DRAW);
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, compositeRectIndices, gl.DYNAMIC_DRAW);
|
||||||
|
|
|
||||||
|
|
@ -287,7 +287,7 @@ function readUrl(urlString) {
|
||||||
|
|
||||||
let data = new Blob(dataParts);
|
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);
|
session.sendEdit(editRecords, data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ export class Layer {
|
||||||
let blob = canvas.convertToBlob({ type: "image/png" });
|
let blob = canvas.convertToBlob({ type: "image/png" });
|
||||||
|
|
||||||
let end = performance.now();
|
let end = performance.now();
|
||||||
console.log("encoding image took", end - start, "ms");
|
console.debug("encoding image took", end - start, "ms");
|
||||||
encodeTime += end - start;
|
encodeTime += end - start;
|
||||||
|
|
||||||
return blob;
|
return blob;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue