vtf-js
Version:
A javascript IO library for the Valve Texture Format.
69 lines (68 loc) • 2.5 kB
TypeScript
import type { VDataProvider } from './core/providers.js';
import { VCompressionMethods, VFormats } from './core/enums.js';
import { VBaseResource, VResource } from './core/resources.js';
/** Options for use with the {@link Vtf} constructor. */
export interface VConstructorOptions {
version?: number;
format?: VFormats;
flags?: number;
meta?: VBaseResource[];
reflectivity?: Float32Array;
first_frame?: number;
bump_scale?: number;
compression_level?: number;
compression_method?: VCompressionMethods;
}
/**
* A decoded Vtf.
* ```ts
* const vtf = await Vtf.decode(myBuffer);
* const image = vtf.data.getImage(0, 0, 0, 0);
* ```
*/
export declare class Vtf {
data: VDataProvider;
version: number;
format: VFormats;
flags: number;
meta: VResource[];
reflectivity: Float32Array;
first_frame: number;
bump_scale: number;
compression_level: number;
compression_method: VCompressionMethods;
constructor(data: VDataProvider, options?: VConstructorOptions);
/** Encodes this Vtf object into an ArrayBuffer. */
encode(): Promise<ArrayBuffer>;
/**
* Parses the provided ArrayBuffer into a new Vtf object.
* @param data The Vtf file data.
* @param header_only (default: `false`) If true, a VFileHeader will be returned instead, which only contains the header contents.
* @param lazy_decode (default: `true`) If false, all data in the Vtf will be decoded in this function call. Otherwise, images will only be decoded when requested.
*/
static decode(data: ArrayBuffer): Promise<Vtf>;
static decode(data: ArrayBuffer, header_only: false, lazy_decode?: boolean): Promise<Vtf>;
static decode(data: ArrayBuffer, header_only: true, lazy_decode?: boolean): Promise<VFileHeader>;
}
/** A decoded Vtf header. Returned by `Vtf.decode(...)` when `header_only` is `true`. */
export declare class VFileHeader {
version: number;
width: number;
height: number;
flags: number;
frames: number;
first_frame: number;
reflectivity: Float32Array;
bump_scale: number;
format: VFormats;
mipmaps: number;
thumb_format: VFormats;
thumb_width: number;
thumb_height: number;
slices: number;
compression_method: VCompressionMethods;
compression_level: number;
compressed_lengths?: number[][][];
/** Creates a new VFileHeader from the provided Vtf object. Used internally when encoding. */
static fromVtf(vtf: Vtf): VFileHeader;
}