image-in-browser
Version:
Package for encoding / decoding images, transforming images, applying filters, drawing primitives on images on the client side (no need for server Node.js)
273 lines (272 loc) • 8.49 kB
TypeScript
/** @format */
import { Channel } from '../color/channel.js';
import { Color, ColorConvertOptions } from '../color/color.js';
import { Format } from '../color/format.js';
import { MemoryImage } from './image.js';
import { MemoryImageDataUint2 } from './image-data-uint2.js';
import { Palette } from './palette.js';
import { Pixel } from './pixel.js';
/**
* Represents a pixel in a 2-bit memory image.
*/
export declare class PixelUint2 implements Pixel, Iterable<Pixel>, Iterator<Pixel> {
private _index;
private _bitIndex;
private _rowOffset;
private readonly _image;
/**
* Gets the image data associated with this pixel.
*/
get image(): MemoryImageDataUint2;
private _x;
/**
* Gets the x-coordinate of the pixel.
*/
get x(): number;
private _y;
/**
* Gets the y-coordinate of the pixel.
*/
get y(): number;
/**
* Gets the normalized x-coordinate of the pixel.
*/
get xNormalized(): number;
/**
* Gets the normalized y-coordinate of the pixel.
*/
get yNormalized(): number;
/**
* Gets or sets the index of the pixel.
*/
get index(): number;
set index(i: number);
/**
* Gets the raw data of the image.
*/
get data(): Uint8Array;
/**
* Checks if the pixel is within the valid range of the image.
*/
get isValid(): boolean;
/**
* Gets the width of the image.
*/
get width(): number;
/**
* Gets the height of the image.
*/
get height(): number;
/**
* Gets the number of channels in the pixel.
*/
get length(): number;
/**
* Gets the number of channels in the image.
*/
get numChannels(): number;
/**
* Gets the maximum value for any channel in the image.
*/
get maxChannelValue(): number;
/**
* Gets the maximum index value for the image.
*/
get maxIndexValue(): number;
/**
* Gets the format of the image.
*/
get format(): Format;
/**
* Checks if the image is in LDR format.
*/
get isLdrFormat(): boolean;
/**
* Checks if the image is in HDR format.
*/
get isHdrFormat(): boolean;
/**
* Checks if the image has a palette.
*/
get hasPalette(): boolean;
/**
* Gets the palette associated with the image, if any.
*/
get palette(): Palette | undefined;
/**
* Gets or sets the red channel value.
*/
get r(): number;
set r(r: number);
/**
* Gets or sets the green channel value.
*/
get g(): number;
set g(g: number);
/**
* Gets or sets the blue channel value.
*/
get b(): number;
set b(b: number);
/**
* Gets or sets the alpha channel value.
*/
get a(): number;
set a(a: number);
/**
* Gets or sets the normalized red channel value.
*/
get rNormalized(): number;
set rNormalized(v: number);
/**
* Gets or sets the normalized green channel value.
*/
get gNormalized(): number;
set gNormalized(v: number);
/**
* Gets or sets the normalized blue channel value.
*/
get bNormalized(): number;
set bNormalized(v: number);
/**
* Gets or sets the normalized alpha channel value.
*/
get aNormalized(): number;
set aNormalized(v: number);
/**
* Gets the luminance of the pixel.
*/
get luminance(): number;
/**
* Gets the normalized luminance of the pixel.
*/
get luminanceNormalized(): number;
/**
* Gets the bits per pixel.
*/
get bitsPerPixel(): number;
/**
* Constructs a new PixelUint2 instance.
* @param {number} x - The x-coordinate of the pixel.
* @param {number} y - The y-coordinate of the pixel.
* @param {number} index - The index of the pixel.
* @param {number} bitIndex - The bit index of the pixel.
* @param {number} rowOffset - The row offset of the pixel.
* @param {MemoryImageDataUint2} image - The image data associated with the pixel.
*/
constructor(x: number, y: number, index: number, bitIndex: number, rowOffset: number, image: MemoryImageDataUint2);
/**
* Creates a new PixelUint2 instance from image data.
* @param {MemoryImageDataUint2} image - The image data.
* @returns {PixelUint2} A new PixelUint2 instance.
*/
static imageData(image: MemoryImageDataUint2): PixelUint2;
/**
* Creates a new PixelUint2 instance from an image.
* @param {MemoryImage} image - The image.
* @returns {PixelUint2} A new PixelUint2 instance.
*/
static image(image: MemoryImage): PixelUint2;
/**
* Creates a new PixelUint2 instance from another PixelUint2 instance.
* @param {PixelUint2} other - The other PixelUint2 instance.
* @returns {PixelUint2} A new PixelUint2 instance.
*/
static from(other: PixelUint2): PixelUint2;
/**
* Gets the internal channel value.
* @param {number} channel - The channel index.
* @returns {number} The internal channel value.
*/
private getChannelInternal;
/**
* Advances the iterator to the next pixel.
* @returns {IteratorResult<Pixel>} The result of the iteration.
*/
next(): IteratorResult<Pixel>;
/**
* Sets the position of the pixel.
* @param {number} x - The x-coordinate.
* @param {number} y - The y-coordinate.
*/
setPosition(x: number, y: number): void;
/**
* Sets the normalized position of the pixel.
* @param {number} x - The normalized x-coordinate.
* @param {number} y - The normalized y-coordinate.
*/
setPositionNormalized(x: number, y: number): void;
/**
* Gets the value of a specific channel.
* @param {number | Channel} channel - The channel index or type.
* @returns {number} The value of the specified channel.
*/
getChannel(channel: number | Channel): number;
/**
* Gets the normalized value of a specific channel.
* @param {Channel} channel - The channel type.
* @returns {number} The normalized value of the specified channel.
*/
getChannelNormalized(channel: Channel): number;
/**
* Sets the value of a specific channel.
* @param {number} channel - The channel index.
* @param {number} value - The value to set.
*/
setChannel(channel: number, value: number): void;
/**
* Sets the pixel color.
* @param {Color} color - The color to set.
*/
set(color: Color): void;
/**
* Sets the RGB values of the pixel.
* @param {number} r - The red value.
* @param {number} g - The green value.
* @param {number} b - The blue value.
*/
setRgb(r: number, g: number, b: number): void;
/**
* Sets the RGBA values of the pixel.
* @param {number} r - The red value.
* @param {number} g - The green value.
* @param {number} b - The blue value.
* @param {number} a - The alpha value.
*/
setRgba(r: number, g: number, b: number, a: number): void;
/**
* Checks if the pixel is equal to another pixel or array of values.
* @param {Pixel | number[]} other - The other pixel or array of values.
* @returns {boolean} True if the pixel is equal to the other pixel or array of values, false otherwise.
*/
equals(other: Pixel | number[]): boolean;
/**
* Converts the pixel to an array of channel values.
* @returns {number[]} An array of channel values.
*/
toArray(): number[];
/**
* Clones the pixel.
* @returns {PixelUint2} A clone of the pixel.
*/
clone(): PixelUint2;
/**
* Converts the pixel to a color.
* @param {ColorConvertOptions} opt - The color conversion options.
* @param {string} opt.format - The format to convert the color to (e.g., 'rgb', 'hex').
* @param {number} opt.numChannels - The number of color channels (e.g., 3 for RGB, 4 for RGBA).
* @param {number} [opt.alpha] - The alpha value for the color (optional).
* @returns {Color} The converted color.
*/
convert(opt: ColorConvertOptions): Color;
/**
* Converts the pixel to a string representation.
* @returns {string} The string representation of the pixel.
*/
toString(): string;
/**
* Returns an iterator for the pixel.
* @returns {Iterator<Pixel>} An iterator for the pixel.
*/
[Symbol.iterator](): Iterator<Pixel>;
}