fix: bugfixes so its clean

typescript_changes
flop 2 weeks ago
parent a6fbd31320
commit 6871748164
  1. 26
      ts-editor/src/browser.ts

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

Loading…
Cancel
Save