@league-of-foundry-developers/foundry-vtt-types
Version:
TypeScript type definitions for Foundry VTT
1,116 lines (860 loc) • 34 kB
text/typescript
import type { Brand, Identity } from "#utils";
import * as _PIXI from "pixi.js";
// Note(LukeAbby): The `smooth.d.mts` and `smooth.d.mts` files exist to make it DRY to selectively tweak PIXI sub-namespaces.
// Each of them write `export * from "..."` and then selectively shadow or augment the exports.
// eslint-disable-next-line import-x/extensions
import * as _smooth from "./smooth.mjs";
// eslint-disable-next-line import-x/extensions
import * as _particles from "./particles.mjs";
export * from "pixi.js";
/**
* Foundry exports PIXI into the global namespace
*/
export as namespace PIXI;
declare global {
namespace PIXI {
type ALPHA_MODES = Brand<number, "PIXI.ALPHA_MODES">;
/** How to treat textures with premultiplied alpha */
const ALPHA_MODES: {
/** Alias for NO_PREMULTIPLIED_ALPHA. */
NPM: 0 & ALPHA_MODES;
/** Default option, alias for PREMULTIPLY_ON_UPLOAD. */
UNPACK: 1 & ALPHA_MODES;
/** Alias for PREMULTIPLIED_ALPHA. */
PMA: 2 & ALPHA_MODES;
/**
* Source is not premultiplied, leave it like that.
* Option for compressed and data textures that are created from typed arrays.
*/
NO_PREMULTIPLIED_ALPHA: 0 & ALPHA_MODES;
/**
* Source is not premultiplied, premultiply on upload.
* Default option, used for all loaded images.
*/
PREMULTIPLY_ON_UPLOAD: 1 & ALPHA_MODES;
/** Source is already premultiplied. Example: spine atlases with `_pma` suffix. */
PREMULTIPLIED_ALPHA: 2 & ALPHA_MODES;
};
type BLEND_MODES = Brand<number, "PIXI.BLEND_MODES">;
/**
* Various blend modes supported by PIXI.
*
* IMPORTANT - The WebGL renderer only supports the NORMAL, ADD, MULTIPLY and SCREEN blend modes.
* Anything else will silently act like NORMAL.
* @remarks Includes Foundry's extra keys `MAX_COLOR`, `MIN_COLOR`, and `MIN_ALL`
*/
const BLEND_MODES: {
NORMAL: 0 & BLEND_MODES;
ADD: 1 & BLEND_MODES;
/**
* The pixels of the top layer are multiplied with the corresponding pixel of the bottom layer.
* A darker picture is the result.
*/
MULTIPLY: 2 & BLEND_MODES;
/** The pixels are inverted, multiplied, and inverted again. A lighter picture is the result (opposite of multiply) */
SCREEN: 3 & BLEND_MODES;
/**
* A combination of multiply and screen. Dark parts on the base layer become darker, and light parts become lighter.
*
* Canvas Renderer only.
*/
OVERLAY: 4 & BLEND_MODES;
/**
* Retains the darkest pixels of both layers.
*
* Canvas Renderer only.
*/
DARKEN: 5 & BLEND_MODES;
/**
* Retains the lightest pixels of both layers.
*
* Canvas Renderer only.
*/
LIGHTEN: 6 & BLEND_MODES;
/**
* Divides the bottom layer by the inverted top layer.
*
* Canvas Renderer only.
*/
COLOR_DODGE: 7 & BLEND_MODES;
/**
* Divides the inverted bottom layer by the top layer, and then inverts the result.
*
* Canvas Renderer only.
*/
COLOR_BURN: 8 & BLEND_MODES;
/**
* A combination of multiply and screen like overlay, but with top and bottom layer swapped.
*
* Canvas Renderer only.
*/
HARD_LIGHT: 9 & BLEND_MODES;
/**
* A softer version of hard-light. Pure black or white does not result in pure black or white.
*
* Canvas Renderer only.
*/
SOFT_LIGHT: 10 & BLEND_MODES;
/**
* Subtracts the bottom layer from the top layer or the other way round to always get a positive value.
*
* Canvas Renderer only.
*/
DIFFERENCE: 11 & BLEND_MODES;
/**
* Like difference, but with lower contrast.
*
* Canvas Renderer only.
*/
EXCLUSION: 12 & BLEND_MODES;
/**
* Preserves the luma and chroma of the bottom layer, while adopting the hue of the top layer.
*
* Canvas Renderer only.
*/
HUE: 13 & BLEND_MODES;
/**
* Preserves the luma and hue of the bottom layer, while adopting the chroma of the top layer.
*
* Canvas Renderer only.
*/
SATURATION: 14 & BLEND_MODES;
/**
* Preserves the luma of the bottom layer, while adopting the hue and chroma of the top layer.
*
* Canvas Renderer only.
*/
COLOR: 15 & BLEND_MODES;
/**
* Preserves the hue and chroma of the bottom layer, while adopting the luma of the top layer.
*
* Canvas Renderer only.
*/
LUMINOSITY: 16 & BLEND_MODES;
NORMAL_NPM: 17 & BLEND_MODES;
ADD_NPM: 18 & BLEND_MODES;
SCREEN_NPM: 19 & BLEND_MODES;
NONE: 20 & BLEND_MODES;
/** Draws new shapes on top of the existing canvas content. */
SRC_OVER: 0 & BLEND_MODES;
/**
* The new shape is drawn only where both the new shape and the destination canvas overlap.
* Everything else is made transparent.
*/
SRC_IN: 21 & BLEND_MODES;
/** The new shape is drawn where it doesn't overlap the existing canvas content. */
SRC_OUT: 22 & BLEND_MODES;
/** The new shape is only drawn where it overlaps the existing canvas content. */
SRC_ATOP: 23 & BLEND_MODES;
/** New shapes are drawn behind the existing canvas content. */
DST_OVER: 24 & BLEND_MODES;
/**
* The existing canvas content is kept where both the new shape and existing canvas content overlap.
* Everything else is made transparent.
*/
DST_IN: 25 & BLEND_MODES;
/** The existing content is kept where it doesn't overlap the new shape. */
DST_OUT: 26 & BLEND_MODES;
/** The existing canvas is only kept where it overlaps the new shape. The new shape is drawn behind the canvas content. */
DST_ATOP: 27 & BLEND_MODES;
ERASE: 26 & BLEND_MODES;
SUBTRACT: 28 & BLEND_MODES;
/** Shapes are made transparent where both overlap and drawn normal everywhere else. */
XOR: 29 & BLEND_MODES;
/**
* A custom blend mode equation which chooses the maximum color from each channel within the stack.
* @remarks Foundry addition
*/
MAX_COLOR: 30 & BLEND_MODES;
/**
* A custom blend mode equation which chooses the minimum color from each channel within the stack.
* @remarks Foundry addition
*/
MIN_COLOR: 31 & BLEND_MODES;
/**
* A custom blend mode equation which chooses the minimum color for color channels and min alpha from alpha channel.
* @remarks Foundry addition
*/
MIN_ALL: 32 & BLEND_MODES;
};
type BUFFER_BITS = Brand<number, "PIXI.BUFFER_BITS">;
/** Bitwise OR of masks that indicate the buffers to be cleared. */
const BUFFER_BITS: {
/**
* Indicates the buffers currently enabled for color writing.
* @defaultValue `0x4000`
*/
COLOR: 16384 & PIXI.BUFFER_BITS;
/**
* Indicates the depth buffer.
* @defaultValue `0x100`
*/
DEPTH: 256 & PIXI.BUFFER_BITS;
/**
* Indicates the stencil buffer.
* @defaultValue `0x400`
*/
STENCIL: 1024 & PIXI.BUFFER_BITS;
};
type BUFFER_TYPE = Brand<number, "PIXI.BUFFER_TYPE">;
/** Constants for various buffer types in Pixi */
const BUFFER_TYPE: {
/**
* buffer type for using as an index buffer
* @defaultValue `0x8893`
*/
ELEMENT_ARRAY_BUFFER: 34963 & BUFFER_TYPE;
/**
* buffer type for using attribute data
* @defaultValue `0x8892`
*/
ARRAY_BUFFER: 34962 & BUFFER_TYPE;
/**
* the buffer type is for uniform buffer objects
* @defaultValue `0x8A11`
*/
UNIFORM_BUFFER: 35345 & BUFFER_TYPE;
};
type CLEAR_MODES = Brand<number, "PIXI.CLEAR_MODES">;
/**
* Configure whether filter textures are cleared after binding.
*
* Filter textures need not be cleared if the filter does not use pixel blending. {@linkcode PIXI.CLEAR_MODES.BLIT} will detect
* this and skip clearing as an optimization.
*/
const CLEAR_MODES: {
/** Alias for BLEND, same as `false` in earlier versions */
NO: 0 & CLEAR_MODES;
/** Alias for CLEAR, same as `true` in earlier versions */
YES: 1 & CLEAR_MODES;
/** Alias for BLIT */
AUTO: 2 & CLEAR_MODES;
/** Do not clear the filter texture. The filter's output will blend on top of the output texture. */
BLEND: 0 & CLEAR_MODES;
/** Always clear the filter texture. */
CLEAR: 1 & CLEAR_MODES;
/** Clear only if {@linkcode PIXI.FilterSystem.forceClear} is set or if the filter uses pixel blending. */
BLIT: 2 & CLEAR_MODES;
};
type COLOR_MASK_BITS = Brand<number, "PIXI.COLOR_MASK_BITS">;
/** Bitwise OR of masks that indicate the color channels that are rendered to. */
const COLOR_MASK_BITS: {
/** Red channel. */
RED: 1 & COLOR_MASK_BITS;
/** Green channel */
GREEN: 2 & COLOR_MASK_BITS;
/** Blue channel. */
BLUE: 4 & COLOR_MASK_BITS;
/** Alpha channel. */
ALPHA: 8 & COLOR_MASK_BITS;
};
type DRAW_MODES = Brand<number, "PIXI.DRAW_MODES">;
/**
* Various webgl draw modes. These can be used to specify which GL drawMode to use
* under certain situations and renderers.
*/
const DRAW_MODES: {
/** To draw a series of points. */
POINTS: 0 & DRAW_MODES;
/** To draw a series of unconnected line segments (individual lines). */
LINES: 1 & DRAW_MODES;
/** To draw a series of connected line segments. It also joins the first and last vertices to form a loop. */
LINE_LOOP: 2 & DRAW_MODES;
/** To draw a series of connected line segments. */
LINE_STRIP: 3 & DRAW_MODES;
/** To draw a series of separate triangles. */
TRIANGLES: 4 & DRAW_MODES;
/** To draw a series of connected triangles in strip fashion. */
TRIANGLE_STRIP: 5 & DRAW_MODES;
/** To draw a series of connected triangles sharing the first vertex in a fan-like fashion. */
TRIANGLE_FAN: 6 & DRAW_MODES;
};
type ENV = Brand<number, "PIXI.ENV">;
/** Different types of environments for WebGL. */
const ENV: {
/**
* Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility
* with older / less advanced devices. If you experience unexplained flickering prefer this environment.
*/
WEBGL_LEGACY: 0 & ENV;
/** Version 1 of WebGL */
WEBGL: 1 & ENV;
/** Version 2 of WebGL */
WEBGL2: 2 & ENV;
};
type ExtensionType = Brand<string, "PIXI.ExtensionType">;
/** Collection of valid extension types. */
const ExtensionType: {
Renderer: "renderer" & ExtensionType;
/** Application plugins */
Application: "application" & ExtensionType;
RendererSystem: "renderer-webgl-system" & ExtensionType;
/** Plugins for Renderer */
RendererPlugin: "renderer-webgl-plugin" & ExtensionType;
CanvasRendererSystem: "renderer-canvas-system" & ExtensionType;
/** Plugins for CanvasRenderer */
CanvasRendererPlugin: "renderer-canvas-plugin" & ExtensionType;
Asset: "asset" & ExtensionType;
/** Parsers for Assets loader. */
LoadParser: "load-parser" & ExtensionType;
/** Parsers for Assets resolvers. */
ResolveParser: "resolve-parser" & ExtensionType;
/** Parsers for Assets cache. */
CacheParser: "cache-parser" & ExtensionType;
DetectionParser: "detection-parser" & ExtensionType;
};
type FORMATS = Brand<number, "PIXI.FORMATS">;
/** Various GL texture/resources formats. */
const FORMATS: {
/** @defaultValue `0x1908` */
RGBA: 6408 & FORMATS;
/** @defaultValue `0x1907` */
RGB: 6407 & FORMATS;
/** @defaultValue `0x8227` */
RG: 33319 & FORMATS;
/** @defaultValue `0x1903` */
RED: 6403 & FORMATS;
/** @defaultValue `0x8D99` */
RGBA_INTEGER: 36249 & FORMATS;
/** @defaultValue `0x8D98` */
RGB_INTEGER: 36248 & FORMATS;
/** @defaultValue `0x8228` */
RG_INTEGER: 33320 & FORMATS;
/** @defaultValue `0x8D94` */
RED_INTEGER: 36244 & FORMATS;
/** @defaultValue `0x1906` */
ALPHA: 6406 & FORMATS;
/** @defaultValue `0x1909` */
LUMINANCE: 6409 & FORMATS;
/** @defaultValue `0x190A` */
LUMINANCE_ALPHA: 6410 & FORMATS;
/** @defaultValue `0x1902` */
DEPTH_COMPONENT: 6402 & FORMATS;
/** @defaultValue `0x84F9` */
DEPTH_STENCIL: 34041 & FORMATS;
};
type GC_MODES = Brand<number, "PIXI.GC_MODES">;
/**
* The gc modes that are supported by pixi.
*
* The {@linkcode PIXI.TextureGCSystem.defaultMode} Garbage Collection mode for PixiJS textures is AUTO
* If set to GC_MODE, the renderer will occasionally check textures usage. If they are not
* used for a specified period of time they will be removed from the GPU. They will of course
* be uploaded again when they are required. This is a silent behind the scenes process that
* should ensure that the GPU does not get filled up.
*
* Handy for mobile devices!
* This property only affects WebGL.
*/
const GC_MODES: {
/** Garbage collection will happen periodically automatically */
AUTO: 0 & GC_MODES;
/** Garbage collection will need to be called manually */
MANUAL: 1 & GC_MODES;
};
type INTERNAL_FORMATS = Brand<number, "PIXI.INTERNAL_FORMATS">;
/** WebGL internal formats, including compressed texture formats provided by extensions */
const INTERNAL_FORMATS: {
/** @defaultValue `0x83F0` */
COMPRESSED_RGB_S3TC_DXT1_EXT: 33776 & INTERNAL_FORMATS;
/** @defaultValue `0x83F1` */
COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777 & INTERNAL_FORMATS;
/** @defaultValue `0x83F2` */
COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778 & INTERNAL_FORMATS;
/** @defaultValue `0x83F3` */
COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779 & INTERNAL_FORMATS;
/** @defaultValue `0x8C4D` */
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917 & INTERNAL_FORMATS;
/** @defaultValue `0x8C4E` */
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918 & INTERNAL_FORMATS;
/** @defaultValue `0x8C4F` */
COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 35919 & INTERNAL_FORMATS;
/** @defaultValue `0x8C4C` */
COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916 & INTERNAL_FORMATS;
/** @defaultValue `0x9270` */
COMPRESSED_R11_EAC: 37488 & INTERNAL_FORMATS;
/** @defaultValue `0x9271` */
COMPRESSED_SIGNED_R11_EAC: 37489 & INTERNAL_FORMATS;
/** @defaultValue `0x9272` */
COMPRESSED_RG11_EAC: 37490 & INTERNAL_FORMATS;
/** @defaultValue `0x9273` */
COMPRESSED_SIGNED_RG11_EAC: 37491 & INTERNAL_FORMATS;
/** @defaultValue `0x9274` */
COMPRESSED_RGB8_ETC2: 37492 & INTERNAL_FORMATS;
/** @defaultValue `0x9278` */
COMPRESSED_RGBA8_ETC2_EAC: 37496 & INTERNAL_FORMATS;
/** @defaultValue `0x9275` */
COMPRESSED_SRGB8_ETC2: 37493 & INTERNAL_FORMATS;
/** @defaultValue `0x9279` */
COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37497 & INTERNAL_FORMATS;
/** @defaultValue `0x9276` */
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37494 & INTERNAL_FORMATS;
/** @defaultValue `0x9277` */
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37495 & INTERNAL_FORMATS;
/** @defaultValue `0x8C00` */
COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840 & INTERNAL_FORMATS;
/** @defaultValue `0x8C02` */
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842 & INTERNAL_FORMATS;
/** @defaultValue `0x8C01` */
COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841 & INTERNAL_FORMATS;
/** @defaultValue `0x8C03` */
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843 & INTERNAL_FORMATS;
/** @defaultValue `0x8D64` */
COMPRESSED_RGB_ETC1_WEBGL: 36196 & INTERNAL_FORMATS;
/** @defaultValue `0x8C92` */
COMPRESSED_RGB_ATC_WEBGL: 35986 & INTERNAL_FORMATS;
/** @defaultValue `0x8C93` */
COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987 & INTERNAL_FORMATS;
/** @defaultValue `0x87EE` */
COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798 & INTERNAL_FORMATS;
/** @defaultValue `0x93B0` */
COMPRESSED_RGBA_ASTC_4x4_KHR: 37808 & INTERNAL_FORMATS;
/** @defaultValue `0x8E8C` */
COMPRESSED_RGBA_BPTC_UNORM_EXT: 36492 & INTERNAL_FORMATS;
/** @defaultValue `0x8E8D` */
COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 36493 & INTERNAL_FORMATS;
/** @defaultValue `0x8E8E` */
COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 36494 & INTERNAL_FORMATS;
/** @defaultValue `0x8E8F` */
COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 36495 & INTERNAL_FORMATS;
};
type LINE_CAP = Brand<string, "PIXI.LINE_CAP">;
/** Support line caps in `PIXI.LineStyle` for graphics. */
const LINE_CAP: {
/** 'butt': don't add any cap at line ends (leaves orthogonal edges) */
BUTT: "butt" & LINE_CAP;
/** 'round': add semicircle at ends */
ROUND: "round" & LINE_CAP;
/** 'square': add square at end (like `BUTT` except more length at end) */
SQUARE: "square" & LINE_CAP;
};
type LINE_JOIN = Brand<string, "PIXI.LINE_JOIN">;
/**
* Supported line joints in `PIXI.LineStyle` for graphics.
* @see {@link PIXI.Graphics.lineStyle | `PIXI.Graphics#lineStyle`}
* @see {@link https://graphicdesign.stackexchange.com/questions/59018/what-is-a-bevel-join-of-two-lines-exactly-illustrator}
*/
const LINE_JOIN: {
/** 'miter': make a sharp corner where outer part of lines meet */
MITER: "miter" & LINE_JOIN;
/** 'bevel': add a square butt at each end of line segment and fill the triangle at turn */
BEVEL: "bevel" & LINE_JOIN;
/** 'round': add an arc at the joint */
ROUND: "round" & LINE_JOIN;
};
type LoaderParserPriority = Brand<number, "PIXI.LoaderParserPriority">;
/**
* The extension priority for loader parsers.
* Helpful when managing multiple parsers that share the same extension test.
* The higher priority parsers will be checked first.
*/
const LoaderParserPriority: {
/** Generic parsers: txt, json, webfonts */
Low: 0 & LoaderParserPriority;
/** PixiJS assets with generic extensions: spritesheets, bitmapfonts */
Normal: 1 & LoaderParserPriority;
/** Specific texture types: svg, png, ktx, dds, basis */
High: 2 & LoaderParserPriority;
};
type MASK_TYPES = Brand<number, "PIXI.MASK_TYPES">;
/**
* Constants for mask implementations.
* We use `type` suffix because it leads to very different behaviours
*/
const MASK_TYPES: {
/** Mask is ignored */
NONE: 0 & MASK_TYPES;
/** Scissor mask, rectangle on screen, cheap */
SCISSOR: 1 & MASK_TYPES;
/** Stencil mask, 1-bit, medium, works only if renderer supports stencil */
STENCIL: 2 & MASK_TYPES;
/** Mask that uses SpriteMaskFilter, uses temporary RenderTexture */
SPRITE: 3 & MASK_TYPES;
/** Color mask (RGBA) */
COLOR: 4 & MASK_TYPES;
};
type MIPMAP_MODES = Brand<number, "PIXI.MIPMAP_MODES">;
/**
* Mipmap filtering modes that are supported by pixi.
*
* The {@linkcode PIXI.BaseTexture.defaultOptions.mipmap} affects default texture filtering.
* Mipmaps are generated for a baseTexture if its `mipmap` field is `ON`,
* or its `POW2` and texture dimensions are powers of 2.
* Since WebGL 1 don't support mipmap for non-power-of-two textures,
* `ON` option will work like `POW2` for WebGL 1.
*
* This property only affects WebGL.
*/
const MIPMAP_MODES: {
/** No mipmaps. */
OFF: 0 & MIPMAP_MODES;
/** Generate mipmaps if texture dimensions are powers of 2. */
POW2: 1 & MIPMAP_MODES;
/** Always generate mipmaps. */
ON: 2 & MIPMAP_MODES;
/**
* Use mipmaps, but do not auto-generate them.
* this is used with a resource that supports buffering each level-of-detail.
*/
ON_MANUAL: 3 & MIPMAP_MODES;
};
type MSAA_QUALITY = Brand<number, "PIXI.MSAA_QUALITY">;
/** Constants for multi-sampling antialiasing. */
const MSAA_QUALITY: {
/** No multisampling for this renderTexture */
NONE: 0 & MSAA_QUALITY;
/** Try 2 samples */
LOW: 2 & MSAA_QUALITY;
/** Try 4 samples */
MEDIUM: 4 & MSAA_QUALITY;
/** Try 8 samples */
HIGH: 8 & MSAA_QUALITY;
};
type PRECISION = Brand<string, "PIXI.PRECISION">;
/** Constants that specify float precision in shaders. */
const PRECISION: {
/**
* lowp is at least an 9 bit value.
* For floating point values they can range from: -2 to +2,
* for integer values they are similar to Uint8Array or Int8Array
*/
LOW: "lowp" & PRECISION;
/**
* mediump is at least a 16 bit value.
* For floating point values they can range from: -2^14 to +2^14,
* for integer values they are similar to Uint16Array or Int16Array
*/
MEDIUM: "mediump" & PRECISION;
/**
* highp is at least a 32 bit value.
* For floating point values they can range from: -2^62 to +2^62,
* for integer values they are similar to Uint32Array or Int32Array
*/
HIGH: "highp" & PRECISION;
};
type RENDERER_TYPE = Brand<number, "PIXI.RENDERER_TYPE">;
/**
* Constant to identify the Renderer Type.
*/
const RENDERER_TYPE: {
/** Unknown render type. */
UNKNOWN: 0 & RENDERER_TYPE;
/** WebGL render type. */
WEBGL: 1 & RENDERER_TYPE;
/** Canvas render type. */
CANVAS: 2 & RENDERER_TYPE;
};
type SAMPLER_TYPES = Brand<number, "PIXI.SAMPLER_TYPES">;
/**
* Various sampler types. Correspond to `sampler`, `isampler`, `usampler` GLSL types respectively.
* WebGL1 works only with FLOAT.
*/
const SAMPLER_TYPES: {
FLOAT: 0 & SAMPLER_TYPES;
INT: 1 & SAMPLER_TYPES;
UINT: 2 & SAMPLER_TYPES;
};
type SCALE_MODES = Brand<number, "PIXI.SCALE_MODES">;
/**
* The scale modes that are supported by pixi.
*
* The {@linkcode PIXI.BaseTexture.defaultOptions.scaleMode} scale mode affects the default scaling mode of future operations.
* It can be re-assigned to either LINEAR or NEAREST, depending upon suitability.
*/
const SCALE_MODES: {
/** Pixelating scaling */
NEAREST: 0 & SCALE_MODES;
/** Smooth scaling */
LINEAR: 1 & SCALE_MODES;
};
type SHAPES = Brand<number, "PIXI.SHAPES">;
/** Constants that identify shapes, mainly to prevent `instanceof` calls. */
const SHAPES: {
POLY: 0 & SHAPES;
RECT: 1 & SHAPES;
CIRC: 2 & SHAPES;
ELIP: 3 & SHAPES;
RREC: 4 & SHAPES;
};
type TARGETS = Brand<number, "PIXI.TARGETS">;
/** Various GL target types. */
const TARGETS: {
/**
* A two-dimensional texture
* @defaultValue `0xDE1`
*/
TEXTURE_2D: 3553 & TARGETS;
/**
* A cube-mapped texture. When using a WebGL 2 context, the following values are available additionally:
* - gl.TEXTURE_3D: A three-dimensional texture.
* - gl.TEXTURE_2D_ARRAY: A two-dimensional array texture.
* @defaultValue `0x8513`
*/
TEXTURE_CUBE_MAP: 34067 & TARGETS;
/**
* A two-dimensional array texture.
* @defaultValue `0x8C1A`
*/
TEXTURE_2D_ARRAY: 35866 & TARGETS;
/**
* Positive X face for a cube-mapped texture.
* @defaultValue `0x8515`
*/
TEXTURE_CUBE_MAP_POSITIVE_X: 34069 & TARGETS;
/**
* Negative X face for a cube-mapped texture.
* @defaultValue `0x8516`
*/
TEXTURE_CUBE_MAP_NEGATIVE_X: 34070 & TARGETS;
/**
* Positive Y face for a cube-mapped texture.
* @defaultValue `0x8517`
*/
TEXTURE_CUBE_MAP_POSITIVE_Y: 34071 & TARGETS;
/**
* Negative Y face for a cube-mapped texture.
* @defaultValue `0x8518`
*/
TEXTURE_CUBE_MAP_NEGATIVE_Y: 34072 & TARGETS;
/**
* Positive Z face for a cube-mapped texture.
* @defaultValue `0x9519`
*/
TEXTURE_CUBE_MAP_POSITIVE_Z: 34073 & TARGETS;
/**
* Negative Z face for a cube-mapped texture.
* @defaultValue `0x851A`
*/
TEXTURE_CUBE_MAP_NEGATIVE_Z: 34074 & TARGETS;
};
type TEXT_GRADIENT = Brand<number, "PIXI.TEXT_GRADIENT">;
/** Constants that define the type of gradient on text. */
const TEXT_GRADIENT: {
/** Vertical gradient */
LINEAR_VERTICAL: 0 & TEXT_GRADIENT;
/**
* Linear gradient
* @privateRemarks [sic]
*/
LINEAR_HORIZONTAL: 1 & TEXT_GRADIENT;
};
type TYPES = Brand<number, "PIXI.TYPES">;
/** Various GL data format types. */
const TYPES: {
/**
* 8 bits per channel for gl.RGBA
* @defaultValue `0x1401`
*/
UNSIGNED_BYTE: 5121 & TYPES;
/** @defaultValue `0x1403` */
UNSIGNED_SHORT: 5123 & TYPES;
/**
* 5 red bits, 6 green bits, 5 blue bits.
* @defaultValue `0x8363`
*/
UNSIGNED_SHORT_5_6_5: 33635 & TYPES;
/**
* 4 red bits, 4 green bits, 4 blue bits, 4 alpha bits.
* @defaultValue `0x8033`
*/
UNSIGNED_SHORT_4_4_4_4: 32819 & TYPES;
/**
* 5 red bits, 5 green bits, 5 blue bits, 1 alpha bit.
* @defaultValue `0x8034`
*/
UNSIGNED_SHORT_5_5_5_1: 32820 & TYPES;
/** @defaultValue `0x1405` */
UNSIGNED_INT: 5125 & TYPES;
/** @defaultValue `0x8C3B` */
UNSIGNED_INT_10F_11F_11F_REV: 35899 & TYPES;
/** @defaultValue `0x8368` */
UNSIGNED_INT_2_10_10_10_REV: 33640 & TYPES;
/** @defaultValue `0x84FA` */
UNSIGNED_INT_24_8: 34042 & TYPES;
/** @defaultValue `0x8C3E` */
UNSIGNED_INT_5_9_9_9_REV: 35902 & TYPES;
/** @defaultValue `0x1400` */
BYTE: 5120 & TYPES;
/** @defaultValue `0x1402` */
SHORT: 5122 & TYPES;
/** @defaultValue `0x1404` */
INT: 5124 & TYPES;
/** @defaultValue `0x1406` */
FLOAT: 5126 & TYPES;
/** @defaultValue `0x8DAD` */
FLOAT_32_UNSIGNED_INT_24_8_REV: 36269 & TYPES;
/** @defaultValue `0x8D61` */
HALF_FLOAT: 36193 & TYPES;
};
type UPDATE_PRIORITY = Brand<number, "PIXI.UPDATE_PRIORITY">;
/**
* Represents the update priorities used by internal PIXI classes when registered with
* the {@linkcode PIXI.Ticker} object. Higher priority items are updated first and lower
* priority items, such as render, should go later.
* @remarks Includes Foundry's additions of `OBJECTS`, `PRIMARY`, and `PERCEPTION`
*/
const UPDATE_PRIORITY: {
/** Highest priority used for interaction events in {@linkcode PIXI.EventSystem} */
INTERACTION: 50 & UPDATE_PRIORITY;
/** High priority updating, used by {@linkcode PIXI.AnimatedSprite} */
HIGH: 25 & UPDATE_PRIORITY;
/** Default priority for ticker events, see {@link PIXI.Ticker.add | `PIXI.Ticker#add`}. */
NORMAL: 0 & UPDATE_PRIORITY;
/** Low priority used for {@linkcode PIXI.Application} rendering. */
LOW: 25 & UPDATE_PRIORITY;
/** Lowest priority used for {@linkcode PIXI.BasePrepare} utility. */
UTILITY: 50 & UPDATE_PRIORITY;
/** @remarks Foundry addition, defined as `HIGH - 2` */
OBJECTS: 23 & UPDATE_PRIORITY;
/** @remarks Foundry addition, defined as `NORMAL + 3` */
PRIMARY: 3 & UPDATE_PRIORITY;
/** @remarks Foundry addition, defined as `NORMAL + 2` */
PERCEPTION: 2 & UPDATE_PRIORITY;
};
type WRAP_MODES = Brand<number, "PIXI.WRAP_MODES">;
/**
* The wrap modes that are supported by pixi.
*
* The wrap mode affects the default wrapping mode of future operations.
* It can be re-assigned to either CLAMP or REPEAT, depending upon suitability.
* If the texture is non power of two then clamp will be used regardless as WebGL can
* only use REPEAT if the texture is po2.
*
* This property only affects WebGL.
*/
const WRAP_MODES: {
/**
* The textures uvs are clamped
* @defaultValue `0x812F`
*/
CLAMP: 33071 & WRAP_MODES;
/**
* The texture uvs tile and repeat
* @defaultValue `0x2901`
*/
REPEAT: 10497 & WRAP_MODES;
/**
* The texture uvs tile and repeat with mirroring
* @defaultValue `0x8370`
*/
MIRRORED_REPEAT: 33648 & WRAP_MODES;
};
export import smooth = _smooth;
export import particles = _particles;
export class Graphics extends PIXI.smooth.SmoothGraphics {}
export import BatchGeometry = _PIXI.BatchGeometry;
namespace BatchGeometry {
interface Any extends AnyPIXIBatchGeometry {}
interface AnyConstructor extends Identity<typeof AnyPIXIBatchGeometry> {}
}
export import BatchRenderer = _PIXI.BatchRenderer;
namespace BatchRenderer {
interface Any extends AnyPIXIBatchRenderer {}
interface AnyConstructor extends Identity<typeof AnyPIXIBatchRenderer> {}
}
export import Container = _PIXI.Container;
namespace Container {
interface Any extends AnyPIXIContainer {}
interface AnyConstructor extends Identity<typeof AnyPIXIContainer> {}
}
export import DisplayObject = _PIXI.DisplayObject;
namespace DisplayObject {
interface Any extends AnyPIXIDisplayObject {}
interface AnyConstructor extends Identity<typeof AnyPIXIDisplayObject> {}
}
export import Filter = _PIXI.Filter;
namespace Filter {
interface Any extends AnyPIXIFilter {}
interface AnyConstructor extends Identity<typeof AnyPIXIFilter> {}
}
export import Shader = _PIXI.Shader;
namespace Shader {
interface Any extends AnyPIXIShader {}
interface AnyConstructor extends Identity<typeof AnyPIXIShader> {}
}
class Texture<R extends PIXI.Resource = PIXI.Resource> extends _PIXI.Texture<R> {
// Note(LukeAbby): `Texture.from` does not correctly.
static from<R extends PIXI.Resource = PIXI.Resource, RO = any>(
source: PIXI.Resource | PIXI.TextureSource | PIXI.TextureSource[],
options?: PIXI.IBaseTextureOptions<RO>,
strict?: boolean,
): PIXI.Texture<R>;
}
}
}
declare module "@pixi/events" {
interface FederatedPointerEvent {
/**
* The angle in radians of a pointer or stylus measuring the vertical angle between
* the device's surface to the pointer or stylus.
* A stylus at 0 degrees would be directly parallel whereas at π/2 degrees it would be perpendicular.
* @see {@link https://developer.mozilla.org/docs/Web/API/PointerEvent/altitudeAngle}
*/
altitudeAngle: number;
/**
* The angle in radians of a pointer or stylus measuring an arc from the X axis of the device to
* the pointer or stylus projected onto the screen's plane.
* A stylus at 0 degrees would be pointing to the "0 o'clock" whereas at π/2 degrees it would be pointing at "6 o'clock".
* @see {@link https://developer.mozilla.org/docs/Web/API/PointerEvent/azimuthAngle}
*/
azimuthAngle: number;
}
}
declare module "pixi.js" {
export import LegacyGraphics = _PIXI.Graphics;
export enum BLEND_MODES {
/**
* A custom blend mode equation which chooses the maximum color from each channel within the stack.
* @remarks Foundry addition, value is technically dynamic as it's the last PIXI entry at the time + 1, but effectively static
*/
MAX_COLOR = 30,
/**
* A custom blend mode equation which chooses the minimum color from each channel within the stack.
* @remarks Foundry addition, value is technically dynamic as it's the last PIXI entry at the time + 1, but effectively static
*/
MIN_COLOR = 31,
/**
* A custom blend mode equation which chooses the minimum color for color channels and min alpha from alpha channel.
* @remarks Foundry addition, value is technically dynamic as it's the last PIXI entry at the time + 1, but effectively static
*/
MIN_ALL = 32,
}
export enum UPDATE_PRIORITY {
/**
* @remarks Foundry defined custom ticker priority
* Handled in Canvas##activateTicker, defined as `HIGH - 2`
*/
OBJECTS = 23,
/**
* @remarks Foundry defined custom ticker priority
* Handled in Canvas##activateTicker, defined as `NORMAL + 3`
*/
PRIMARY = 3,
/**
* @remarks Foundry defined custom ticker priority
* Handled in Canvas##activateTicker, defined as `NORMAL + 2`
*/
PERCEPTION = 2,
}
}
declare module "@pixi/utils" {
function detectVideoAlphaMode(): Promise<PIXI.ALPHA_MODES>;
}
declare abstract class AnyPIXIBatchGeometry extends PIXI.BatchGeometry {
constructor(...args: never);
}
declare abstract class AnyPIXIBatchRenderer extends PIXI.BatchRenderer {
constructor(...args: never);
}
declare abstract class AnyPIXIContainer extends PIXI.Container {
constructor(...args: never);
}
declare abstract class AnyPIXIDisplayObject extends PIXI.DisplayObject {
constructor(...args: never);
}
declare abstract class AnyPIXIFilter extends PIXI.Filter {
constructor(...args: never);
}
declare abstract class AnyPIXIShader extends PIXI.Shader {
constructor(...args: never);
}