dileep-canvas
v0.0.1
Published
Canvas utilities
Downloads
5
Readme
dileep-canvas
Install
npm i dileep-canvas
then,
import { createCanvas, ... } from "dileep-canvas"
Functions
Documentation is updated for 0.10.0
.
Note: drawing functions up to
0.7.1
has now moved todileep-draw
.
createCanvas
const createCanvas: ({
parent,
context,
width,
height,
pixelRatio,
scaleContext,
attributes,
offscreen,
}: {
parent?: string | Element | undefined;
context?: "2d" | "webgl" | "webgl2" | undefined;
width: number;
height: number;
pixelRatio?: number | undefined;
scaleContext?: boolean | undefined;
attributes?:
| CanvasRenderingContext2DSettings
| WebGLContextAttributes
| undefined;
offscreen?: boolean | undefined;
}) => {
canvas: HTMLCanvasElement | OffscreenCanvas;
context:
| CanvasRenderingContext2D
| WebGLRenderingContext
| WebGL2RenderingContext
| OffscreenCanvasRenderingContext2D;
gl?: WebGLRenderingContext | WebGL2RenderingContext | undefined;
width: number;
height: number;
};
Create a new canvas and return { canvas, context, gl?, width, height }
.
It takes an optional parent
parameter. The parent can be either string
(will be used for querySelector()
) or Element
. Returned width
and height
may not be the same as canvas.width
and canvas.height
due to pixelRatio
scaling.
context
supports 2d
, webgl
or webgl2
and creates a proper context. When webgl
context is created, gl
object will also be returned. Internally, gl.viewport()
is called to scale context according to pixelRatio
parameter.
When offscreen
is true
, the canvas will not be attached to document. It still creates a regular HTMLCanvasElement
. For a real offscreen canvas, use createOffscreenCanvas()
.
Returned context
may ber 2d
or webgl
, return type assertions are needed when calling createCanvas()
. See demos for how to use.
createOffscreenCanvas
const createOffscreenCanvas: ({
context,
width,
height,
pixelRatio,
scaleContext,
attributes,
}: {
context: "2d" | "webgl" | "webgl2";
width: number;
height: number;
pixelRatio?: number | undefined;
scaleContext?: boolean | undefined;
attributes?:
| CanvasRenderingContext2DSettings
| WebGLContextAttributes
| undefined;
}) => {
canvas: HTMLCanvasElement | OffscreenCanvas;
context:
| CanvasRenderingContext2D
| WebGLRenderingContext
| WebGL2RenderingContext
| OffscreenCanvasRenderingContext2D;
gl?: WebGLRenderingContext | WebGL2RenderingContext | undefined;
width: number;
height: number;
};
Creates an OffscreenCanvas
.
resizeCanvas
const resizeCanvas: ({
canvas,
context,
width,
height,
pixelRatio,
scaleContext,
attributes,
}: {
canvas: HTMLCanvasElement | OffscreenCanvas;
context: "2d" | "webgl" | "webgl2";
width: number;
height: number;
pixelRatio?: number | undefined;
scaleContext?: boolean | undefined;
attributes?:
| CanvasRenderingContext2DSettings
| WebGLContextAttributes
| undefined;
}) => {
canvas: HTMLCanvasElement | OffscreenCanvas;
context:
| CanvasRenderingContext2D
| WebGLRenderingContext
| WebGL2RenderingContext
| OffscreenCanvasRenderingContext2D;
gl?: WebGLRenderingContext | WebGL2RenderingContext | undefined;
width: number;
height: number;
};
Resize canvas and return data { canvas, context, gl?, width, height }
. When scaleContext=true
, it also scale the context to pixelRatio
.
setupCanvas
const setupCanvas: ({
parent,
canvas,
width,
height,
pixelRatio,
}: {
parent?: string | Element | undefined;
canvas: HTMLCanvasElement;
width: number;
height: number;
pixelRatio?: number | undefined;
}) => {
canvas: HTMLCanvasElement;
width: number;
height: number;
pixelRatio: number;
};
Example
See the demo in demo/demo.ts
.
License
MIT