vtf-js
Version:
A javascript IO library for the Valve Texture Format.
59 lines (58 loc) • 3.31 kB
TypeScript
import { VEncodedImageData, VImageData } from './image.js';
import { VFilter, VImageScaler } from './resize.js';
/** Defines an interface that can be used to provide image data to the Vtf encoder. */
export interface VDataProvider {
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded?: false): VImageData;
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded: true): VImageData | VEncodedImageData;
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded?: boolean): VImageData | VEncodedImageData;
getSize(mip?: number, frame?: number, face?: number, slice?: number): [number, number];
mipmapCount(): number;
frameCount(): number;
faceCount(): number;
sliceCount(): number;
}
export interface VMipmapProviderOptions {
filter?: VFilter;
mipmaps?: number;
}
/** A class for storing collections of mipmaps, frames, faces, and slices. */
export declare class VDataCollection implements VDataProvider {
private __mipmaps;
constructor(mipmaps: (VImageData | VEncodedImageData)[][][][]);
/** Gets the specified image from the data provider, decoding if necessary unless `allowEncoded` is true. */
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded?: false): VImageData;
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded: true): VImageData | VEncodedImageData;
getSize(mip?: number, frame?: number, face?: number, slice?: number): [number, number];
mipmapCount(): number;
frameCount(): number;
faceCount(): number;
sliceCount(): number;
}
/** A class that extends the base provider interface, but automatically generates mipmaps. */
export declare class VMipmapProvider implements VDataProvider {
protected __frames: (VImageData | VEncodedImageData)[][][];
protected __mipmap_count: number;
protected __filter: VFilter;
protected __scalers: VImageScaler[];
constructor(frames: (VImageData | VEncodedImageData)[][][], options?: VMipmapProviderOptions);
/** Gets the specified image from the data provider, decoding if necessary unless `allowEncoded` is true. */
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded?: false): VImageData;
getImage(mip: number, frame: number, face: number, slice: number, allowEncoded: true): VImageData | VEncodedImageData;
getSize(mip?: number, frame?: number, face?: number, slice?: number): [number, number];
mipmapCount(): number;
frameCount(): number;
faceCount(): number;
sliceCount(): number;
}
/** A class that extends VMipmapProvider but takes an array of frames in the constructor. */
export declare class VFrameCollection extends VMipmapProvider {
constructor(frames: VImageData[], options?: VMipmapProviderOptions);
}
/** A class that extends VMipmapProvider but takes an array of faces in the constructor. */
export declare class VFaceCollection extends VMipmapProvider {
constructor(faces: VImageData[], options?: VMipmapProviderOptions);
}
/** A class that extends VMipmapProvider but takes an array of slices in the constructor. */
export declare class VSliceCollection extends VMipmapProvider {
constructor(slices: VImageData[], options?: VMipmapProviderOptions);
}