fix: bugfixes so its clean

backup
flop 2 weeks ago
parent 6370191553
commit ed4456b7a5
  1. 26
      ts-editor/src/browser.ts

@ -424,8 +424,8 @@ function triggerPreview() {
function buildPreview() {
if (!(window as any)._mdDriver)
window._mdDriver = new MonoDisplayDriver("canvas_root", { onColor: "#EC0", offColor: "#000", fps: 25 });
window._mdDriver.load(() => Promise.resolve(file.toBuffer()));
(window as any)._mdDriver = new MonoDisplayDriver("canvas_root", { onColor: "#EC0", offColor: "#000", fps: 25 });
(window as any)._mdDriver.load(() => Promise.resolve(file.toBuffer()));
}
// --- Load / Export -----------------------------------------------------------
@ -514,9 +514,10 @@ function drawPixelCanvas(canvas: HTMLCanvasElement, img: MonoFormatPixelImage) {
interface PixelCanvasState { drawing: boolean; drawValue: number; }
const PixelCanvas: m.Component<{ img: MonoFormatPixelImage; onpaint: () => void }, PixelCanvasState> = {
drawing: false,
drawValue: 1,
oninit(vnode) {
vnode.state.drawing = false;
vnode.state.drawValue = 1;
},
view({ attrs: { img, onpaint }, state }) {
function pixelFromEvent(e: MouseEvent): { x: number; y: number } | null {
const canvas = e.currentTarget as HTMLCanvasElement;
@ -585,10 +586,10 @@ const PixelCanvas: m.Component<{ img: MonoFormatPixelImage; onpaint: () => void
img.height = h;
// then read imageData from the scaled offscreen canvas as before
img.pixels = new Uint8Array(w * h).map((_, i) => {
const r = imageData.data[i * 4];
const g = imageData.data[i * 4 + 1];
const b = imageData.data[i * 4 + 2];
const a = imageData.data[i * 4 + 3];
const r = imageData.data[i * 4] || 0;
const g = imageData.data[i * 4 + 1] || 0;
const b = imageData.data[i * 4 + 2] || 0;
const a = imageData.data[i * 4 + 3] || 0;
// transparent = 0, dark pixels = 1, light pixels = 0
return a > 128 && (r * 299 + g * 587 + b * 114) < 128_000 ? 0 : 1;
});
@ -623,8 +624,9 @@ const Image2DEditor: m.Component<{ si: number; ei: number; el: MonoFormatImage2D
interface AnimationEditorState { activeFrame: number; }
const AnimationEditor: m.Component<{ si: number; ei: number; el: MonoFormatAnimation }, AnimationEditorState> = {
activeFrame: 0,
oninit(vnode) {
vnode.state.activeFrame = 0;
},
view({ attrs: { si, ei, el }, state }) {
const w = el.width || W;
const h = el.height || H;
@ -667,7 +669,7 @@ const AnimationEditor: m.Component<{ si: number; ei: number; el: MonoFormatAnima
m("button.add-el", { onclick: addFrame }, "+ frame"),
),
m("div", { key: state.activeFrame },
m(PixelCanvas, {
m(PixelCanvas as any, {
img: frame,
onpaint: () => { markDirty(); triggerPreview(); },
}),

Loading…
Cancel
Save