UNPKG

sixel

Version:

Sixel image format for node and browser.

151 lines (150 loc) 4.37 kB
/** * Copyright (c) 2019 Joerg Breitbart. * @license MIT */ /** * This type denotes the byte order for 32 bit color values. * The resulting word order depends on the system endianess: * - big endian - RGBA32 * - little endian - ABGR32 * * Use `toRGBA8888` and `fromRGBA8888` to convert the color values * respecting the system endianess. * * Note: BE handling got removed from the library, thus this type * will always contain ABGR32. */ export declare type RGBA8888 = number; /** * Unsigned typed array supported by `Decoder.decode`. */ export declare type UintTypedArray = Uint8Array | Uint16Array | Uint32Array; /** * RGB color as array of channels (without alpha channel). */ export declare type RGBColor = [number, number, number]; /** * Return value from internal quantizer. */ export interface IQuantResult { /** image data as palette indices (max. 2^16 colors supported) */ indices: Uint16Array; /** array with quantized colors */ palette: number[]; } /** * Decoder options. */ export interface IDecoderOptions { /** * Maximum memory in bytes a decoder instance is allowed to allocate during decoding. * Exceeding this value will reset the decoder (abort current decoding + release memory) * and throw an exception. * The default of 256 MB is chosen rather high as an emergency stop. * Setting this to 0 will skip the memory checks. */ memoryLimit?: number; /** * Standard sixel foreground color (default: white). * This color should have a high contrast to the background fill color. * The value can be overridden for individual images at `init`. */ sixelColor?: RGBA8888; /** * Standard background fill color (default: black). * This color should have a high contrast to the sixel foreground color. * The value can be overridden for individual images at `init`. */ fillColor?: RGBA8888; /** * Standard palette to be used by the decoder. * Default is 16-color palette of VT340 (PALETTE_VT340_COLOR). */ palette?: Uint32Array; /** * Standard palette size limit. * Color registers in image data exceeding this value will be mapped back with modulo. * Default is 256, as suggest by the specification. * Maximum is the wasm compile time setting PALETTE_SIZE (default: 4096). */ paletteLimit?: number; /** * Whether to allow truncating of the image to given dimensions from raster attributes. * This setting only applies to images, that follow the level 2 format. * Default is true. */ truncate?: boolean; } /** * Return type of decode and decodeAsync. */ export interface IDecodeResult { width: number; height: number; data32: Uint32Array; data8: Uint8ClampedArray; } export interface IDecoderProperties { width: number; height: number; mode: ParseMode; level: number; truncate: boolean; paletteLimit: number; fillColor: RGBA8888; memUsage: number; rasterAttributes: { numerator: number; denominator: number; width: number; height: number; }; } /** * Internal types. */ export declare type IDecoderOptionsInternal = { [P in keyof IDecoderOptions]-?: IDecoderOptions[P]; }; export interface InstanceLike extends WebAssembly.Instance { module?: WebAssembly.Module; instance?: WebAssembly.Instance; } export declare const enum ParseMode { M0 = 0, M1 = 1, M2 = 2 } export interface IWasmDecoderExports extends Record<string, WebAssembly.ExportValue> { memory: WebAssembly.Memory; get_state_address(): number; get_chunk_address(): number; get_p0_address(): number; get_palette_address(): number; init(sixelColor: number, fillColor: number, paletteLimit: number, truncate: number): void; decode(start: number, end: number): void; current_width(): number; current_height(): number; } export interface IWasmDecoder extends WebAssembly.Instance { exports: IWasmDecoderExports; } /** * OLD (to be removed) */ export declare const enum SixelState { DATA = 0, COMPRESSION = 1, ATTR = 2, COLOR = 3 } export declare const enum SixelAction { IGNORE = 0, DRAW = 1, CR = 2, LF = 3, REPEATED_DRAW = 4, STORE_PARAM = 5, SHIFT_PARAM = 6, APPLY_PARAM = 7 }