@thi.ng/pixel
Version:
Typedarray integer & float pixel buffers w/ customizable formats, blitting, drawing, convolution
89 lines • 4.24 kB
TypeScript
import type { Fn2, FnN2, ICopy, IEmpty, NumericArray, Range0_3 } from "@thi.ng/api";
import type { BlendFnFloat, BlitCanvasOpts, BlitOpts, Filter, FloatFormat, FloatFormatSpec, FloatSampler, IBlend, IBlit, IInvert, IPixelBuffer, IResizable, IRotate, ISetImageData, IToImageData, IntFormat } from "./api.js";
import { IntBuffer } from "./int.js";
/**
* Syntax sugar for {@link FloatBuffer} ctor.
*
* @param w -
* @param h -
* @param fmt -
* @param data -
*/
export declare function floatBuffer(w: number, h: number, fmt?: FloatFormat | FloatFormatSpec, data?: Float32Array): FloatBuffer;
export declare function floatBuffer(src: IntBuffer, fmt?: FloatFormat | FloatFormatSpec): FloatBuffer;
/**
* Creates a new `FloatBuffer` from given {@link IntBuffer} and using
* provided {@link FloatFormat}.
*
* @remarks
* See {@link FloatBuffer.as} for reverse operation.
*
* @param src -
* @param fmt -
*
* @deprecated use `IntBuffer.as(float_format)` instead
*/
export declare const floatBufferFromInt: (src: IntBuffer, fmt?: FloatFormat | FloatFormatSpec) => FloatBuffer;
export declare const floatBufferFromImage: (img: HTMLImageElement, fmt?: FloatFormat, width?: number, height?: number | undefined) => FloatBuffer;
export declare const floatBufferFromCanvas: (canvas: HTMLCanvasElement | OffscreenCanvas, fmt?: FloatFormat) => FloatBuffer;
export declare class FloatBuffer implements IPixelBuffer<Float32Array, NumericArray>, IBlend<FloatBuffer, BlendFnFloat>, IBlit<FloatBuffer>, ICopy<FloatBuffer>, IEmpty<FloatBuffer>, IInvert<FloatBuffer>, IResizable<FloatBuffer, FloatSampler>, IRotate<FloatBuffer>, ISetImageData, IToImageData {
readonly size: [number, number];
readonly stride: [number, number];
format: FloatFormat;
data: Float32Array;
protected __empty: NumericArray;
constructor(w: number, h: number, fmt?: FloatFormat | FloatFormatSpec, data?: Float32Array);
/** @deprecated use `.data` instead */
get pixels(): Float32Array<ArrayBufferLike>;
get width(): number;
get height(): number;
get offset(): number;
get dim(): 2;
[Symbol.iterator](): Generator<Float32Array<ArrayBufferLike>, void, unknown>;
as(fmt: IntFormat): IntBuffer;
as(fmt: FloatFormat): FloatBuffer;
copy(): FloatBuffer;
empty(): FloatBuffer;
order(): number[];
includes(x: number, y: number): boolean;
indexAt(x: number, y: number): number;
indexAtUnsafe(x: number, y: number): number;
getAt(x: number, y: number): NumericArray;
getAtUnsafe(x: number, y: number): Float32Array<ArrayBufferLike>;
setAt(x: number, y: number, col: NumericArray): boolean;
setAtUnsafe(x: number, y: number, col: NumericArray): boolean;
getChannelAt(x: number, y: number, id: number): number | undefined;
setChannelAt(x: number, y: number, id: number, col: number): this;
getChannel(id: number): FloatBuffer;
setChannel(id: number, src: FloatBuffer | number): this;
blend(op: BlendFnFloat, dest: FloatBuffer, opts?: Partial<BlitOpts>): FloatBuffer;
blit(dest: FloatBuffer, opts?: Partial<BlitOpts>): FloatBuffer;
blitCanvas(canvas: HTMLCanvasElement | CanvasRenderingContext2D | OffscreenCanvas | OffscreenCanvasRenderingContext2D, opts?: Partial<BlitCanvasOpts>): void;
setImageData(idata: ImageData): this;
toImageData(idata?: ImageData): ImageData;
getRegion(x: number, y: number, width: number, height: number): FloatBuffer | undefined;
forEach(f: Fn2<NumericArray, number, NumericArray>): this;
fill(x: NumericArray): void;
premultiply(): this;
postmultiply(): this;
isPremultiplied(): boolean;
clamp(): this;
clampChannel(id: number): void;
flipX(): this;
/**
* Flips image vertically.
*/
flipY(): this;
rotateByID(id: Range0_3): this;
rotateCW(): this;
rotateCCW(): this;
rotate180(): this;
invert(): this;
scale(scale: number, sampler?: FloatSampler | Filter): FloatBuffer;
resize(w: number, h: number, sampler?: FloatSampler | Filter): FloatBuffer;
upsize(): FloatBuffer;
protected _rotate(idxFn: FnN2): void;
protected ensureFormat(dest: FloatBuffer): void;
protected ensureRGBA(): void;
}
//# sourceMappingURL=float.d.ts.map