hdr-canvas
Version:
HDR capable HTML canvas
58 lines (48 loc) • 2.45 kB
TypeScript
import { ColorTypes } from 'colorjs.io';
// See https://github.com/microsoft/TypeScript/blob/main/src/lib/dom.generated.d.ts
/// <reference lib="dom" />
type HDRHTMLCanvasOptionsType = "mode";
type HDRHTMLCanvasOptions = { [key in HDRHTMLCanvasOptionsType]?: string };
interface HDRHTMLCanvasElement extends HTMLCanvasElement {
configureHighDynamicRange(options: HDRHTMLCanvasOptions): void;
_getContext(contextId: string, options?: object): RenderingContext | null;
}
interface HDRImageData {
readonly colorSpace: PredefinedColorSpace;
readonly data: Uint8ClampedArray | Uint16Array;
readonly height: number;
readonly width: number;
}
// See https://github.com/w3c/ColorWeb-CG/blob/main/hdr_html_canvas_element.md
// "rec2100-display-linear" is left out beacause of mapping issues
type HDRPredefinedColorSpace = "display-p3" | "srgb" | "rec2100-hlg" | "rec2100-pq";
type Uint16ImagePixelCallback = (red: number, green: number, blue: number, alpha: number) => Uint16Array;
declare class Uint16Image {
height: number;
width: number;
data: Uint16Array;
static DEFAULT_COLORSPACE: HDRPredefinedColorSpace;
static SDR_MULTIPLIER: number;
static COLORSPACES: Record<HDRPredefinedColorSpace, ColorTypes>;
colorSpace: HDRPredefinedColorSpace;
constructor(width: number, height: number, colorspace?: string);
fill(color: number[]): Uint16Image | undefined;
getPixel(w: number, h: number): Uint16Array;
setPixel(w: number, h: number, px: number[]): void;
static scaleUint8ToUint16(val: number): number;
getImageData(): ImageData | null;
static convertPixelToRec2100_hlg(pixel: Uint8ClampedArray): Uint16Array;
static convertArrayToRec2100_hlg(data: Uint8ClampedArray): Uint16Array;
pixelCallback(fn: Uint16ImagePixelCallback): void;
static loadSDRImageData(url: URL): Promise<HDRImageData | undefined>;
static fromImageData(imageData: HDRImageData): Uint16Image;
static fromURL(url: URL): Promise<Uint16Image | undefined>;
setImageData(imageData: HDRImageData): void;
clone(): Uint16Image;
}
declare function checkHDR(): boolean;
declare function checkHDRCanvas(): boolean;
declare function initHDRCanvas(canvas: HDRHTMLCanvasElement): RenderingContext | null;
declare function defaultGetContextHDR(): void;
declare function resetGetContext(): void;
export { Uint16Image, checkHDR, checkHDRCanvas, defaultGetContextHDR, initHDRCanvas, resetGetContext };