UNPKG

@opentui/core

Version:

OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)

108 lines (107 loc) 3.68 kB
import { type ImageHandle } from "./zig.js"; export type ImageFormat = "png" | "raw-rgba" | "jpeg" | "webp" | "gif"; export type ImageColorStatus = "assumed-srgb" | "explicit-srgb"; export type ResizeKernel = "default" | "area" | "triangle" | "cubic-bspline" | "catmull-rom" | "mitchell" | "nearest"; export type BlendMode = "source-over" | "source" | "destination-over"; export type PixelFormat = "rgba8" | "bgra8"; export type ImageSource = string | URL | Uint8Array | ArrayBuffer | Blob | Response; export type ImageLoadErrorCode = "file-read" | "network" | "http-status" | "unsupported-url-scheme"; export declare class ImageLoadError extends Error { readonly code: ImageLoadErrorCode; readonly source: string; readonly status?: number; constructor(code: ImageLoadErrorCode, source: string, message: string, options?: { cause?: unknown; status?: number; }); } export interface ImageLoadOptions { signal?: AbortSignal; fetch?: (input: URL, init?: RequestInit) => Promise<Response>; } export interface ImageInfo { width: number; height: number; sourceWidth: number; sourceHeight: number; format: ImageFormat; colorStatus: ImageColorStatus; orientation: number; hasAlpha: boolean; } export interface ResizeOptions { width?: number; height?: number; kernel?: ResizeKernel; } export interface ExtractOptions { left: number; top: number; width: number; height: number; } export interface ExtendOptions { top?: number; right?: number; bottom?: number; left?: number; background?: readonly [number, number, number, number]; } export interface CompositeOptions { left?: number; top?: number; blend?: BlendMode; opacity?: number; } export interface RawImage { data: Uint8Array; width: number; height: number; stride: number; format: PixelFormat; colorSpace: "srgb"; alpha: "straight"; } export interface OwnedRawImage extends RawImage { dispose(): void; } export type ImageErrorCode = "invalid-handle" | "unsupported-format" | "unsupported-color-space" | "malformed-data" | "dimension-limit" | "memory-limit" | "invalid-argument" | "out-of-memory" | "output-too-small" | "internal-error" | "unsupported-feature"; export declare class ImageError extends Error { readonly code: ImageErrorCode; readonly status: number; constructor(status: number); } export declare function imageInfo(data: Uint8Array | ArrayBuffer): ImageInfo; export declare class NativeImage { private readonly lib; private handle; private imageInfo; private constructor(); static decode(data: Uint8Array | ArrayBuffer): NativeImage; static load(source: ImageSource, options?: ImageLoadOptions): Promise<NativeImage>; static fromRgba(pixels: Uint8Array, width: number, height: number, stride?: number): NativeImage; private static fromHandle; private guard; get ptr(): ImageHandle; private wrap; info(): ImageInfo; get width(): number; get height(): number; clone(): NativeImage; retain(): NativeImage; resize(options: ResizeOptions): NativeImage; extract(options: ExtractOptions): NativeImage; extend(options?: ExtendOptions): NativeImage; rotate(angle: 90 | 180 | 270): NativeImage; flip(): NativeImage; flop(): NativeImage; composite(overlay: NativeImage, options?: CompositeOptions): NativeImage; ensureEncodedPng(): void; raw(format?: PixelFormat): RawImage; takeRaw(): OwnedRawImage; copyTo(destination: Uint8Array, options?: { stride?: number; format?: PixelFormat; }): void; dispose(): void; }