Implement everything in terms of an incremental render

This commit is contained in:
2023-07-20 23:55:26 +00:00
parent 7f44243cd0
commit 04d5099338
15 changed files with 521 additions and 596 deletions

View File

@ -1,34 +1,5 @@
import React, { useEffect, useRef } from "react";
import { Renderer, renderFn } from "./0-utility";
export const Canvas: React.FC<{ f: renderFn }> = ({ f }) => {
const canvasRef = useRef<HTMLCanvasElement | null>(null);
let image: ImageData | null = null;
useEffect(() => {
if (canvasRef.current) {
const canvas = canvasRef.current;
const ctx = canvas.getContext("2d");
if (!ctx) {
return;
}
if (
!image ||
image.width !== canvas.width ||
image.height !== canvas.height
) {
image = ctx.createImageData(canvas.width, canvas.height);
}
f(image);
ctx.putImageData(image, 0, 0);
}
});
return <canvas ref={canvasRef} width={400} height={400} />;
};
import { Renderer } from "./0-utility";
export type CanvasParams = {
defaultUrl: string;