DefinitelyTyped/types/pixi.js/index.d.ts
Clark Stevenson 95f2d98228 Minor Changes to pixi.js (#38246)
* Minor Changes to pixi.js

- Added commenting
- Points to the correct project branch
- Removes a duplicate from MouseEvents enum
- Formatting

* Fix Linting Issues
2019-09-10 22:42:01 -07:00

4727 lines
169 KiB
TypeScript

// Type definitions for pixi.js 4.8
// Project: https://github.com/pixijs/pixi.js/tree/v4.x
// Definitions by: clark-stevenson <https://github.com/clark-stevenson>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
declare namespace PIXI {
// from CONST
/** String of the current PIXI version. */
const VERSION: typeof CONST.VERSION;
/** Two Pi. */
const PI_2: typeof CONST.PI_2;
/** Conversion factor for converting radians to degrees. */
const RAD_TO_DEG: typeof CONST.RAD_TO_DEG;
/** Conversion factor for converting degrees to radians. */
const DEG_TO_RAD: typeof CONST.DEG_TO_RAD;
/** Constant to identify the Renderer Type. */
const RENDERER_TYPE: typeof CONST.RENDERER_TYPE;
/**
* 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.
*/
const BLEND_MODES: typeof CONST.BLEND_MODES;
/**
* Various webgl draw modes. These can be used to specify which GL drawMode to use
* under certain situations and renderers.
*/
const DRAW_MODES: typeof CONST.DRAW_MODES;
/**
* The scale modes that are supported by pixi.
*
* The {@link PIXI.settings.SCALE_MODE} 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: typeof CONST.SCALE_MODES;
/**
* The wrap modes that are supported by pixi.
*
* The {@link PIXI.settings.WRAP_MODE} 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: typeof CONST.WRAP_MODES;
/**
* Constants that specify the transform type.
*/
const TRANSFORM_MODE: typeof CONST.TRANSFORM_MODE;
/**
* Constants that specify float precision in shaders.
*/
const PRECISION: typeof CONST.PRECISION;
/**
* The gc modes that are supported by pixi.
*
* The {@link PIXI.settings.GC_MODE} 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: typeof CONST.GC_MODES;
/**
* Constants that identify shapes, mainly to prevent `instanceof` calls.
*/
const SHAPES: typeof CONST.SHAPES;
/**
* Constants that define the type of gradient on text.
*/
const TEXT_GRADIENT: typeof CONST.TEXT_GRADIENT;
/**
* Represents the update priorities used by internal PIXI classes when registered with
* the {@link PIXI.ticker.Ticker} object. Higher priority items are updated first and lower
* priority items, such as render, should go later.
*/
const UPDATE_PRIORITY: typeof CONST.UPDATE_PRIORITY;
function autoDetectRenderer(
width: number,
height: number,
options?: PIXI.RendererOptions,
forceCanvas?: boolean,
): PIXI.WebGLRenderer | PIXI.CanvasRenderer;
/**
* This helper function will automatically detect which renderer you should be using.
* WebGL is the preferred renderer as it is a lot faster. If webGL is not supported by
* the browser then this function will return a canvas renderer
* @param [options] - The optional renderer parameters
* @param [options.width=800] - the width of the renderers view
* @param [options.height=600] - the height of the renderers view
* @param [options.view] - the canvas to use as a view, optional
* @param [options.transparent=false] - If the render view is transparent, default false
* @param [options.antialias=false] - sets antialias (only applicable in chrome at the moment)
* @param [options.preserveDrawingBuffer=false] - enables drawing buffer preservation, enable this if you
* need to call toDataUrl on the webgl context
* @param [options.backgroundColor=0x000000] - The background color of the rendered area
* (shown if not transparent).
* @param [options.clearBeforeRender=true] - This sets if the renderer will clear the canvas or
* not before the new render pass.
* @param [options.resolution=1] - The resolution / device pixel ratio of the renderer, retina would be 2
* @param [options.forceCanvas=false] - prevents selection of WebGL renderer, even if such is present
* @param [options.roundPixels=false] - If true PixiJS will Math.floor() x/y values when rendering,
* stopping pixel interpolation.
* @param [options.forceFXAA=false] - forces FXAA antialiasing to be used over native.
* FXAA is faster, but may not always look as great **webgl only**
* @param [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices.
* If you experience unexplained flickering try setting this to true. **webgl only**
* @param [options.powerPreference] - Parameter passed to webgl context, set to "high-performance"
* for devices with dual graphics card **webgl only**
* @return Returns WebGL renderer if available, otherwise CanvasRenderer
*/
function autoDetectRenderer(options?: PIXI.RendererOptions): PIXI.WebGLRenderer | PIXI.CanvasRenderer;
const loader: PIXI.loaders.Loader;
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////SETTINGS///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/**
* User"s customizable globals for overriding the default PIXI settings, such
* as a renderer"s default resolution, framerate, float percision, etc.
* @example
* // Use the native window resolution as the default resolution
* // will support high-density displays when rendering
* PIXI.settings.RESOLUTION = window.devicePixelRatio.
*
* // Disable interpolation when scaling, will make texture be pixelated
* PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST;
*/
namespace settings {
/**
* Target frames per millisecond.
* @default 0.06
*/
let TARGET_FPMS: number;
/**
* If set to true WebGL will attempt make textures mimpaped by default.
* Mipmapping will only succeed if the base texture uploaded has power of two dimensions.
* @default true
*/
let MIPMAP_TEXTURES: boolean;
/**
* If set to true WebGL will attempt make textures mimpaped by default.
* Mipmapping will only succeed if the base texture uploaded has power of two dimensions.
* @default true
*/
let RESOLUTION: number;
/**
* Default filter resolution.
* @default 1
*/
let FILTER_RESOLUTION: number;
/**
* The maximum textures that this device supports.
* @default 32
*/
let SPRITE_MAX_TEXTURES: number;
/**
* The default sprite batch size.
*
* The default aims to balance desktop and mobile devices.
* @default 4096
*/
let SPRITE_BATCH_SIZE: number;
/**
* The prefix that denotes a URL is for a retina asset.
* @example `@2x`
* @default /@([0-9\.]+)x/
*/
let RETINA_PREFIX: RegExp;
/**
* The default render options if none are supplied to {@link PIXI.WebGLRenderer}
* or {@link PIXI.CanvasRenderer}.
*
* @static
* @constant
* @memberof PIXI.settings
* @type {object}
* @property {HTMLCanvasElement} view=null
* @property {number} resolution=1
* @property {boolean} antialias=false
* @property {boolean} forceFXAA=false
* @property {boolean} autoResize=false
* @property {boolean} transparent=false
* @property {number} backgroundColor=0x000000
* @property {boolean} clearBeforeRender=true
* @property {boolean} preserveDrawingBuffer=false
* @property {boolean} roundPixels=false
* @property {number} width=800
* @property {number} height=600
* @property {boolean} legacy=false
*/
const RENDER_OPTIONS: {
view: HTMLCanvasElement | null;
antialias: boolean;
forceFXAA: boolean;
autoResize: boolean;
transparent: boolean;
backgroundColor: number;
clearBeforeRender: boolean;
preserveDrawingBuffer: boolean;
roundPixels: boolean;
width: number;
height: number;
legacy: boolean;
};
/**
* Default transform type.
* @type {PIXI.TRANSFORM_MODE}
* @default PIXI.TRANSFORM_MODE.STATIC
*/
let TRANSFORM_MODE: number;
/**
* Default Garbage Collection mode.
* @type {PIXI.GC_MODES}
* @default PIXI.GC_MODES.AUTO
*/
let GC_MODE: number;
/**
* Default Garbage Collection max idle.
* @default 3600
*/
let GC_MAX_IDLE: number;
/**
* Default Garbage Collection maximum check count.
* @default 600
*/
let GC_MAX_CHECK_COUNT: number;
/**
* Default wrap modes that are supported by pixi.
* @type {PIXI.WRAP_MODES}
* @default PIXI.WRAP_MODES.CLAMP
*/
let WRAP_MODE: number;
/**
* The scale modes that are supported by pixi.
* @type {PIXI.SCALE_MODES}
* @default PIXI.SCALE_MODES.LINEAR
*/
let SCALE_MODE: number;
/**
* Default specify float precision in vertex shader.
* @type {PIXI.PRECISION}
* @default PIXI.PRECISION.HIGH
*/
let PRECISION_VERTEX: string;
/**
* Default specify float precision in fragment shader.
* @type {PIXI.PRECISION}
* @default PIXI.PRECISION.MEDIUM
*/
let PRECISION_FRAGMENT: string;
/**
* @deprecated since version 4.4.0
*/
let PRECISION: string;
/**
* Default number of uploads per frame using prepare plugin.
* @default 4
*/
let UPLOADS_PER_FRAME: number;
/**
* Can we upload the same buffer in a single frame?
*/
let CAN_UPLOAD_SAME_BUFFER: boolean;
/**
* Default Mesh `canvasPadding`.
* @see PIXI.mesh.Mesh#canvasPadding
*/
let MESH_CANVAS_PADDING: number;
}
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////ACCESSIBILITY////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace accessibility {
// accessibility
class AccessibilityManager {
constructor(renderer: CanvasRenderer | WebGLRenderer);
activate(): void;
deactivate(): void;
protected div: HTMLElement;
protected pool: HTMLElement[];
protected renderId: number;
debug: boolean;
renderer: SystemRenderer;
protected children: AccessibleTarget[];
protected isActive: boolean;
protected updateAccessibleObjects(displayObject: DisplayObject): void;
protected update(): void;
protected capHitArea(hitArea: HitArea): void;
protected addChild(displayObject: DisplayObject): void;
protected _onClick(e: interaction.InteractionEvent): void;
protected _onFocus(e: interaction.InteractionEvent): void;
protected _onFocusOut(e: interaction.InteractionEvent): void;
protected _onKeyDown(e: interaction.InteractionEvent): void;
protected _onMouseMove(e: MouseEvent): void;
destroy(): void;
}
interface AccessibleTarget {
accessible: boolean;
accessibleTitle: string | null;
accessibleHint: string | null;
tabIndex: number;
}
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////////CORE//////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// const
namespace CONST {
/** String of the current PIXI version. */
const VERSION: string;
/** Two Pi. */
const PI_2: number;
/** Conversion factor for converting radians to degrees. */
const RAD_TO_DEG: number;
/** Conversion factor for converting degrees to radians. */
const DEG_TO_RAD: number;
const TARGET_FPMS: number;
/** Constant to identify the Renderer Type. */
const RENDERER_TYPE: {
/** Unknown render type. */
UNKNOWN: number;
/** WebGL render type. */
WEBGL: number;
/** Canvas render type. */
CANVAS: number;
};
/**
* 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.
*/
const BLEND_MODES: {
NORMAL: number;
ADD: number;
MULTIPLY: number;
SCREEN: number;
OVERLAY: number;
DARKEN: number;
LIGHTEN: number;
COLOR_DODGE: number;
COLOR_BURN: number;
HARD_LIGHT: number;
SOFT_LIGHT: number;
DIFFERENCE: number;
EXCLUSION: number;
HUE: number;
SATURATION: number;
COLOR: number;
LUMINOSITY: number;
NORMAL_NPM: number;
ADD_NPM: number;
SCREEN_NPM: number;
};
/**
* Various webgl draw modes. These can be used to specify which GL drawMode to use
* under certain situations and renderers.
*/
const DRAW_MODES: {
POINTS: number;
LINES: number;
LINE_LOOP: number;
LINE_STRIP: number;
TRIANGLES: number;
TRIANGLE_STRIP: number;
TRIANGLE_FAN: number;
};
/**
* The scale modes that are supported by pixi.
*
* The {@link PIXI.settings.SCALE_MODE} 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: {
LINEAR: number;
NEAREST: number;
};
/**
* The gc modes that are supported by pixi.
*
* The {@link PIXI.settings.GC_MODE} 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: number;
/** Garbage collection will need to be called manually */
MANUAL: number;
};
const WRAP_MODES: {
/** The textures uvs are clamped */
CLAMP: number;
/** The texture uvs tile and repeat */
MIRRORED_REPEAT: number;
/** The texture uvs tile and repeat with mirroring */
REPEAT: number;
};
/**
* Constants that specify the transform type.
*/
const TRANSFORM_MODE: {
DEFAULT: number;
DYNAMIC: number;
STATIC: number;
};
/**
* Regexp for image type by extension.
*
* @example `image.png`
*/
const URL_FILE_EXTENSION: RegExp | string;
/**
* Regexp for data URI.
* Based on: {@link https://github.com/ragingwind/data-uri-regex}
*
* @example data:image/png;base64
*/
const DATA_URI: RegExp | string;
/**
* Regexp for SVG size.
*
* @example <svg width="100" height="100"></svg>;
*/
const SVG_SIZE: RegExp | string;
/**
* Constants that identify shapes, mainly to prevent `instanceof` calls.
*/
const SHAPES: {
/** Polygon */
POLY: number;
/** Rectangle */
RECT: number;
/** Circle */
CIRC: number;
/** Ellipse */
ELIP: number;
/** Rounded Rectangle */
RREC: number;
};
/**
* Constants that specify float precision in shaders.
*/
const PRECISION: {
/** "lowp" */
LOW: string;
/** "mediump" */
MEDIUM: string;
/** "highp" */
HIGH: string;
};
/**
* Constants that define the type of gradient on text.
*/
const TEXT_GRADIENT: {
/** Vertical gradient */
LINEAR_VERTICAL: number;
/** Linear gradient */
LINEAR_HORIZONTAL: number;
};
/**
* Represents the update priorities used by internal PIXI classes when registered with
* the {@link PIXI.ticker.Ticker} object. Higher priority items are updated first and lower
* priority items, such as render, should go later.
*/
const UPDATE_PRIORITY: {
/** INTERACTION=50 Highest priority, used for {@link PIXI.interaction.InteractionManager} */
INTERACTION: number;
/** HIGH=25 High priority updating, {@link PIXI.VideoBaseTexture} and {@link PIXI.extras.AnimatedSprite} */
HIGH: number;
/** NORMAL=0 Default priority for ticker events, see {@link PIXI.ticker.Ticker#add}. */
NORMAL: number;
/** LOW=-25 Low priority used for {@link PIXI.Application} rendering. */
LOW: number;
/** UTILITY=-50 Lowest priority used for {@link PIXI.prepare.BasePrepare} utility. */
UTILITY: number;
};
}
// display
interface StageOptions {
children?: boolean;
texture?: boolean;
baseTexture?: boolean;
}
/**
* Convenience class to create a new PIXI application.
* This class automatically creates the renderer, ticker
* and root container.
*
* @example
* // Create the application
* const app = new PIXI.Application();
*
* // Add the view to the DOM
* document.body.appendChild(app.view);
*
* // ex, add display objects
* app.stage.addChild(PIXI.Sprite.fromImage("something.png"));
*/
class Application {
constructor(options?: ApplicationOptions);
constructor(
width?: number,
height?: number,
options?: ApplicationOptions,
noWebGL?: boolean,
sharedTicker?: boolean,
sharedLoader?: boolean,
);
private _ticker: ticker.Ticker;
renderer: PIXI.WebGLRenderer | PIXI.CanvasRenderer;
stage: Container;
ticker: ticker.Ticker;
/**
* Loader instance to help with asset loading.
*/
loader: loaders.Loader;
readonly screen: Rectangle;
/**
* Convenience method for stopping the render.
*/
stop(): void;
/**
* Convenience method for starting the render.
*/
start(): void;
/**
* Render the current stage.
*/
render(): void;
/**
* Destroy and don"t use after this.
* @param [removeView=false] Automatically remove canvas from DOM.
* @param [stageOptions] - Options parameter. A boolean will act as if all options
* have been set to that value
*/
destroy(removeView?: boolean, stageOptions?: StageOptions | boolean): void;
readonly view: HTMLCanvasElement;
}
interface DestroyOptions {
/** if set to true, all the children will have their destroy method called as well. "options" will be passed on to those calls. */
children?: boolean;
/**
* It Should it destroy the current texture of the sprite as well
*
* Only used for child Sprites if options.children is set to true
*/
texture?: boolean;
/**
* Should it destroy the base texture of the sprite as well
*
* Only used for child Sprites if options.children is set to true
*/
baseTexture?: boolean;
}
/**
* "Builder" pattern for bounds rectangles
* Axis-Aligned Bounding Box
* It is not a shape! Its mutable thing, no "EMPTY" or that kind of problems
*/
class Bounds {
minX: number;
minY: number;
maxX: number;
maxY: number;
rect: Rectangle;
/**
* Checks if bounds are empty.
*
* @return True if empty.
*/
isEmpty(): boolean;
/**
* Clears the bounds and resets.
*
*/
clear(): void;
/**
* Can return Rectangle.EMPTY constant, either construct new rectangle, either use your rectangle
* It is not guaranteed that it will return tempRect
*
* @param rect - temporary object will be used if AABB is not empty
* @returns A rectangle of the bounds
*/
getRectangle(rect?: Rectangle): Rectangle;
/**
* This function should be inlined when its possible.
*
* @param point - The point to add.
*/
addPoint(point: Point): void;
/**
* Adds a quad, not transformed
*
* @param vertices - The verts to add.
*/
addQuad(vertices: ArrayLike<number>): Bounds | undefined;
/**
* Adds sprite frame, transformed.
*
* @param transform - TODO
* @param x0 - TODO
* @param y0 - TODO
* @param x1 - TODO
* @param y1 - TODO
*/
addFrame(transform: Transform, x0: number, y0: number, x1: number, y1: number): void;
/**
* Add an array of vertices
*
* @param transform - TODO
* @param vertices - TODO
* @param beginOffset - TODO
* @param endOffset - TODO
*/
addVertices(transform: Transform, vertices: ArrayLike<number>, beginOffset: number, endOffset: number): void;
/**
* Adds other Bounds
*
* @param bounds - TODO
*/
addBounds(bounds: Bounds): void;
/**
* Adds other Bounds, masked with Bounds
*
* @param bounds - TODO
* @param mask - TODO
*/
addBoundsMask(bounds: Bounds, mask: Bounds): void;
/**
* Adds other Bounds, masked with Rectangle
*
* @param bounds - TODO
* @param area - TODO
*/
addBoundsArea(bounds: Bounds, area: Rectangle): void;
}
/**
* A Container represents a collection of display objects.
*
* It is the base class of all display objects that act as a container for other objects.
*
* ```js
* let container = new PIXI.Container();
* container.addChild(sprite);
* ```
*/
class Container extends DisplayObject {
// begin extras.getChildByName
/**
* Returns the display object in the container
*
* @param name - instance name
* @return The child with the specified name.
*/
getChildByName<T extends DisplayObject = Container>(name: string): T;
// end extras.getChildByName
children: DisplayObject[];
width: number;
height: number;
protected onChildrenChange: (...args: any[]) => void;
addChild<T extends DisplayObject>(...children: T[]): T;
/**
* Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown
*
* @param child - The child to add
* @param index - The index to place the child in
* @return The child that was added.
*/
addChildAt<T extends DisplayObject>(child: T, index: number): T;
/**
* Swaps the position of 2 Display Objects within this container.
*
* @param child - First display object to swap
* @param child2 - Second display object to swap
*/
swapChildren(child: DisplayObject, child2: DisplayObject): void;
/**
* Returns the index position of a child DisplayObject instance
*
* @param child - The DisplayObject instance to identify
* @return The index position of the child display object to identify
*/
getChildIndex(child: DisplayObject): number;
/**
* Changes the position of an existing child in the display object container
*
* @param child - The child DisplayObject instance for which you want to change the index number
* @param index - The resulting index number for the child display object
*/
setChildIndex(child: DisplayObject, index: number): void;
/**
* Returns the child at the specified index
*
* @param index - The index to get the child at
* @return The child at the given index, if any.
*/
getChildAt<T extends DisplayObject = Container>(index: number): T;
removeChild<T extends DisplayObject = Container>(child: DisplayObject): T;
/**
* Removes a child from the specified index position.
*
* @param index - The index to get the child from
* @return The child that was removed.
*/
removeChildAt<T extends DisplayObject = Container>(index: number): T;
/**
* Removes all children from this container that are within the begin and end indexes.
*
* @param [beginIndex=0] - The beginning position.
* @param [endIndex=this.children.length] - The ending position. Default value is size of the container.
* @returns List of removed children
*/
removeChildren<T extends DisplayObject = Container>(beginIndex?: number, endIndex?: number): T[];
/**
* Updates the transform on all children of this container for rendering
*/
updateTransform(): void;
/**
* Recalculates the bounds of the container.
*/
calculateBounds(): void;
/**
* Recalculates the bounds of the object. Override this to
* calculate the bounds of the specific object (not including children).
*
*/
protected _calculateBounds(): void;
protected containerUpdateTransform(): void;
renderWebGL(renderer: WebGLRenderer): void;
renderAdvancedWebGL(renderer: WebGLRenderer): void;
protected _renderWebGL(renderer: WebGLRenderer): void;
protected _renderCanvas(renderer: CanvasRenderer): void;
renderCanvas(renderer: CanvasRenderer): void;
/**
* Removes all internal references and listeners as well as removes children from the display list.
* Do not use a Container after calling `destroy`.
*
* @param [options] - Options parameter. A boolean will act as if all options have been set to that value
*/
destroy(options?: DestroyOptions | boolean): void;
once(
event: interaction.InteractionEventTypes | "added" | "removed",
fn: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
once(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
on(
event: interaction.InteractionEventTypes | "added" | "removed",
fn: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
on(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
off(event: "added" | "removed" | string | symbol, fn?: (...args: any[]) => any, context?: any): this;
}
/**
* The base class for all objects that are rendered on the screen.
* This is an abstract class and should not be used on its own rather it should be extended.
*/
class DisplayObject extends utils.EventEmitter
implements interaction.InteractiveTarget, accessibility.AccessibleTarget {
// begin extras.cacheAsBitmap
protected _cacheAsBitmap: boolean;
protected _cacheData: boolean;
/**
* Set this to true if you want this display object to be cached as a bitmap.
* This basically takes a snap shot of the display object as it is at that moment. It can
* provide a performance benefit for complex static displayObjects.
* To remove simply set this property to "false"
*
* IMPORTANT GOTCHA - make sure that all your textures are preloaded BEFORE setting this property to true
* as it will take a snapshot of what is currently there. If the textures have not loaded then they will not appear.
*/
cacheAsBitmap: boolean;
protected _renderCachedWebGL(renderer: WebGLRenderer): void;
protected _initCachedDisplayObject(renderer: WebGLRenderer): void;
protected _renderCachedCanvas(renderer: CanvasRenderer): void;
protected _initCachedDisplayObjectCanvas(renderer: CanvasRenderer): void;
protected _calculateCachedBounds(): Rectangle;
protected _getCachedLocalBounds(): Rectangle;
protected _destroyCachedDisplayObject(): void;
protected _cacheAsBitmapDestroy(options: boolean | any): void;
// end extras.cacheAsBitmap
// begin extras.getChildByName
/**
* The instance name of the object.
*/
name: string | null;
// end extras.getChildByName
// begin extras.getGlobalPosition
/**
* Returns the global position of the displayObject. Does not depend on object scale, rotation and pivot.
*
* @param point - the point to write the global value to. If null a new point will be returned
* @param skipUpdate - setting to true will stop the transforms of the scene graph from
* being updated. This means the calculation returned MAY be out of date BUT will give you a
* nice performance boost
* @return The updated point
*/
getGlobalPosition(point?: Point, skipUpdate?: boolean): Point;
// end extras.getGlobalPosition
// begin accessible target
accessible: boolean;
accessibleTitle: string | null;
accessibleHint: string | null;
tabIndex: number;
// end accessible target
// begin interactive target
interactive: boolean;
interactiveChildren: boolean;
hitArea: PIXI.Rectangle | PIXI.Circle | PIXI.Ellipse | PIXI.Polygon | PIXI.RoundedRectangle | PIXI.HitArea;
buttonMode: boolean;
cursor: string;
trackedPointers: { [key: number]: interaction.InteractionTrackingData };
// Deprecated
/** @deprecated */
defaultCursor: string;
// end interactive target
transform: TransformBase;
alpha: number;
visible: boolean;
renderable: boolean;
parent: Container;
worldAlpha: number;
filterArea: Rectangle | null;
protected _filters: Array<Filter<any>> | null;
protected _enabledFilters: Array<Filter<any>> | null;
protected _bounds: Bounds;
protected _boundsID: number;
protected _lastBoundsID: number;
protected _boundsRect: Rectangle;
protected _localBoundsRect: Rectangle;
protected _mask: PIXI.Graphics | PIXI.Sprite | null;
protected readonly _destroyed: boolean;
x: number;
y: number;
worldTransform: Matrix;
localTransform: Matrix;
position: Point | ObservablePoint;
scale: Point | ObservablePoint;
pivot: Point | ObservablePoint;
skew: ObservablePoint;
rotation: number;
worldVisible: boolean;
mask: PIXI.Graphics | PIXI.Sprite | null;
filters: Array<Filter<any>> | null;
/**
* Updates the object transform for rendering
*
* TODO - Optimization pass!
*/
updateTransform(): void;
protected displayObjectUpdateTransform(): void;
/**
* recursively updates transform of all objects from the root to this one
* internal function for toLocal()
*/
protected _recursivePostUpdateTransform(): void;
/**
* Retrieves the bounds of the displayObject as a rectangle object.
*
* @param skipUpdate - setting to true will stop the transforms of the scene graph from
* being updated. This means the calculation returned MAY be out of date BUT will give you a
* nice performance boost
* @param rect - Optional rectangle to store the result of the bounds calculation
* @return the rectangular bounding area
*/
getBounds(skipUpdate?: boolean, rect?: Rectangle): Rectangle;
/**
* Retrieves the local bounds of the displayObject as a rectangle object
*
* @param [rect] - Optional rectangle to store the result of the bounds calculation
* @return the rectangular bounding area
*/
getLocalBounds(rect?: Rectangle): Rectangle;
/**
* Calculates the global position of the display object
*
* @param position - The world origin to calculate from
* @param [point] - A Point object in which to store the value, optional
* (otherwise will create a new Point)
* @param [skipUpdate=false] - Should we skip the update transform.
* @return A point object representing the position of this object
*/
toGlobal(position: PointLike): Point;
/**
* Calculates the global position of the display object
*
* @param position - The world origin to calculate from
* @param [point] - A Point object in which to store the value, optional
* (otherwise will create a new Point)
* @param [skipUpdate=false] - Should we skip the update transform.
* @return A point object representing the position of this object
*/
toGlobal<T extends PointLike>(position: PointLike, point?: T, skipUpdate?: boolean): T;
//creates and returns a new point
toLocal(position: PointLike, from?: DisplayObject): Point;
/**
* Calculates the local position of the display object relative to another point
*
* @param position - The world origin to calculate from
* @param [from] - The DisplayObject to calculate the global position from
* @param [point] - A Point object in which to store the value, optional
* (otherwise will create a new Point)
* @param [skipUpdate=false] - Should we skip the update transform
* @return A point object representing the position of this object
*/
toLocal<T extends PointLike>(position: PointLike, from?: DisplayObject, point?: T, skipUpdate?: boolean): T;
/**
* Renders the object using the WebGL renderer
*
* @param renderer - The renderer
*/
renderWebGL(renderer: WebGLRenderer): void;
renderCanvas(renderer: CanvasRenderer): void;
setParent(container: Container): Container;
/**
* Convenience function to set the position, scale, skew and pivot at once.
*
* @param [x=0] - The X position
* @param [y=0] - The Y position
* @param [scaleX=1] - The X scale value
* @param [scaleY=1] - The Y scale value
* @param [rotation=0] - The rotation
* @param [skewX=0] - The X skew value
* @param [skewY=0] - The Y skew value
* @param [pivotX=0] - The X pivot value
* @param [pivotY=0] - The Y pivot value
* @return The DisplayObject instance
*/
setTransform(
x?: number,
y?: number,
scaleX?: number,
scaleY?: number,
rotation?: number,
skewX?: number,
skewY?: number,
pivotX?: number,
pivotY?: number,
): DisplayObject;
/**
* Base destroy method for generic display objects. This will automatically
* remove the display object from its parent Container as well as remove
* all current event listeners and internal references. Do not use a DisplayObject
* after calling `destroy`.
*/
destroy(): void;
on(
event: interaction.InteractionEventTypes,
fn: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
on(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
once(
event: interaction.InteractionEventTypes,
fn: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
once(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
removeListener(
event: interaction.InteractionEventTypes,
fn?: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
removeAllListeners(event?: interaction.InteractionEventTypes): this;
off(
event: interaction.InteractionEventTypes,
fn?: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
addListener(
event: interaction.InteractionEventTypes,
fn: (event: interaction.InteractionEvent) => void,
context?: any,
): this;
}
/**
* Generic class to deal with traditional 2D matrix transforms
*/
class TransformBase {
static IDENTITY: TransformBase;
worldTransform: Matrix;
localTransform: Matrix;
protected _worldID: number;
protected _parentID: number;
/**
* Updates only local matrix
*/
updateLocalTransform(): void;
/**
* Updates the values of the object and applies the parent"s transform.
*
* @param parentTransform - The transform of the parent of this object
*/
updateTransform(parentTransform: TransformBase): void;
updateWorldTransform(parentTransform: TransformBase): void;
}
/**
* Transform that takes care about its versions
*/
class TransformStatic extends TransformBase {
position: ObservablePoint;
scale: ObservablePoint;
pivot: ObservablePoint;
skew: ObservablePoint;
protected _rotation: number;
protected _sr?: number;
protected _cr?: number;
protected _cy?: number;
protected _sy?: number;
protected _sx?: number;
protected _cx?: number;
protected _localID: number;
protected _currentLocalID: number;
protected onChange(): void;
updateSkew(): void;
/**
* Decomposes a matrix and sets the transforms properties based on it.
*
* @param matrix - The matrix to decompose
*/
setFromMatrix(matrix: Matrix): void;
rotation: number;
}
/**
* Generic class to deal with traditional 2D matrix transforms
* local transformation is calculated from position,scale,skew and rotation
*/
class Transform extends TransformBase {
constructor();
position: Point;
scale: Point;
skew: ObservablePoint;
pivot: Point;
protected _rotation: number;
protected _sr?: number;
protected _cr?: number;
protected _cy?: number;
protected _sy?: number;
protected _sx?: number;
protected _cx?: number;
updateSkew(): void;
/**
* Decomposes a matrix and sets the transforms properties based on it.
*
* @param matrix - The matrix to decompose
*/
setFromMatrix(matrix: Matrix): void;
rotation: number;
}
// graphics
/**
* A GraphicsData object.
*/
class GraphicsData {
constructor(
lineWidth: number,
lineColor: number,
lineAlpha: number,
fillColor: number,
fillAlpha: number,
fill: boolean,
nativeLines: boolean,
shape: Circle | Rectangle | Ellipse | Polygon | RoundedRectangle | any,
lineAlignment?: number,
);
lineWidth: number;
lineAlignment: number;
nativeLines: boolean;
lineColor: number;
lineAlpha: number;
protected _lineTint: number;
fillColor: number;
fillAlpha: number;
protected _fillTint: number;
fill: boolean;
protected holes: Circle[] | Rectangle[] | Ellipse[] | Polygon[] | RoundedRectangle[] | any[];
shape: Circle | Rectangle | Ellipse | Polygon | RoundedRectangle | any;
type?: number;
/**
* Creates a new GraphicsData object with the same values as this one.
*
* @return Cloned GraphicsData object
*/
clone(): GraphicsData;
/**
* Adds a hole to the shape.
*
* @param shape - The shape of the hole.
*/
addHole(shape: Circle | Rectangle | Ellipse | Polygon | RoundedRectangle | any): void;
/**
* Destroys the Graphics data.
*/
destroy(options?: DestroyOptions | boolean): void;
}
/**
* The Graphics class contains methods used to draw primitive shapes such as lines, circles and
* rectangles to the display, and to color and fill them.
*/
class Graphics extends Container {
/**
* Graphics curves resolution settings. If `adaptive` flag is set to `true`,
* the resolution is calculated based on the curve"s length to ensure better visual quality.
* Adaptive draw works with `bezierCurveTo` and `quadraticCurveTo`.
*
* @property {boolean} adaptive=false - flag indicating if the resolution should be adaptive
* @property {number} maxLength=10 - maximal length of a single segment of the curve (if adaptive = false, ignored)
* @property {number} minSegments=8 - minimal number of segments in the curve (if adaptive = false, ignored)
* @property {number} maxSegments=2048 - maximal number of segments in the curve (if adaptive = false, ignored)
*/
static CURVES: {
adaptive: boolean;
maxLength: number;
minSegments: number;
maxSegments: number;
};
constructor(nativeLines?: boolean);
/**
* When cacheAsBitmap is set to true the graphics object will be rendered as if it was a sprite.
* This is useful if your graphics element does not change often, as it will speed up the rendering
* of the object in exchange for taking up texture memory. It is also useful if you need the graphics
* object to be anti-aliased, because it will be rendered using canvas. This is not recommended if
* you are constantly redrawing the graphics element.
*
* @default false
*/
cacheAsBitmap: boolean;
fillAlpha: number;
lineWidth: number;
nativeLines: boolean;
lineColor: number;
lineAlignment: number;
protected graphicsData: GraphicsData[];
tint: number;
protected _prevTint: number;
blendMode: number;
currentPath: GraphicsData;
protected _webGL: any;
isMask: boolean;
boundsPadding: number;
protected _localBounds: Bounds;
dirty: number;
canvasTintDirty: number;
fastRectDirty: number;
clearDirty: number;
boundsDirty: number;
protected cachedSpriteDirty: boolean;
protected _spriteRect: Rectangle;
protected _fastRect: boolean;
static _SPRITE_TEXTURE: Texture;
clone(): Graphics;
protected _quadraticCurveLength(
fromX: number,
fromY: number,
cpX: number,
cpY: number,
toX: number,
toY: number,
): number;
protected _bezierCurveLength(
fromX: number,
fromY: number,
cpX: number,
cpY: number,
cpX2: number,
cpY2: number,
toX: number,
toY: number,
): number;
protected _segmentsCount(length: number): number;
lineStyle(lineWidth?: number, color?: number, alpha?: number, alignment?: number): Graphics;
moveTo(x: number, y: number): Graphics;
lineTo(x: number, y: number): Graphics;
quadraticCurveTo(cpX: number, cpY: number, toX: number, toY: number): Graphics;
bezierCurveTo(cpX: number, cpY: number, cpX2: number, cpY2: number, toX: number, toY: number): Graphics;
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): Graphics;
arc(
cx: number,
cy: number,
radius: number,
startAngle: number,
endAngle: number,
anticlockwise?: boolean,
): Graphics;
beginFill(color: number, alpha?: number): Graphics;
endFill(): Graphics;
drawRect(x: number, y: number, width: number, height: number): Graphics;
drawRoundedRect(x: number, y: number, width: number, height: number, radius: number): Graphics;
drawCircle(x: number, y: number, radius: number): Graphics;
drawEllipse(x: number, y: number, width: number, height: number): Graphics;
drawPolygon(path: number[] | Point[] | Polygon): Graphics;
drawStar(
x: number,
y: number,
points: number,
radius: number,
innerRadius: number,
rotation?: number,
): Graphics;
clear(): Graphics;
isFastRect(): boolean;
protected _renderCanvas(renderer: CanvasRenderer): void;
protected _calculateBounds(): Rectangle;
protected _renderSpriteRect(renderer: PIXI.SystemRenderer): void;
containsPoint(point: Point): boolean;
updateLocalBounds(): void;
drawShape(shape: Circle | Rectangle | Ellipse | Polygon | RoundedRectangle | any): GraphicsData;
generateCanvasTexture(scaleMode?: number, resolution?: number): Texture;
closePath(): Graphics;
addHole(): Graphics;
destroy(options?: DestroyOptions | boolean): void;
}
class CanvasGraphicsRenderer {
constructor(renderer: SystemRenderer);
render(graphics: Graphics): void;
protected updateGraphicsTint(graphics: Graphics): void;
protected renderPolygon(points: Point[], close: boolean, context: CanvasRenderingContext2D): void;
destroy(): void;
}
/**
* Renders the graphics object.
*/
class GraphicsRenderer extends ObjectRenderer {
constructor(renderer: PIXI.CanvasRenderer);
protected graphicsDataPool: GraphicsData[];
protected primitiveShader: PrimitiveShader;
gl: WebGLRenderingContext;
CONTEXT_UID: number;
/**
* Destroys this renderer.
*/
destroy(): void;
/**
* Renders a graphics object.
*
* @param graphics - The graphics object to render.
*/
render(graphics: Graphics): void;
protected updateGraphics(graphics: PIXI.Graphics): void;
getWebGLData(webGL: WebGLRenderingContext, type: number, nativeLines: number): WebGLGraphicsData;
}
class WebGLGraphicsData {
constructor(gl: WebGLRenderingContext, shader: glCore.GLShader, attribsState: glCore.AttribState);
gl: WebGLRenderingContext;
color: number[];
points: Point[];
indices: number[];
buffer: WebGLBuffer;
indexBuffer: WebGLBuffer;
dirty: boolean;
glPoints: number[];
glIndices: number[];
shader: glCore.GLShader;
vao: glCore.VertexArrayObject;
nativeLines: boolean;
reset(): void;
upload(): void;
destroy(): void;
}
/**
* This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}.
*/
class PrimitiveShader extends glCore.GLShader {}
// math
/**
* Implements Dihedral Group D_8, see [group D4]{@link http://mathworld.wolfram.com/DihedralGroupD4.html},
* D8 is the same but with diagonals. Used for texture rotations.
*
* Vector xX(i), xY(i) is U-axis of sprite with rotation i
* Vector yY(i), yY(i) is V-axis of sprite with rotation i
* Rotations: 0 grad (0), 90 grad (2), 180 grad (4), 270 grad (6)
* Mirrors: vertical (8), main diagonal (10), horizontal (12), reverse diagonal (14)
* This is the small part of gameofbombs.com portal system. It works.
*
* @author Ivan @ivanpopelyshev
* @class
* @memberof PIXI
*/
namespace GroupD8 {
const E: number;
const SE: number;
const S: number;
const SW: number;
const W: number;
const NW: number;
const N: number;
const NE: number;
const MIRROR_HORIZONTAL: number;
const MIRROR_VERTICAL: number;
function uX(ind: number): number;
function uY(ind: number): number;
function vX(ind: number): number;
function vY(ind: number): number;
function inv(rotation: number): number;
function add(rotationSecond: number, rotationFirst: number): number;
function sub(rotationSecond: number, rotationFirst: number): number;
/**
* Adds 180 degrees to rotation. Commutative operation.
*
* @param rotation - The number to rotate.
* @returns rotated number
*/
function rotate180(rotation: number): number;
/**
* Direction of main vector can be horizontal, vertical or diagonal.
* Some objects work with vertical directions different.
*
* @param rotation - The number to check.
* @returns Whether or not the direction is vertical
*/
function isVertical(rotation: number): boolean;
/**
* @param dx - TODO
* @param dy - TODO
*
* @return TODO
*/
function byDirection(dx: number, dy: number): number;
/**
* Helps sprite to compensate texture packer rotation.
*
* @param matrix - sprite world matrix
* @param rotation - The rotation factor to use.
* @param tx - sprite anchoring
* @param ty - sprite anchoring
*/
function matrixAppendRotationInv(matrix: Matrix, rotation: number, tx: number, ty: number): void;
}
/**
* The PixiJS Matrix class as an object, which makes it a lot faster,
* here is a representation of it :
* | a | c | tx|
* | b | d | ty|
* | 0 | 0 | 1 |
*/
class Matrix {
constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number);
a: number;
b: number;
c: number;
d: number;
tx: number;
ty: number;
/**
* Creates a Matrix object based on the given array. The Element to Matrix mapping order is as follows:
*
* a = array[0]
* b = array[1]
* c = array[3]
* d = array[4]
* tx = array[2]
* ty = array[5]
*
* @param {number[]} array - The array that the matrix will be populated from.
*/
fromArray(array: number[]): void;
/**
* sets the matrix properties
*
* @param a - Matrix component
* @param b - Matrix component
* @param c - Matrix component
* @param d - Matrix component
* @param tx - Matrix component
* @param ty - Matrix component
*
* @return This matrix. Good for chaining method calls.
*/
set(a: number, b: number, c: number, d: number, tx: number, ty: number): Matrix;
/**
* Creates an array from the current Matrix object.
*
* @param transpose - Whether we need to transpose the matrix or not
* @param [out=new Float32Array(9)] - If provided the array will be assigned to out
* @return the newly created array which contains the matrix
*/
toArray(transpose?: boolean, out?: number[]): number[];
/**
* Get a new position with the current transformation applied.
* Can be used to go from a child"s coordinate space to the world coordinate space. (e.g. rendering)
*
* @param pos - The origin
* @param [newPos] - The point that the new position is assigned to (allowed to be same as input)
* @return The new point, transformed through this matrix
*/
apply(pos: Point, newPos?: Point): Point;
applyInverse(pos: Point, newPos?: Point): Point;
translate(x: number, y: number): Matrix;
scale(x: number, y: number): Matrix;
rotate(angle: number): Matrix;
append(matrix: Matrix): Matrix;
setTransform(
x: number,
y: number,
pivotX: number,
pivotY: number,
scaleX: number,
scaleY: number,
rotation: number,
skewX: number,
skewY: number,
): PIXI.Matrix;
prepend(matrix: Matrix): Matrix;
invert(): Matrix;
identity(): Matrix;
decompose(transform: TransformBase): TransformBase;
clone(): Matrix;
copy(matrix: Matrix): Matrix;
static IDENTITY: Matrix;
static TEMP_MATRIX: Matrix;
}
class PointLike {
x: number;
y: number;
set(x?: number, y?: number): void;
copy(point: PointLike): void;
}
/**
* The Point object represents a location in a two-dimensional coordinate system, where x represents
* the horizontal axis and y represents the vertical axis.
* An observable point is a point that triggers a callback when the point"s position is changed.
*/
class ObservablePoint extends PointLike {
constructor(cb: () => any, scope?: any, x?: number, y?: number);
clone(cb?: Function, scope?: any): ObservablePoint;
equals(p: Point | ObservablePoint | PointLike): boolean;
cb: () => any;
scope: any;
}
/**
* The Point object represents a location in a two-dimensional coordinate system, where x represents
* the horizontal axis and y represents the vertical axis.
*/
class Point extends PointLike {
constructor(x?: number, y?: number);
clone(): Point;
equals(p: PointLike): boolean;
}
interface HitArea {
contains(x: number, y: number): boolean;
}
/**
* The Circle object can be used to specify a hit area for displayObjects
*/
class Circle implements HitArea {
constructor(x?: number, y?: number, radius?: number);
x: number;
y: number;
radius: number;
type: number;
clone(): Circle;
contains(x: number, y: number): boolean;
getBounds(): Rectangle;
}
/**
* The Ellipse object can be used to specify a hit area for displayObjects
*/
class Ellipse implements HitArea {
constructor(x?: number, y?: number, halfWidth?: number, halfHeight?: number);
x: number;
y: number;
width: number;
height: number;
type: number;
clone(): Ellipse;
contains(x: number, y: number): boolean;
getBounds(): Rectangle;
}
class Polygon implements HitArea {
constructor(points: Point[] | number[]);
// Note - Rest Params cannot be combined with |
//tslint:disable-next-line:unified-signatures
constructor(...points: Point[]);
//tslint:disable-next-line:unified-signatures
constructor(...points: number[]);
closed: boolean;
points: number[];
type: number;
clone(): Polygon;
contains(x: number, y: number): boolean;
close(): void;
}
/**
* Rectangle object is an area defined by its position, as indicated by its top-left corner
* point (x, y) and by its width and its height.
*/
class Rectangle implements HitArea {
constructor(x?: number, y?: number, width?: number, height?: number);
x: number;
y: number;
width: number;
height: number;
type: number;
left: number;
right: number;
top: number;
bottom: number;
static EMPTY: Rectangle;
/**
* Creates a clone of this Rectangle
*
* @return a copy of the rectangle
*/
clone(): Rectangle;
/**
* Enlarges rectangle that way its corners lie on grid
*
* @param [resolution=1] resolution
* @param [eps=0.001] precision
*/
ceil(resolution?: number, eps?: number): void;
/**
* Copies another rectangle to this one.
*
* @param rectangle - The rectangle to copy.
* @return Returns itself.
*/
copy(rectangle: Rectangle): Rectangle;
/**
* Checks whether the x and y coordinates given are contained within this Rectangle
*
* @param x - The X coordinate of the point to test
* @param y - The Y coordinate of the point to test
* @return Whether the x/y coordinates are within this Rectangle
*/
contains(x: number, y: number): boolean;
/**
* Pads the rectangle making it grow in all directions.
*
* @param paddingX - The horizontal padding amount.
* @param [paddingY] - The vertical padding amount.
*/
pad(paddingX: number, paddingY: number): void;
/**
* Fits this rectangle around the passed one.
*
* @param rectangle - The rectangle to fit.
*/
fit(rectangle: Rectangle): void;
/**
* Enlarges this rectangle to include the passed rectangle.
*
* @param rectangle - The rectangle to include.
*/
enlarge(rectangle: Rectangle): void;
}
class RoundedRectangle implements HitArea {
constructor(x?: number, y?: number, width?: number, height?: number, radius?: number);
x: number;
y: number;
width: number;
height: number;
radius: number;
type: number;
clone(): RoundedRectangle;
contains(x: number, y: number): boolean;
}
// renderers
interface RendererOptions {
/**
* the width of the renderers view [default=800]
*/
width?: number;
/**
* the height of the renderers view [default=600]
*/
height?: number;
/**
* the canvas to use as a view, optional
*/
view?: HTMLCanvasElement;
/**
* If the render view is transparent, [default=false]
*/
transparent?: boolean;
/**
* sets antialias (only applicable in chrome at the moment) [default=false]
*/
antialias?: boolean;
/**
* enables drawing buffer preservation, enable this if you need to call toDataUrl on the webgl context [default=false]
*/
preserveDrawingBuffer?: boolean;
/**
* The resolution / device pixel ratio of the renderer, retina would be 2 [default=1]
*/
resolution?: number;
/**
* prevents selection of WebGL renderer, even if such is present [default=false]
*/
forceCanvas?: boolean;
/**
* The background color of the rendered area (shown if not transparent) [default=0x000000]
*/
backgroundColor?: number;
/**
* This sets if the renderer will clear the canvas or not before the new render pass. [default=true]
*/
clearBeforeRender?: boolean;
/**
* If true Pixi will Math.floor() x/ y values when rendering, stopping pixel interpolation. [default=false]
*/
roundPixels?: boolean;
/**
* forces FXAA antialiasing to be used over native FXAA is faster, but may not always look as great ** webgl only** [default=false]
*/
forceFXAA?: boolean;
/**
* `true` to ensure compatibility with older / less advanced devices. If you experience unexplained flickering try setting this to true. **webgl only** [default=false]
*/
legacy?: boolean;
/**
* Deprecated
*/
context?: WebGLRenderingContext;
/**
* @deprecated
*/
autoResize?: boolean;
/**
* Parameter passed to webgl context, set to "high-performance" for devices with dual graphics card
*/
powerPreference?: "high-performance";
}
interface ApplicationOptions extends RendererOptions {
/**
* `true` to use PIXI.ticker.shared, `false` to create new ticker. [default=false]
*/
sharedTicker?: boolean;
/**
* `true` to use PIXI.loaders.shared, `false` to create new Loader.
*/
sharedLoader?: boolean;
/**
* automatically starts the rendering after the construction.
* Note that setting this parameter to false does NOT stop the shared ticker even if you set
* options.sharedTicker to true in case that it is already started. Stop it by your own.
*/
autoStart?: boolean;
}
interface DefaultRendererPlugins {
accessibility: accessibility.AccessibilityManager;
interaction: interaction.InteractionManager;
}
interface RendererPlugins extends DefaultRendererPlugins {}
/**
* The SystemRenderer is the base for a PixiJS Renderer. It is extended by the {@link PIXI.CanvasRenderer}
* and {@link PIXI.WebGLRenderer} which can be used for rendering a PixiJS scene.
*/
class SystemRenderer extends utils.EventEmitter {
constructor(system: string, options?: RendererOptions);
constructor(system: string, screenWidth?: number, screenHeight?: number, options?: RendererOptions);
type: number;
options: RendererOptions;
screen: Rectangle;
readonly width: number;
readonly height: number;
view: HTMLCanvasElement;
resolution: number;
transparent: boolean;
autoResize: boolean;
blendModes: any; // todo?
preserveDrawingBuffer: boolean;
clearBeforeRender: boolean;
roundPixels: boolean;
backgroundColor: number;
protected _backgroundColor: number;
protected _backgroundColorRgba: number[];
protected _backgroundColorString: string;
protected _tempDisplayObjectParent: Container;
protected _lastObjectRendered: DisplayObject;
resize(screenWidth: number, screenHeight: number): void;
generateTexture(
displayObject: DisplayObject,
scaleMode?: number,
resolution?: number,
region?: Rectangle,
): RenderTexture;
render(...args: any[]): void;
destroy(removeView?: boolean): void;
}
interface DefaultCanvasRendererPlugins {
extract: extract.CanvasExtract;
prepare: prepare.CanvasPrepare;
}
interface CanvasRendererPlugins extends DefaultCanvasRendererPlugins, RendererPlugins {}
/**
* The CanvasRenderer draws the scene and all its content onto a 2d canvas. This renderer should
* be used for browsers that do not support WebGL. Don"t forget to add the CanvasRenderer.view to
* your DOM or you will not see anything :)
*/
class CanvasRenderer extends SystemRenderer {
// plugintarget mixin start
static __plugins: {
[pluginName: string]: { new (renderer: CanvasRenderer): any };
};
/**
* Adds a plugin to the renderer.
*
* @param pluginName - The name of the plugin.
* @param ctor - The constructor function or class for the plugin.
*/
static registerPlugin(pluginName: string, ctor: { new (renderer: CanvasRenderer): any }): void;
/**
* Collection of installed plugins. These are included by default in PIXI, but can be excluded
* by creating a custom build. Consult the README for more information about creating custom
* builds and excluding plugins.
*
* @property {PIXI.accessibility.AccessibilityManager} accessibility Support tabbing interactive elements.
* @property {PIXI.extract.CanvasExtract} extract Extract image data from renderer.
* @property {PIXI.interaction.InteractionManager} interaction Handles mouse, touch and pointer events.
* @property {PIXI.prepare.CanvasPrepare} prepare Pre-render display objects.
*/
plugins: any;
initPlugins(): void;
destroyPlugins(): void;
// plugintarget mixin end
constructor(options?: RendererOptions);
constructor(screenWidth?: number, screenHeight?: number, options?: RendererOptions);
protected _activeBlendMode: number;
rootContext: CanvasRenderingContext2D;
rootResolution?: number;
refresh: boolean;
maskManager: CanvasMaskManager;
smoothProperty: string;
/**
* Collection of methods for extracting data (image, pixels, etc.) from a display object or render texture
*/
extract: extract.CanvasExtract;
context: CanvasRenderingContext2D | null;
render(
displayObject: PIXI.DisplayObject,
renderTexture?: PIXI.RenderTexture,
clear?: boolean,
transform?: PIXI.Matrix,
skipUpdateTransform?: boolean,
): void;
setBlendMode(blendMode: number): void;
destroy(removeView?: boolean): void;
clear(clearColor?: string): void;
invalidateBlendMode(): void;
on(event: "prerender" | "postrender", fn: () => void, context?: any): this;
once(event: "prerender" | "postrender", fn: () => void, context?: any): this;
removeListener(event: "prerender" | "postrender", fn?: () => void, context?: any): this;
removeAllListeners(event?: "prerender" | "postrender"): this;
off(event: "prerender" | "postrender", fn?: () => void, context?: any): this;
addListener(event: "prerender" | "postrender", fn: () => void, context?: any): this;
}
/**
* A set of functions used to handle masking.
*/
class CanvasMaskManager {
constructor(renderer: CanvasRenderer);
pushMask(maskData: any): void;
protected renderGraphicsShape(graphics: Graphics): void;
popMask(renderer: WebGLRenderer | CanvasRenderer): void;
destroy(): void;
}
/**
* Creates a Canvas element of the given size.
*/
class CanvasRenderTarget {
constructor(width: number, height: number, resolution: number);
canvas: HTMLCanvasElement;
context: CanvasRenderingContext2D;
resolution: number;
width: number;
height: number;
clear(): void;
resize(width: number, height: number): void;
destroy(): void;
}
interface WebGLRendererOptions extends RendererOptions {}
interface DefaultWebGLRendererPlugins {
extract: extract.WebGLExtract;
prepare: prepare.WebGLPrepare;
}
interface WebGLRendererPlugins extends DefaultWebGLRendererPlugins, RendererPlugins {}
interface WebGLRendererOptions extends RendererOptions {}
/**
* The WebGLRenderer draws the scene and all its content onto a webGL enabled canvas. This renderer
* should be used for browsers that support webGL. This Render works by automatically managing webGLBatchs.
* So no need for Sprite Batches or Sprite Clouds.
* Don"t forget to add the view to your DOM or you will not see anything :)
*/
class WebGLRenderer extends SystemRenderer {
// plugintarget mixin start
static __plugins: {
[pluginName: string]: { new (renderer: WebGLRenderer): any };
};
/**
* Adds a plugin to the renderer.
*/
static registerPlugin(pluginName: string, ctor: { new (renderer: WebGLRenderer): any }): void;
/**
* Collection of installed plugins. These are included by default in PIXI, but can be excluded
* by creating a custom build. Consult the README for more information about creating custom
* builds and excluding plugins.
* @property {PIXI.accessibility.AccessibilityManager} accessibility Support tabbing interactive elements.
* @property {PIXI.extract.WebGLExtract} extract Extract image data from renderer.
* @property {PIXI.interaction.InteractionManager} interaction Handles mouse, touch and pointer events.
* @property {PIXI.prepare.WebGLPrepare} prepare Pre-render display objects.
*/
plugins: any;
initPlugins(): void;
destroyPlugins(): void;
// plugintarget mixin end
constructor(options?: WebGLRendererOptions);
constructor(screenWidth?: number, screenHeight?: number, options?: WebGLRendererOptions);
protected _contextOptions: {
alpha: boolean;
antiAlias?: boolean;
premultipliedAlpha: boolean;
stencil: boolean;
preseveDrawingBuffer?: boolean;
};
protected _backgroundColorRgba: number[];
maskManager: MaskManager;
stencilManager?: StencilManager;
emptyRenderer: ObjectRenderer;
currentRenderer: ObjectRenderer;
gl: WebGLRenderingContext;
CONTEXT_UID: number;
state?: WebGLState;
renderingToScreen: boolean;
boundTextures: BaseTexture[];
emptyTextures: BaseTexture[];
protected _unknownBoundTextures: BaseTexture[];
filterManager: FilterManager;
textureManager?: TextureManager;
textureGC?: TextureGarbageCollector;
/**
* Collection of methods for extracting data (image, pixels, etc.) from a display object or render texture
*/
extract: extract.WebGLExtract;
protected drawModes: any;
protected _activeShader: Shader;
_activeRenderTarget: RenderTarget;
protected _initContext(): void;
render(
displayObject: PIXI.DisplayObject,
renderTexture?: PIXI.RenderTexture,
clear?: boolean,
transform?: PIXI.Matrix,
skipUpdateTransform?: boolean,
): void;
setObjectRenderer(objectRenderer: ObjectRenderer): void;
flush(): void;
setBlendMode(blendMode: number): void;
clear(clearColor?: number): void;
setTransform(matrix: Matrix): void;
clearRenderTexture(renderTexture: RenderTexture, clearColor?: number): WebGLRenderer;
bindRenderTexture(renderTexture: RenderTexture, transform: Matrix): WebGLRenderer;
bindRenderTarget(renderTarget: RenderTarget): WebGLRenderer;
bindShader(shader: Shader, autoProject?: boolean): WebGLRenderer;
bindTexture(texture: Texture | BaseTexture, location?: number, forceLocation?: boolean): number;
unbindTexture(texture: Texture | BaseTexture): WebGLRenderer | undefined;
createVao(): glCore.VertexArrayObject;
bindVao(vao: glCore.VertexArrayObject): WebGLRenderer;
reset(): WebGLRenderer;
handleContextLost: (event: WebGLContextEvent) => void;
handleContextRestored: () => void;
destroy(removeView?: boolean): void;
on(event: "prerender" | "postrender", fn: () => void, context?: any): this;
on(event: "context", fn: (gl: WebGLRenderingContext) => void, context?: any): this;
once(event: "prerender" | "postrender", fn: () => void, context?: any): this;
once(event: "context", fn: (gl: WebGLRenderingContext) => void, context?: any): this;
removeListener(event: "prerender" | "postrender", fn?: () => void, context?: any): this;
removeListener(event: "context", fn?: (gl: WebGLRenderingContext) => void, context?: any): this;
removeAllListeners(event?: "prerender" | "postrender" | "context"): this;
off(event: "prerender" | "postrender", fn?: () => void, context?: any): this;
off(event: "context", fn?: (gl: WebGLRenderingContext) => void, context?: any): this;
addListener(event: "prerender" | "postrender", fn: () => void, context?: any): this;
addListener(event: "context", fn: (gl: WebGLRenderingContext) => void, context?: any): this;
}
/**
* A WebGL state machines
*/
class WebGLState {
constructor(gl: WebGLRenderingContext);
activeState: number[];
defaultState: number[];
stackIndex: number;
stack: number[];
gl: WebGLRenderingContext;
maxAttribs: number;
attribState: glCore.AttribState;
nativeVaoExtension: any;
push(): void;
pop(): void;
setState(state: number[]): void;
setBlend(value: number): void;
setBlendMode(value: number): void;
setDepthTest(value: number): void;
setCullFace(value: number): void;
setFrontFace(value: number): void;
resetAttributes(): void;
resetToDefault(): void;
}
/**
* Helper class to create a webGL Texture
*/
class TextureManager {
constructor(renderer: WebGLRenderer);
renderer: WebGLRenderer;
gl: WebGLRenderingContext;
protected _managedTextures: Texture[];
bindTexture(): void;
getTexture(): WebGLTexture;
updateTexture(texture: BaseTexture | Texture): WebGLTexture;
destroyTexture(texture: BaseTexture, _skipRemove?: boolean): void;
removeAll(): void;
destroy(): void;
}
/**
* TextureGarbageCollector. This class manages the GPU and ensures that it does not get clogged
* up with textures that are no longer being used.
*/
class TextureGarbageCollector {
constructor(renderer: WebGLRenderer);
renderer: WebGLRenderer;
count: number;
checkCount: number;
maxIdle: number;
checkCountMax: number;
mode: number;
update(): void;
run(): void;
unload(displayObject: DisplayObject): void;
}
/**
* Base for a common object renderer that can be used as a system renderer plugin.
*/
abstract class ObjectRenderer extends WebGLManager {
constructor(renderer: WebGLRenderer);
/**
* Starts the renderer and sets the shader
*/
start(): void;
stop(): void;
/**
* Stub method for rendering content and emptying the current batch.
*/
flush(): void;
render(...args: any[]): void;
}
/**
* Helper class to create a quad
*/
class Quad {
constructor(gl: WebGLRenderingContext);
gl: WebGLRenderingContext;
vertices: number[];
uvs: number[];
interleaved: number[];
indices: number[];
vertexBuffer: WebGLBuffer;
vao: glCore.VertexArrayObject;
initVao(shader: glCore.GLShader): void;
map(targetTextureFrame: Rectangle, destinationFrame: Rectangle): Quad;
upload(): Quad;
destroy(): void;
}
interface FilterDataStackItem {
renderTarget: RenderTarget;
filter: any[];
bounds: Rectangle;
}
class RenderTarget {
protected filterPoolKey: string;
constructor(
gl: WebGLRenderingContext,
width: number,
height: number,
scaleMode: number,
resolution: number,
root?: boolean,
);
gl: WebGLRenderingContext;
frameBuffer: glCore.GLFramebuffer;
texture: Texture;
clearColor: number[];
size: Rectangle;
resolution: number;
projectionMatrix: Matrix;
transform: Matrix;
frame: Rectangle;
defaultFrame: Rectangle;
destinationFrame: Rectangle;
sourceFrame?: Rectangle;
stencilBuffer: glCore.GLFramebuffer;
stencilMaskStack: Graphics[];
filterData: {
index: number;
stack: FilterDataStackItem[];
};
scaleMode: number;
root: boolean;
clear(clearColor?: number[]): void;
attachStencilBuffer(): void;
setFrame(destinationFrame: Rectangle, sourceFrame: Rectangle): void;
activate(): void;
calculateProjection(destinationFrame: Rectangle, sourceFrame: Rectangle): void;
resize(width: number, height: number): void;
destroy(): void;
}
class BlendModeManager extends WebGLManager {
constructor(renderer: WebGLRenderer);
currentBlendMode: number;
setBlendMode(blendMode: number): boolean;
}
interface FilterManagerStackItem {
renderTarget: RenderTarget;
sourceFrame: Rectangle;
destinationFrame: Rectangle;
filters: Array<Filter<any>>;
target: any;
resolution: number;
}
class FilterManager extends WebGLManager {
constructor(renderer: WebGLRenderer);
protected _screenWidth: number;
protected _screenHeight: number;
gl: WebGLRenderingContext;
quad: Quad;
stack: FilterManagerStackItem[];
stackIndex: number;
shaderCache: any;
filterData: any;
onPrerender(): void;
pushFilter(target: RenderTarget, filters: Array<Filter<any>>): void;
popFilter(): void;
applyFilter(
shader: glCore.GLShader | Filter<any>,
inputTarget: RenderTarget,
outputTarget: RenderTarget,
clear?: boolean,
): void;
syncUniforms(shader: glCore.GLShader, filter: Filter<any>): void;
getRenderTarget(clear?: boolean, resolution?: number): RenderTarget;
returnRenderTarget(renderTarget: RenderTarget): RenderTarget;
calculateScreenSpaceMatrix(outputMatrix: Matrix): Matrix;
calculateNormalizedScreenSpaceMatrix(outputMatrix: Matrix): Matrix;
calculateSpriteMatrix(outputMatrix: Matrix, sprite: Sprite): Matrix;
destroy(contextLost?: boolean): void;
emptyPool(): void;
getPotRenderTarget(
gl: WebGLRenderingContext,
minWidth: number,
minHeight: number,
resolution: number,
): RenderTarget;
freePotRenderTarget(renderTarget: RenderTarget): void;
}
class StencilMaskStack {
stencilStack: any[];
reverse: boolean;
count: number;
}
class MaskManager extends WebGLManager {
scissor: boolean;
scissorData: any;
scissorRenderTarget: RenderTarget;
enableScissor: boolean;
alphaMaskPool: number[];
alphaMaskIndex: number;
pushMask(target: RenderTarget, maskData: Sprite | Graphics): void;
popMask(target: RenderTarget, maskData: Sprite | Graphics): void;
pushSpriteMask(target: RenderTarget, maskData: Sprite | Graphics): void;
popSpriteMask(): void;
pushStencilMask(maskData: Sprite | Graphics): void;
popStencilMask(): void;
pushScissorMask(target: RenderTarget, maskData: Sprite | Graphics): void;
popScissorMask(): void;
}
class StencilManager extends WebGLManager {
constructor(renderer: WebGLRenderer);
stencilMaskStack: Graphics[];
protected _useCurrent(): void;
protected _getBitwiseMask(): number;
setMaskStack(stencilMasStack: Graphics[]): void;
pushStencil(graphics: Graphics): void;
popStencil(): void;
destroy(): void;
}
class WebGLManager {
constructor(renderer: WebGLRenderer);
renderer: WebGLRenderer;
onContextChange(): void;
destroy(): void;
}
interface UniformData<V> {
type: string;
value: V;
// name is set by pixi if uniforms were automatically extracted from shader code, but not used anywhere
name?: string;
}
type UniformDataMap<U> = { [K in keyof U]: UniformData<U[K]> };
class Filter<U extends Object> {
constructor(vertexSrc?: string, fragmentSrc?: string, uniformData?: UniformDataMap<U>);
protected _blendMode: number;
vertexSrc?: string;
fragmentSrc: string;
blendMode: number;
protected uniformData: UniformDataMap<U>;
uniforms: U;
glShaders: any;
glShaderKey?: number;
padding: number;
resolution: number;
enabled: boolean;
autoFit: boolean;
apply(
filterManager: FilterManager,
input: RenderTarget,
output: RenderTarget,
clear?: boolean,
currentState?: any,
): void;
static defaultVertexSrc: string;
static defaultFragmentSrc: string;
}
interface SpriteMaskFilterUniforms {
mask: Texture;
otherMatrix: Matrix;
alpha: number;
}
/**
* The SpriteMaskFilter class
*/
class SpriteMaskFilter extends Filter<SpriteMaskFilterUniforms> {
constructor(sprite: Sprite);
maskSprite: Sprite;
maskMatrix: Matrix;
apply(filterManager: FilterManager, input: RenderTarget, output: RenderTarget, clear?: boolean): void;
}
// sprites
/**
* The Sprite object is the base for all textured objects that are rendered to the screen
*
* A sprite can be created directly from an image like this:
*
* ```js
* let sprite = new PIXI.Sprite.fromImage("assets/image.png");
* ```
*
* The more efficient way to create sprites is using a {@link PIXI.Spritesheet}:
*
* ```js
* PIXI.loader.add("assets/spritesheet.json").load(setup);
*
* function setup() {
* let sheet = PIXI.loader.resources["assets/spritesheet.json"].spritesheet;
* let sprite = new PIXI.Sprite(sheet.textures["image.png"]);
* ...
* }
* ```
*/
class Sprite extends Container {
constructor(texture?: Texture);
protected _anchor: ObservablePoint;
anchor: ObservablePoint;
protected _texture: Texture;
protected _transformTrimmedID: number;
protected _textureTrimmedID: number;
protected _width: number;
protected _height: number;
tint: number;
protected _tint: number;
protected _tintRGB: number;
blendMode: number;
pluginName: string;
protected cachedTint: number;
texture: Texture;
protected textureDirty: boolean;
protected _textureID: number;
protected _transformID: number;
protected vertexTrimmedData: Float32Array;
vertexData: Float32Array;
width: number;
height: number;
protected _onTextureUpdate(): void;
/**
* calculates worldTransform * vertices, store it in vertexData
*/
calculateVertices(): void;
protected _calculateBounds(): void;
/**
* calculates worldTransform * vertices for a non texture with a trim. store it in vertexTrimmedData
* This is used to ensure that the true width and height of a trimmed texture is respected
*/
protected calculateTrimmedVertices(): void;
protected onAnchorUpdate(): void;
protected _renderWebGL(renderer: WebGLRenderer): void;
protected _renderCanvas(renderer: CanvasRenderer): void;
/**
* Gets the local bounds of the sprite object.
*
* @param rect - The output rectangle.
* @return The bounds.
*/
getLocalBounds(): Rectangle;
/**
* Tests if a point is inside this sprite
*
* @param point - the point to test
* @return the result of the test
*/
containsPoint(point: Point): boolean;
/**
* Destroys this sprite and optionally its texture and children
*
* @param [options] - Options parameter. A boolean will act as if all options have been set to that value
*/
destroy(options?: DestroyOptions | boolean): void;
static from(
source: number | string | BaseTexture | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement,
): Sprite;
static fromFrame(frameId: string): Sprite;
static fromImage(imageId: string, crossorigin?: boolean, scaleMode?: number): Sprite;
}
class BatchBuffer {
vertices: ArrayBuffer;
float32View: number[];
uint32View: number[];
destroy(): void;
}
class SpriteRenderer extends ObjectRenderer {
constructor(renderer: PIXI.WebGLRenderer);
vertSize: number;
vertByteSize: number;
size: number;
buffers: BatchBuffer[];
indices: number[];
shaders: Shader[];
currentIndex: number;
tick: number;
groups: any[];
sprites: Sprite[];
vertexBuffers: number[];
vaos: glCore.VertexArrayObject[];
vaoMax: number;
vertexCount: number;
protected onContextChanged: () => void;
protected onPrerender: () => void;
render(sprite: Sprite): void;
flush(): void;
start(): void;
stop(): void;
destroy(): void;
}
class CanvasSpriteRenderer extends ObjectRenderer {
constructor(renderer: WebGLRenderer);
render(sprite: Sprite): void;
destroy(): void;
}
namespace CanvasTinter {
function getTintedTexture(sprite: Sprite, color: number): HTMLCanvasElement;
function tintWithMultiply(texture: Texture, color: number, canvas: HTMLCanvasElement): void;
function tintWithOverlay(texture: Texture, color: number, canvas: HTMLCanvasElement): void;
function tintWithPerPixel(texture: Texture, color: number, canvas: HTMLCanvasElement): void;
function roundColor(color: number): number;
let cacheStepsPerColorChannel: number;
let convertTintToImage: boolean;
let canUseMultiply: boolean;
let tintMethod: number;
}
// text
interface TextStyleOptions {
align?: string;
breakWords?: boolean;
dropShadow?: boolean;
dropShadowAlpha?: number;
dropShadowAngle?: number;
dropShadowBlur?: number;
dropShadowColor?: string | number;
dropShadowDistance?: number;
fill?: string | string[] | number | number[] | CanvasGradient | CanvasPattern;
fillGradientType?: number;
fillGradientStops?: number[];
fontFamily?: string | string[];
fontSize?: number | string;
fontStyle?: string;
fontVariant?: string;
fontWeight?: string;
letterSpacing?: number;
lineHeight?: number;
lineJoin?: string;
miterLimit?: number;
padding?: number;
stroke?: string | number;
strokeThickness?: number;
textBaseline?: string;
trim?: boolean;
whiteSpace?: string;
wordWrap?: boolean;
wordWrapWidth?: number;
leading?: number;
}
class TextStyle implements TextStyleOptions {
constructor(style: TextStyleOptions);
styleID: number;
clone(): TextStyle;
reset(): void;
protected _align: string;
align: string;
protected _breakWords: boolean;
breakWords: boolean;
protected _dropShadow: boolean;
dropShadow: boolean;
protected _dropShadowAlpha: number;
dropShadowAlpha: number;
protected _dropShadowAngle: number;
dropShadowAngle: number;
protected _dropShadowBlur: number;
dropShadowBlur: number;
protected _dropShadowColor: string | number;
dropShadowColor: string | number;
protected _dropShadowDistance: number;
dropShadowDistance: number;
protected _fill: string | string[] | number | number[] | CanvasGradient | CanvasPattern;
fill: string | string[] | number | number[] | CanvasGradient | CanvasPattern;
protected _fillGradientType: number;
fillGradientType: number;
protected _fillGradientStops: number[];
fillGradientStops: number[];
protected _fontFamily: string | string[];
fontFamily: string | string[];
protected _fontSize: number | string;
fontSize: number | string;
protected _fontStyle: string;
fontStyle: string;
protected _fontVariant: string;
fontVariant: string;
protected _fontWeight: string;
fontWeight: string;
protected _leading: number;
leading: number;
protected _letterSpacing: number;
letterSpacing: number;
protected _lineHeight: number;
lineHeight: number;
protected _lineJoin: string;
lineJoin: string;
protected _miterLimit: number;
miterLimit: number;
protected _padding: number;
padding: number;
protected _stroke: string | number;
stroke: string | number;
protected _strokeThickness: number;
strokeThickness: number;
protected _textBaseline: string;
textBaseline: string;
protected _trim: boolean;
trim: boolean;
protected _whiteSpace: string;
whiteSpace: string;
protected _wordWrap: boolean;
wordWrap: boolean;
protected _wordWrapWidth: number;
wordWrapWidth: number;
toFontString(): string;
}
class TextMetrics {
static METRICS_STRING: string;
static BASELINE_SYMBOL: string;
static BASELINE_MULTIPLIER: number;
static _canvas: HTMLCanvasElement;
static _context: CanvasRenderingContext2D;
static _fonts: FontMetrics;
static _newLines: number[];
static _breakingSpaces: number[];
text: string;
style: TextStyle;
width: number;
height: number;
lines: number[];
lineWidths: number[];
lineHeight: number;
maxLineWidth: number;
fontProperties: any;
constructor(
text: string,
style: TextStyle,
width: number,
height: number,
lines: number[],
lineWidths: number[],
lineHeight: number,
maxLineWidth: number,
fontProperties: any,
);
static measureText(text: string, style: TextStyle, wordWrap?: boolean, canvas?: HTMLCanvasElement): TextMetrics;
static wordWrap(text: string, style: TextStyle, canvas?: HTMLCanvasElement): string;
static wordWrap(text: string, style: TextStyle, canvas?: HTMLCanvasElement): string;
static addLine(line: string, newLine?: boolean): string;
static getFromCache(key: string, letterSpacing: number, cache: any, context: CanvasRenderingContext2D): number;
static collapseSpaces(whiteSpace?: string): boolean;
static collapseNewlines(whiteSpace?: string): boolean;
static trimRight(text?: string): string;
static isNewline(char?: string): boolean;
static isBreakingSpace(char?: string): boolean;
static tokenize(text?: string): string[];
static canBreakWords(token?: string, breakWords?: boolean): boolean;
static canBreakChars(
char: string,
nextChar: string,
token: string,
index: number,
breakWords?: boolean,
): boolean;
static measureFont(font: string): FontMetrics;
static clearMetrics(font: string): void;
}
interface FontMetrics {
ascent: number;
descent: number;
fontSize: number;
}
class Text extends Sprite {
constructor(text?: string, style?: TextStyleOptions, canvas?: HTMLCanvasElement);
canvas: HTMLCanvasElement;
context: CanvasRenderingContext2D;
resolution: number;
protected _text: string;
protected _style: TextStyle;
protected _styleListener: (...args: any[]) => any;
protected _font: string;
protected localStyleID: number;
width: number;
height: number;
style: TextStyle;
text: string;
protected updateText(respectDirty?: boolean): void;
protected drawLetterSpacing(text: string, x: number, y: number, isStroke?: boolean): void;
protected updateTexture(): void;
renderWebGL(renderer: WebGLRenderer): void;
protected _renderCanvas(renderer: CanvasRenderer): void;
getLocalBounds(rect?: Rectangle): Rectangle;
protected _calculateBounds(): void;
protected _onStyleChange: () => void;
protected _generateFillStyle(style: TextStyle, lines: string[]): string | number | CanvasGradient;
destroy(options?: DestroyOptions | boolean): void;
dirty: boolean;
}
// textures
class BaseRenderTexture extends BaseTexture {
constructor(width?: number, height?: number, scaleMode?: number, resolution?: number);
height: number;
width: number;
realHeight: number;
realWidth: number;
resolution: number;
scaleMode: number;
hasLoaded: boolean;
protected _glRenderTargets: { [n: number]: WebGLTexture };
protected _canvasRenderTarget: { [n: number]: WebGLTexture };
valid: boolean;
resize(width: number, height: number): void;
destroy(): void;
on(event: "update", fn: (baseRenderTexture: BaseRenderTexture) => void, context?: any): this;
once(event: "update", fn: (baseRenderTexture: BaseRenderTexture) => void, context?: any): this;
removeListener(event: "update", fn?: (baseRenderTexture: BaseRenderTexture) => void, context?: any): this;
removeAllListeners(event?: "update"): this;
off(event: "update", fn?: (baseRenderTexture: BaseRenderTexture) => void, context?: any): this;
addListener(event: "update", fn: (baseRenderTexture: BaseRenderTexture) => void, context?: any): this;
}
class BaseTexture extends utils.EventEmitter {
static from(
source: string | HTMLImageElement | HTMLCanvasElement,
scaleMode?: number,
sourceScale?: number,
): BaseTexture;
constructor(
source?: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement,
scaleMode?: number,
resolution?: number,
);
protected uuid?: number;
protected touched: number;
resolution: number;
width: number;
height: number;
realWidth: number;
realHeight: number;
scaleMode: number;
hasLoaded: boolean;
isLoading: boolean;
wrapMode: number;
source: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | null;
origSource: HTMLImageElement | null;
imageType: string | null;
sourceScale: number;
premultipliedAlpha: boolean;
imageUrl: string | null;
protected isPowerOfTwo: boolean;
mipmap: boolean;
wrap?: boolean;
protected _glTextures: any;
protected _enabled: number;
protected _id?: number;
protected _virtualBoundId: number;
protected readonly _destroyed: boolean;
textureCacheIds: string[];
update(): void;
protected _updateDimensions(): void;
protected _updateImageType(): void;
protected _loadSvgSource(): void;
protected _loadSvgSourceUsingDataUri(dataUri: string): void;
protected _loadSvgSourceUsingXhr(): void;
protected _loadSvgSourceUsingString(svgString: string): void;
protected loadSource(source: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): void;
protected _sourceLoaded(): void;
destroy(): void;
dispose(): void;
updateSourceImage(newSrc: string): void;
static fromImage(
imageUrl: string,
crossorigin?: boolean,
scaleMode?: number,
sourceScale?: number,
): BaseTexture;
static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: number, origin?: string): BaseTexture;
static addToCache(baseTexture: BaseTexture, id: string): void;
static removeFromCache(baseTexture: string | BaseTexture): BaseTexture;
on(
event: "update" | "loaded" | "error" | "dispose",
fn: (baseTexture: BaseTexture) => void,
context?: any,
): this;
once(
event: "update" | "loaded" | "error" | "dispose",
fn: (baseTexture: BaseTexture) => void,
context?: any,
): this;
removeListener(
event: "update" | "loaded" | "error" | "dispose",
fn?: (baseTexture: BaseTexture) => void,
context?: any,
): this;
removeAllListeners(event?: "update" | "loaded" | "error" | "dispose"): this;
off(
event: "update" | "loaded" | "error" | "dispose",
fn?: (baseTexture: BaseTexture) => void,
context?: any,
): this;
addListener(
event: "update" | "loaded" | "error" | "dispose",
fn: (baseTexture: BaseTexture) => void,
context?: any,
): this;
}
class RenderTexture extends Texture {
constructor(baseRenderTexture: BaseRenderTexture, frame?: Rectangle);
protected legacyRenderer: any;
valid: boolean;
resize(width: number, height: number, doNotResizeBaseTexture?: boolean): void;
static create(width?: number, height?: number, scaleMode?: number, resolution?: number): RenderTexture;
}
class Texture extends utils.EventEmitter {
constructor(
baseTexture: BaseTexture,
frame?: Rectangle,
orig?: Rectangle,
trim?: Rectangle,
rotate?: number,
anchor?: Point,
);
noFrame: boolean;
baseTexture: BaseTexture;
protected _frame: Rectangle;
trim?: Rectangle;
valid: boolean;
requiresUpdate: boolean;
protected _uvs: TextureUvs;
orig: Rectangle;
defaultAnchor: Point;
protected _updateID: number;
transform: TextureMatrix;
textureCacheIds: string[];
update(): void;
protected onBaseTextureLoaded(baseTexture: BaseTexture): void;
protected onBaseTextureUpdated(baseTexture: BaseTexture): void;
destroy(destroyBase?: boolean): void;
clone(): Texture;
_updateUvs(): void;
static fromImage(imageUrl: string, crossOrigin?: boolean, scaleMode?: number, sourceScale?: number): Texture;
static fromFrame(frameId: string): Texture;
static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: number, origin?: string): Texture;
static fromVideo(
video: HTMLVideoElement | string,
scaleMode?: number,
crossorigin?: boolean,
autoPlay?: boolean,
): Texture;
static fromVideoUrl(videoUrl: string, scaleMode?: number, crossorigin?: boolean, autoPlay?: boolean): Texture;
static from(
source: number | string | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | BaseTexture,
): Texture;
static fromLoader(source: HTMLImageElement | HTMLCanvasElement, imageUrl: string, name?: string): Texture;
static addToCache(texture: Texture, id: string): void;
static removeFromCache(texture: string | Texture): Texture;
// depreciation
static addTextureToCache(texture: Texture, id: string): void;
static removeTextureFromCache(id: string): Texture;
frame: Rectangle;
protected _rotate: boolean | 0;
rotate: number;
width: number;
height: number;
static EMPTY: Texture;
static WHITE: Texture;
on(event: "update", fn: (texture: Texture) => void, context?: any): this;
once(event: "update", fn: (texture: Texture) => void, context?: any): this;
removeListener(event: "update", fn?: (texture: Texture) => void, context?: any): this;
removeAllListeners(event?: "update"): this;
off(event: "update", fn?: (texture: Texture) => void, context?: any): this;
addListener(event: "update", fn: (texture: Texture) => void, context?: any): this;
}
class TextureMatrix {
constructor(texture: Texture, clampMargin?: number);
protected _texture: Texture;
mapCoord: Matrix;
uClampFrame: Float32Array;
uClampOffset: Float32Array;
protected _lastTextureID: number;
clampOffset: number;
clampMargin: number;
texture: Texture;
update(forceUpdate?: boolean): boolean;
multiplyUvs(uvs: Float32Array, out?: Float32Array): Float32Array;
}
class TextureUvs {
x0: number;
y0: number;
x1: number;
y1: number;
x2: number;
y2: number;
x3: number;
y3: number;
uvsUint32: Uint32Array;
protected set(frame: Rectangle, baseFrame: Rectangle, rotate: number): void;
}
class Spritesheet {
static BATCH_SIZE: number;
constructor(baseTexture: BaseTexture, data: any, resolutionFilename?: string);
baseTexture: BaseTexture;
animations: { [key: string]: Texture[] };
textures: { [key: string]: Texture };
data: any;
resolution: number;
protected _frames: any;
protected _frameKeys: string;
protected _batchIndex: number;
protected _callback: (spriteSheet: this, textures: { [key: string]: Texture }) => void;
protected _updateResolution(resolutionFilename: string): number;
parse(callback: (spriteSheet: this, textures: { [key: string]: Texture }) => void): void;
protected _processFrames(initialFrameIndex: number): void;
protected _parseComplete(): void;
protected _processAnimations(): void;
protected _nextBatch(): void;
destroy(destroyBase?: boolean): void;
}
class VideoBaseTexture extends BaseTexture {
constructor(source: HTMLVideoElement, scaleMode?: number, autoPlay?: boolean);
autoUpdate: boolean;
autoPlay: boolean;
protected _isAutoUpdating: boolean;
update(): void;
protected _onCanPlay(): void;
protected _onPlayStart(): void;
protected _onPlayStop(): void;
destroy(): void;
protected _isSourcePlaying(): boolean;
protected _isSourceReady(): boolean;
static fromVideo(video: HTMLVideoElement, scaleMode?: number, autoPlay?: boolean): VideoBaseTexture;
static fromUrl(
videoSrc: string | any | string[] | any[],
crossorigin?: boolean,
autoPlay?: boolean,
): VideoBaseTexture;
static fromUrls(videoSrc: string | any | string[] | any[]): VideoBaseTexture;
source: HTMLVideoElement;
protected loadSource(source: HTMLVideoElement): void;
}
// ticker
namespace ticker {
const shared: Ticker;
class TickerListener {
constructor(fn: (deltaTime: number) => void, context?: any, priority?: number, once?: boolean);
fn: (deltaTime: number) => void;
context: any;
priority: number;
once: boolean;
next: TickerListener;
previous: TickerListener;
protected _destroyed: boolean;
match(fn: (deltaTime: number) => void, context?: any): boolean;
emit(deltaTime: number): TickerListener;
connect(previous: TickerListener): void;
destroy(hard?: boolean): void;
}
class Ticker {
protected _tick: (time: number) => void;
protected _head: TickerListener;
protected _requestId: number | null;
protected _maxElapsedMS: number;
autoStart: boolean;
deltaTime: number;
elapsedMS: number;
lastTime: number;
speed: number;
started: boolean;
protected _requestIfNeeded(): void;
protected _cancelIfNeeded(): void;
protected _startIfPossible(): void;
add(fn: (deltaTime: number) => void, context?: any, priority?: number): Ticker;
addOnce(fn: (deltaTime: number) => void, context?: any, priority?: number): Ticker;
remove(fn: (...args: any[]) => any, context?: any, priority?: number): Ticker;
protected _addListener(listener: TickerListener): Ticker;
readonly FPS: number;
minFPS: number;
start(): void;
stop(): void;
destroy(): void;
update(currentTime?: number): void;
}
}
// shader
/**
* Wrapper class, webGL Shader for Pixi.
* Adds precision string if vertexSrc or fragmentSrc have no mention of it.
*/
class Shader extends glCore.GLShader {
constructor(
gl: WebGLRenderingContext,
vertexSrc: string | string[],
fragmentSrc: string | string[],
attributeLocations?: { [key: string]: number },
precision?: string,
);
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////EXTRACT///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace extract {
class CanvasExtract {
protected renderer: CanvasRenderer;
constructor(renderer: CanvasRenderer);
image(target?: DisplayObject | RenderTexture): HTMLImageElement;
base64(target?: DisplayObject | RenderTexture): string;
canvas(target?: DisplayObject | RenderTexture): HTMLCanvasElement;
pixels(renderTexture?: DisplayObject | RenderTexture): Uint8ClampedArray;
destroy(): void;
}
class WebGLExtract {
protected renderer: WebGLRenderer;
constructor(renderer: WebGLRenderer);
image(target?: DisplayObject | RenderTexture): HTMLImageElement;
base64(target?: DisplayObject | RenderTexture): string;
canvas(target?: DisplayObject | RenderTexture): HTMLCanvasElement;
pixels(renderTexture?: DisplayObject | RenderTexture): Uint8Array;
destroy(): void;
}
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////EXTRAS////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace extras {
interface BitmapTextStyle {
font?:
| string
| {
name?: string;
size?: number;
};
align?: string;
tint?: number;
}
class BitmapText extends Container {
static registerFont(xml: XMLDocument, textures: Texture | Texture[] | { [key: string]: Texture }): any;
constructor(text: string, style?: BitmapTextStyle);
letterSpacing: number;
protected _letterSpacing: number;
protected _textWidth: number;
protected _textHeight: number;
textWidth: number;
textHeight: number;
protected _glyphs: Sprite[];
protected _font:
| string
| {
name?: string;
size?: number;
};
font:
| string
| {
name?: string;
size?: number;
};
protected _text: string;
protected _maxWidth: number;
maxWidth: number;
protected _maxLineHeight: number;
maxLineHeight: number;
protected _anchor: ObservablePoint;
dirty: boolean;
tint: number;
align: string;
text: string;
anchor: PIXI.Point | number;
protected updateText(): void;
updateTransform(): void;
getLocalBounds(): Rectangle;
protected validate(): void;
static fonts: any;
}
interface AnimatedSpriteTextureTimeObject {
texture: Texture;
time?: number;
}
class AnimatedSprite extends Sprite {
constructor(textures: Texture[] | AnimatedSpriteTextureTimeObject[], autoUpdate?: boolean);
protected _autoUpdate: boolean;
protected _textures: Texture[];
protected _durations: number[];
textures: Texture[] | AnimatedSpriteTextureTimeObject[];
animationSpeed: number;
loop: boolean;
updateAnchor: boolean;
onComplete: () => void;
onFrameChange: (currentFrame: number) => void;
onLoop: () => void;
protected _currentTime: number;
playing: boolean;
totalFrames: number;
currentFrame: number;
stop(): void;
play(): void;
gotoAndStop(frameNumber: number): void;
gotoAndPlay(frameNumber: number): void;
protected update(deltaTime: number): void;
destroy(options?: DestroyOptions | boolean): void;
static fromFrames(frame: string[]): AnimatedSprite;
static fromImages(images: string[]): AnimatedSprite;
}
class TextureMatrix {
constructor(texture: Texture, clampMargin?: number);
protected _texture: Texture;
mapCoord: Matrix;
uClampFrame: Float32Array;
uClampOffset: Float32Array;
protected _lastTextureID: number;
clampOffset: number;
clampMargin: number;
texture: Texture;
update(forceUpdate?: boolean): boolean;
multiplyUvs(uvs: Float32Array, out?: Float32Array): Float32Array;
}
class TilingSprite extends Sprite {
constructor(texture: Texture, width?: number, height?: number);
tileTransform: TransformStatic;
protected _width: number;
protected _height: number;
protected _canvasPattern: CanvasPattern;
uvTransform: TextureMatrix;
uvRespectAnchor: boolean;
clampMargin: number;
tileScale: Point | ObservablePoint;
tilePosition: Point | ObservablePoint;
multiplyUvs(uvs: Float32Array, out: Float32Array): Float32Array;
protected _onTextureUpdate(): void;
protected _renderWebGL(renderer: WebGLRenderer): void;
protected _renderCanvas(renderer: CanvasRenderer): void;
protected _calculateBounds(): void;
getLocalBounds(rect?: Rectangle): Rectangle;
containsPoint(point: Point): boolean;
destroy(options?: DestroyOptions | boolean): void;
static from(
source: number | string | BaseTexture | HTMLCanvasElement | HTMLVideoElement,
width?: number,
height?: number,
): TilingSprite;
static fromFrame(frameId: string, width?: number, height?: number): TilingSprite;
// if you remove the next line, the class will break. https://github.com/pixijs/pixi-typescript/issues/96
static fromImage(imageId: string, crossorigin?: boolean, scaleMode?: number): Sprite;
static fromImage(
imageId: string,
width?: number,
height?: number,
crossorigin?: boolean,
scaleMode?: number,
): TilingSprite;
width: number;
height: number;
}
class TilingSpriteRenderer extends ObjectRenderer {
constructor(renderer: WebGLRenderer);
render(ts: TilingSprite): void;
}
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////FILTERS///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace filters {
class FXAAFilter extends Filter<{}> {}
class BlurFilter extends Filter<{}> {
constructor(strength?: number, quality?: number, resolution?: number, kernelSize?: number);
blurXFilter: BlurXFilter;
blurYFilter: BlurYFilter;
resolution: number;
padding: number;
passes: number;
blur: number;
blurX: number;
blurY: number;
quality: number;
blendMode: number;
}
interface BlurXFilterUniforms {
strength: number;
}
class BlurXFilter extends Filter<BlurXFilterUniforms> {
constructor(strength?: number, quality?: number, resolution?: number, kernelSize?: number);
protected _quality: number;
quality: number;
passes: number;
resolution: number;
strength: number;
firstRun: boolean;
blur: number;
}
interface BlurYFilterUniforms {
strength: number;
}
class BlurYFilter extends Filter<BlurYFilterUniforms> {
constructor(strength?: number, quality?: number, resolution?: number, kernelSize?: number);
protected _quality: number;
quality: number;
passes: number;
resolution: number;
strength: number;
firstRun: boolean;
blur: number;
}
interface ColorMatrixFilterUniforms {
m: Matrix;
uAlpha: number;
}
class ColorMatrixFilter extends Filter<ColorMatrixFilterUniforms> {
constructor();
protected _loadMatrix(matrix: number[], multiply?: boolean): void;
protected _multiply(out: number[], a: number[], b: number[]): void;
protected _colorMatrix(matrix: number[]): void;
matrix: number[];
alpha: number;
brightness(b: number, multiply?: boolean): void;
greyscale(scale: number, multiply?: boolean): void;
blackAndWhite(multiply?: boolean): void;
hue(rotation: number, multiply?: boolean): void;
contrast(amount: number, multiply?: boolean): void;
saturate(amount: number, multiply?: boolean): void;
desaturate(multiply?: boolean): void;
negative(multiply?: boolean): void;
sepia(multiply?: boolean): void;
technicolor(multiply?: boolean): void;
polaroid(multiply?: boolean): void;
toBGR(multiply?: boolean): void;
kodachrome(multiply?: boolean): void;
browni(multiply?: boolean): void;
vintage(multiply?: boolean): void;
colorTone(
desaturation: number,
toned: number,
lightColor: string,
darkColor: string,
multiply?: boolean,
): void;
night(intensity: number, multiply?: boolean): void;
predator(amount: number, multiply?: boolean): void;
lsd(multiply?: boolean): void;
reset(): void;
}
interface DisplacementFilterUniforms {
mapSampler: Texture;
filterMatrix: Matrix;
scale: Point;
}
class DisplacementFilter extends Filter<DisplacementFilterUniforms> {
constructor(sprite: Sprite, scale?: number);
scale: Point;
map: Texture;
}
class AlphaFilter extends Filter<{}> {
constructor(alpha?: number);
alpha: number;
glShaderKey: number;
}
interface NoiseFilterUniforms {
uNoise: number;
uSeed: number;
}
// pixi-filters.d.ts todo
// https://github.com/pixijs/pixi-filters/
class NoiseFilter extends Filter<NoiseFilterUniforms> {
constructor(noise?: number, seed?: number);
noise: number;
seed: number;
}
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////INTERACTION///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace interaction {
interface InteractiveTarget {
/**
* Enable interaction events for the DisplayObject. Touch, pointer and mouse
* events will not be emitted unless `interactive` is set to `true`.
*
* @example
* const sprite = new PIXI.Sprite(texture);
* sprite.interactive = true;
* sprite.on("tap", (event) => {
* //handle event
* });
*/
interactive: boolean;
/**
* Determines if the children to the displayObject can be clicked/touched
* Setting this to false allows PixiJS to bypass a recursive `hitTest` function
*/
interactiveChildren: boolean;
/**
* Interaction shape. Children will be hit first, then this shape will be checked.
* Setting this will cause this shape to be checked in hit tests rather than the displayObject"s bounds.
* @example
* const sprite = new PIXI.Sprite(texture);
* sprite.interactive = true;
* sprite.hitArea = new PIXI.Rectangle(0, 0, 100, 100);
*/
hitArea: PIXI.Rectangle | PIXI.Circle | PIXI.Ellipse | PIXI.Polygon | PIXI.RoundedRectangle | PIXI.HitArea;
/**
* If enabled, the mouse cursor use the pointer behavior when hovered over the displayObject if it is interactive
* Setting this changes the "cursor" property to `"pointer"`.
*
* @example
* const sprite = new PIXI.Sprite(texture);
* sprite.interactive = true;
* sprite.buttonMode = true;
*/
buttonMode: boolean;
/**
* This defines what cursor mode is used when the mouse cursor
* is hovered over the displayObject.
* @example
* const sprite = new PIXI.Sprite(texture);
* sprite.interactive = true;
* sprite.cursor = "wait";
* @see https://developer.mozilla.org/en/docs/Web/CSS/cursor
*/
cursor: string;
trackedPointers: { [key: number]: InteractionTrackingData };
/** @deprecated */
defaultCursor: string;
}
interface InteractionTrackingData {
readonly pointerId: number;
flags: number;
none: number;
over: boolean;
rightDown: boolean;
leftDown: boolean;
}
interface InteractionEvent {
stopped: boolean;
target: DisplayObject;
currentTarget: DisplayObject;
type: string;
data: InteractionData;
stopPropagation(): void;
reset(): void;
}
class InteractionData {
global: Point;
target: DisplayObject;
originalEvent: MouseEvent | TouchEvent | PointerEvent;
identifier: number;
isPrimary: boolean;
button: number;
buttons: number;
width: number;
height: number;
tiltX: number;
tiltY: number;
pointerType: string;
pressure: number;
rotationAngle: number;
twist: number;
tangentialPressure: number;
readonly pointerID: number;
copyEvent(event: Touch | MouseEvent | PointerEvent): void;
reset(): void;
getLocalPosition(displayObject: DisplayObject, point?: Point, globalPos?: Point): Point;
}
type InteractionPointerEvents =
| "pointerdown"
| "pointercancel"
| "pointerup"
| "pointertap"
| "pointerupoutside"
| "pointermove"
| "pointerover"
| "pointerout";
type InteractionTouchEvents =
| "touchstart"
| "touchcancel"
| "touchend"
| "touchendoutside"
| "touchmove"
| "tap";
type InteractionMouseEvents =
| "rightdown"
| "mousedown"
| "rightup"
| "mouseup"
| "rightclick"
| "click"
| "rightupoutside"
| "mouseupoutside"
| "mousemove"
| "mouseover"
| "mouseout";
type InteractionPixiEvents = "added" | "removed";
type InteractionEventTypes =
| InteractionPointerEvents
| InteractionTouchEvents
| InteractionMouseEvents
| InteractionPixiEvents;
interface InteractionManagerOptions {
autoPreventDefault?: boolean;
interactionFrequency?: number;
}
class InteractionManager extends utils.EventEmitter {
constructor(renderer: CanvasRenderer | WebGLRenderer | SystemRenderer, options?: InteractionManagerOptions);
renderer: SystemRenderer;
autoPreventDefault: boolean;
interactionFrequency: number;
mouse: InteractionData;
activeInteractionData: { [key: number]: InteractionData };
interactionDataPool: InteractionData[];
eventData: InteractionEvent;
protected interactionDOMElement: HTMLElement;
moveWhenInside: boolean;
eventsAdded: boolean;
protected mouseOverRenderer: boolean;
readonly supportsTouchEvents: boolean;
readonly supportsPointerEvents: boolean;
protected onPointerUp: (event: PointerEvent) => void;
protected processPointerUp: (
interactionEvent: InteractionEvent,
displayObject: Container | PIXI.Sprite | PIXI.extras.TilingSprite,
hit: boolean,
) => void;
protected onPointerCancel: (event: PointerEvent) => void;
protected processPointerCancel: (
interactionEvent: InteractionEvent,
displayObject: PIXI.Container | PIXI.Sprite | PIXI.extras.TilingSprite,
) => void;
protected onPointerDown: (event: PointerEvent) => void;
protected processPointerDown: (
interactionEvent: InteractionEvent,
displayObject: PIXI.Container | PIXI.Sprite | PIXI.extras.TilingSprite,
hit: boolean,
) => void;
protected onPointerMove: (event: PointerEvent) => void;
protected processPointerMove: (
interactionEvent: InteractionEvent,
displayObject: PIXI.Container | PIXI.Sprite | PIXI.extras.TilingSprite,
hit: boolean,
) => void;
protected onPointerOut: (event: PointerEvent) => void;
protected processPointerOverOut: (
interactionEvent: InteractionEvent,
displayObject: PIXI.Container | PIXI.Sprite | PIXI.extras.TilingSprite,
hit: boolean,
) => void;
protected onPointerOver: (event: PointerEvent) => void;
cursorStyles: {
default: string;
pointer: string;
};
currentCursorMode: string;
cursor: string;
protected _tempPoint: Point;
resolution: number;
hitTest(globalPoint: Point, root?: Container): DisplayObject;
setTargetElement(element: HTMLCanvasElement, resolution?: number): void;
protected addEvents(): void;
protected removeEvents(): void;
update(deltaTime?: number): void;
setCursorMode(mode: string): void;
protected dispatchEvent(
displayObject: Container | Sprite | extras.TilingSprite,
eventString: string,
eventData: any,
): void;
mapPositionToPoint(point: Point, x: number, y: number): void;
protected processInteractive(
interactionEvent: InteractionEvent,
displayObject: PIXI.Container | PIXI.Sprite | PIXI.extras.TilingSprite,
func?: (...args: any[]) => any,
hitTest?: boolean,
interactive?: boolean,
): boolean;
protected onPointerComplete(
originalEvent: PointerEvent,
cancelled: boolean,
func: (...args: any[]) => any,
): void;
protected getInteractionDataForPointerId(pointerId: number): InteractionData;
protected releaseInteractionDataForPointerId(event: PointerEvent): void;
protected configureInteractionEventForDOMEvent(
interactionEvent: InteractionEvent,
pointerEvent: PointerEvent,
interactionData: InteractionData,
): InteractionEvent;
protected normalizeToPointerData(event: TouchEvent | MouseEvent | PointerEvent): PointerEvent[];
destroy(): void;
// Deprecated
defaultCursorStyle: string;
currentCursorStyle: string;
}
}
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////LOADER/////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// pixi loader extends
// https://github.com/englercj/resource-loader/
// 2.2.3
class MiniSignalBinding {
detach(): boolean;
}
class MiniSignal<CbType extends (...args: any[]) => any> {
constructor();
handlers(exists: true): boolean;
handlers(exists?: false): MiniSignalBinding[];
has(node: MiniSignalBinding): boolean;
add(fn: (...args: any[]) => any, thisArg?: any): any;
add(fn: CbType, thisArg?: any): MiniSignalBinding;
once(fn: (...args: any[]) => any, thisArg?: any): any;
once(fn: CbType, thisArg?: any): MiniSignalBinding;
detach(node: MiniSignalBinding): MiniSignal<CbType>;
detachAll(): MiniSignal<CbType>;
dispatch: CbType;
}
namespace loaders {
/**
* Options for a call to `.add()`.
* @property [name] - The name of the resource to load, if not passed the url is used.
* @property [key] - Alias for `name`.
* @property [url] - The url for this resource, relative to the baseUrl of this loader.
* @property [crossOrigin] - Is this request cross-origin? Default is to
* determine automatically.
* @property [timeout=0] - A timeout in milliseconds for the load. If the load takes
* longer than this time it is cancelled and the load is considered a failure. If this value is
* set to `0` then there is no explicit timeout.
* @property [loadType=Resource.LOAD_TYPE.XHR] - How should this resource
* be loaded?
* @property [xhrType=Resource.XHR_RESPONSE_TYPE.DEFAULT] - How
* should the data being loaded be interpreted when using XHR?
* @property [onComplete] - Callback to add an an onComplete signal istener.
* @property [callback] - Alias for `onComplete`.
* @property [metadata] - Extra configuration for middleware and the Resource object.
*/
interface LoaderOptions {
crossOrigin?: string | boolean;
timeout?: number;
loadType?: Resource.LOAD_TYPE;
xhrType?: Resource.XHR_RESPONSE_TYPE;
onComplete?: OnCompleteSignal;
callback?: OnCompleteSignal;
metadata?: IMetadata;
}
interface ResourceDictionary {
[key: string]: PIXI.loaders.Resource;
}
function encodeBinary(input: string): string;
type OnProgressSignal = (loader: Loader, resource: Resource) => void;
type OnErrorSignal = (loader: Loader, resource: Resource) => void;
type OnLoadSignal = (loader: Loader, resource: Resource) => void;
type OnStartSignal = (loader: Loader) => void;
type OnCompleteSignal = (loader: Loader) => void;
// As of ResourceLoader v2 we no longer require EventEmitter
// However, for depreciation reasons, it remains.
class Loader extends utils.EventEmitter {
// pixi overrides here
static addPixiMiddleware(fn: (...args: any[]) => any): void;
// below this line is the original non-pixi loader
constructor(baseUrl?: string, concurrency?: number);
static Resource: typeof Resource;
static async: typeof Resource;
static encodeBinary: typeof encodeBinary;
static base64: typeof encodeBinary;
baseUrl: string;
progress: number;
loading: boolean;
defaultQueryString: string;
resources: ResourceDictionary;
onProgress: MiniSignal<OnProgressSignal>;
onError: MiniSignal<OnErrorSignal>;
onLoad: MiniSignal<OnLoadSignal>;
onStart: MiniSignal<OnStartSignal>;
onComplete: MiniSignal<OnCompleteSignal>;
add(name: string, url: string, callback?: OnCompleteSignal): this;
add(name: string, url: string, options?: LoaderOptions, callback?: OnCompleteSignal): this;
add(url: string, callback?: OnCompleteSignal): this;
add(url: string, options?: LoaderOptions, callback?: OnCompleteSignal): this;
add(options: LoaderOptions, callback?: OnCompleteSignal): this;
add(resources: Array<LoaderOptions | string>, callback?: OnCompleteSignal): this;
add(...params: any[]): this;
pre(fn: (...params: any[]) => any): this;
use(fn: (...params: any[]) => any): this;
reset(): this;
load(cb?: (...params: any[]) => any): this;
concurrency: number;
static pre(fn: (...params: any[]) => any): Loader;
static use(fn: (...params: any[]) => any): Loader;
destroy(): void;
// depreciation
on(event: "complete", fn: (loader: loaders.Loader, object: any) => void, context?: any): this;
on(
event: "error",
fn: (error: Error, loader: loaders.Loader, resource: Resource) => void,
context?: any,
): this;
on(
event: "load" | "progress",
fn: (loader: loaders.Loader, resource: Resource) => void,
context?: any,
): this;
on(event: "start", fn: (loader: loaders.Loader) => void, context?: any): this;
once(event: "complete", fn: (loader: loaders.Loader, object: any) => void, context?: any): this;
once(
event: "error",
fn: (error: Error, loader: loaders.Loader, resource: Resource) => void,
context?: any,
): this;
once(
event: "load" | "progress",
fn: (loader: loaders.Loader, resource: Resource) => void,
context?: any,
): this;
once(event: "start", fn: (loader: loaders.Loader) => void, context?: any): this;
off(
event: "complete" | "error" | "load" | "progress" | "start" | string,
fn?: (...args: any[]) => any,
context?: any,
): this;
}
interface TextureDictionary {
[index: string]: PIXI.Texture;
}
interface IMetadata {
loadElement?: HTMLImageElement | HTMLAudioElement | HTMLVideoElement;
skipSource?: boolean;
mimeType?: string | string[];
}
class Resource {
constructor(name: string, url: string | string[], options?: LoaderOptions);
readonly name: string;
readonly url: string;
readonly extension: string;
data: any;
crossOrigin: string;
timeout: number;
loadType: Resource.LOAD_TYPE;
xhrType: string;
metadata: IMetadata;
readonly error: Error;
readonly xhr: XMLHttpRequest;
readonly children: Resource[];
readonly type: Resource.LOAD_TYPE;
readonly progressChunk: number;
onStart: MiniSignal<OnStartSignal>;
onProgress: MiniSignal<OnProgressSignal>;
onComplete: MiniSignal<OnCompleteSignal>;
onAfterMiddleware: MiniSignal<OnCompleteSignal>;
readonly isDataUrl: boolean;
readonly isComplete: boolean;
readonly isLoading: boolean;
complete(): void;
abort(message: string): void;
load(cb?: OnCompleteSignal): void;
texture: Texture;
sound: any;
spineAtlas: any;
spineData: any;
textures?: TextureDictionary;
spritesheet?: Spritesheet;
}
namespace Resource {
enum STATUS_FLAGS {
NONE,
DATA_URL,
COMPLETE,
LOADING,
}
enum TYPE {
UNKNOWN,
JSON,
XML,
IMAGE,
AUDIO,
VIDEO,
TEXT,
}
enum LOAD_TYPE {
XHR,
IMAGE,
AUDIO,
VIDEO,
}
enum XHR_RESPONSE_TYPE {
DEFAULT,
BUFFER,
BLOB,
DOCUMENT,
JSON,
TEXT,
}
function setExtensionLoadType(extname: string, loadType: Resource.LOAD_TYPE): void;
function setExtensionXhrType(extname: string, xhrType: Resource.XHR_RESPONSE_TYPE): void;
const EMPTY_GIF: string;
}
const shared: Loader;
}
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////MESH///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace mesh {
class Mesh extends Container {
constructor(
texture: Texture,
vertices?: Float32Array,
uvs?: Float32Array,
indices?: Uint16Array,
drawMode?: number,
);
protected _texture: Texture;
uvs: Float32Array;
vertices: Float32Array;
indices: Uint16Array;
dirty: number;
indexDirty: number;
vertexDirty: number;
autoUpdate: boolean;
dirtyVertex: boolean;
protected _geometryVersion: number;
blendMode: number;
pluginName: string;
canvasPadding: number;
drawMode: number;
texture: Texture;
tintRgb: Float32Array;
protected _glDatas: { [n: number]: any };
protected _uvTransform: extras.TextureMatrix;
uploadUvTransform: boolean;
multiplyUvs(): void;
refresh(forceUpdate?: boolean): void;
protected _refresh(): void;
protected _renderWebGL(renderer: WebGLRenderer): void;
protected _renderCanvas(renderer: CanvasRenderer): void;
protected _onTextureUpdate(): void;
protected _calculateBounds(): void;
containsPoint(point: Point): boolean;
tint: number;
static DRAW_MODES: {
TRIANGLE_MESH: number;
TRIANGLES: number;
};
}
class CanvasMeshRenderer {
constructor(renderer: CanvasRenderer);
renderer: CanvasRenderer;
render(mesh: Mesh): void;
protected _renderTriangleMesh(mesh: Mesh): void;
protected _renderTriangles(mesh: Mesh): void;
protected _renderDrawTriangle(mesh: Mesh, index0: number, index1: number, index2: number): void;
protected renderMeshFlat(mesh: Mesh): void;
destroy(): void;
}
class MeshRenderer extends ObjectRenderer {
constructor(renderer: WebGLRenderer);
shader: Shader;
render(mesh: Mesh): void;
}
class Plane extends Mesh {
constructor(texture: Texture, verticesX?: number, verticesY?: number);
protected _ready: boolean;
verticesX: number;
verticesY: number;
drawMode: number;
refresh(): void;
protected _onTexureUpdate(): void;
}
class NineSlicePlane extends Plane {
constructor(
texture: Texture,
leftWidth?: number,
topHeight?: number,
rightWidth?: number,
bottomHeight?: number,
);
width: number;
height: number;
leftWidth: number;
rightWidth: number;
topHeight: number;
bottomHeight: number;
protected _leftWidth: number;
protected _rightWidth: number;
protected _topHeight: number;
protected _bottomHeight: number;
protected _height: number;
protected _width: number;
protected _origHeight: number;
protected _origWidth: number;
protected _uvh: number;
protected _uvw: number;
updateHorizontalVertices(): void;
updateVerticalVertices(): void;
protected drawSegment(
context: CanvasRenderingContext2D | WebGLRenderingContext,
textureSource: any,
w: number,
h: number,
x1: number,
y1: number,
x2: number,
y2: number,
): void;
protected _renderCanvas(renderer: CanvasRenderer): void;
protected _refresh(): void;
}
class Rope extends Mesh {
constructor(texture: Texture, points: Point[]);
points: Point[];
colors: number[];
autoUpdate: boolean;
protected _refresh(): void;
refreshVertices(): void;
}
}
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////PARTICLES////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace particles {
interface ParticleContainerProperties {
/**
* DEPRECIATED - Use `vertices`
*/
scale?: boolean;
vertices?: boolean;
position?: boolean;
rotation?: boolean;
uvs?: boolean;
tint?: boolean;
alpha?: boolean;
}
class ParticleContainer extends Container {
constructor(
maxSize?: number,
properties?: ParticleContainerProperties,
batchSize?: number,
autoResize?: boolean,
);
protected _tint: number;
protected tintRgb: number | any[];
tint: number;
protected _properties: boolean[];
protected _maxSize: number;
protected _batchSize: number;
protected _glBuffers: { [n: number]: WebGLBuffer };
protected _bufferUpdateIDs: number[];
protected _updateID: number;
interactiveChildren: boolean;
blendMode: number;
autoSize: boolean;
roundPixels: boolean;
baseTexture: BaseTexture;
setProperties(properties: ParticleContainerProperties): void;
protected onChildrenChange: (smallestChildIndex?: number) => void;
destroy(options?: DestroyOptions | boolean): void;
}
class ParticleBuffer {
constructor(gl: WebGLRenderingContext, properties: any, dynamicPropertyFlags: any[], size: number);
gl: WebGLRenderingContext;
size: number;
dynamicProperties: any[];
staticProperties: any[];
staticStride: number;
staticBuffer: any;
staticData: any;
staticDataUint32: any;
dynamicStride: number;
dynamicBuffer: any;
dynamicData: any;
dynamicDataUint32: any;
protected _updateID: number;
destroy(): void;
}
interface ParticleRendererProperty {
attribute: number;
size: number;
uploadFunction(
children: PIXI.DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
unsignedByte: any;
offset: number;
}
class ParticleRenderer extends ObjectRenderer {
constructor(renderer: WebGLRenderer);
shader: glCore.GLShader;
indexBuffer: WebGLBuffer;
properties: ParticleRendererProperty[];
protected tempMatrix: Matrix;
start(): void;
generateBuffers(container: ParticleContainer): ParticleBuffer[];
protected _generateOneMoreBuffer(container: ParticleContainer): ParticleBuffer;
uploadVertices(
children: DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
uploadPosition(
children: DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
uploadRotation(
children: DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
uploadUvs(
children: DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
uploadTint(
children: DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
uploadAlpha(
children: DisplayObject[],
startIndex: number,
amount: number,
array: number[],
stride: number,
offset: number,
): void;
destroy(): void;
indices: Uint16Array;
}
}
//////////////////////////////////////////////////////////////////////////////
////////////////////////////PREPARE///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
namespace prepare {
type AddHook = (item: any, queue: any[]) => boolean;
type UploadHook<UploadHookSource> = (prepare: UploadHookSource, item: any) => boolean;
abstract class BasePrepare<UploadHookSource> {
constructor(renderer: SystemRenderer);
limiter: CountLimiter | TimeLimiter;
protected renderer: SystemRenderer;
protected uploadHookHelper: UploadHookSource;
protected queue: any[];
protected addHooks: AddHook[];
protected uploadHooks: Array<UploadHook<UploadHookSource>>;
protected completes: (...args: any[]) => any[];
protected ticking: boolean;
protected delayedTick: () => void;
//tslint:disable-next-line:ban-types forbidden-types
upload(
item: Function | DisplayObject | Container | BaseTexture | Texture | Graphics | Text | any,
done?: () => void,
): void;
protected tick(): void;
protected prepareItems(): void;
registerFindHook(addHook: AddHook): this;
registerUploadHook(uploadHook: UploadHook<UploadHookSource>): this;
protected findMultipleBaseTextures(item: PIXI.DisplayObject, queue: any[]): boolean;
protected findBaseTexture(item: PIXI.DisplayObject, queue: any[]): boolean;
protected findTexture(item: PIXI.DisplayObject, queue: any[]): boolean;
add(
item:
| PIXI.DisplayObject
| PIXI.Container
| PIXI.BaseTexture
| PIXI.Texture
| PIXI.Graphics
| PIXI.Text
| any,
): this;
destroy(): void;
}
class CanvasPrepare extends BasePrepare<CanvasPrepare> {
constructor(renderer: CanvasRenderer);
protected canvas: HTMLCanvasElement;
protected ctx: CanvasRenderingContext2D;
}
class WebGLPrepare extends BasePrepare<WebGLRenderer> {
constructor(renderer: WebGLRenderer);
}
class CountLimiter {
constructor(maxItemsPerFrame: number);
protected maxItemsPerFrame: number;
protected itemsLeft: number;
beginFrame(): void;
allowedToUpload(): boolean;
}
class TimeLimiter {
constructor(maxMilliseconds: number);
protected maxMilliseconds: number;
protected frameStart: number;
beginFrame(): void;
allowedToUpload(): boolean;
}
}
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////pixi-gl-core/////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// pixi-gl-core 1.1.4 https://github.com/pixijs/pixi-gl-core
// sharedArrayBuffer as a type is not available yet.
// need to fully define what an `Attrib` is.
namespace glCore {
interface ContextOptions {
/**
* Boolean that indicates if the canvas contains an alpha buffer.
*/
alpha?: boolean;
/**
* Boolean that indicates that the drawing buffer has a depth buffer of at least 16 bits.
*/
depth?: boolean;
/**
* Boolean that indicates that the drawing buffer has a stencil buffer of at least 8 bits.
*/
stencil?: boolean;
/**
* Boolean that indicates whether or not to perform anti-aliasing.
*/
antialias?: boolean;
/**
* Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha.
*/
premultipliedAlpha?: boolean;
/**
* If the value is true the buffers will not be cleared and will preserve their values until cleared or overwritten by the author.
*/
preserveDrawingBuffer?: boolean;
/**
* Boolean that indicates if a context will be created if the system performance is low.
*/
failIfMajorPerformanceCaveat?: boolean;
}
function createContext(view: HTMLCanvasElement, options?: ContextOptions): WebGLRenderingContext;
function setVertexAttribArrays(
gl: WebGLRenderingContext,
attribs: Attrib[],
state?: WebGLState,
): WebGLRenderingContext | undefined;
class GLBuffer {
constructor(
gl: WebGLRenderingContext,
type: number,
data: ArrayBuffer | ArrayBufferView | any,
drawType: number,
);
protected _updateID?: number;
gl: WebGLRenderingContext;
buffer: WebGLBuffer;
type: number;
drawType: number;
data: ArrayBuffer | ArrayBufferView | any;
upload(data?: ArrayBuffer | ArrayBufferView | any, offset?: number, dontBind?: boolean): void;
bind(): void;
static createVertexBuffer(
gl: WebGLRenderingContext,
data: ArrayBuffer | ArrayBufferView | any,
drawType: number,
): GLBuffer;
static createIndexBuffer(
gl: WebGLRenderingContext,
data: ArrayBuffer | ArrayBufferView | any,
drawType: number,
): GLBuffer;
static create(
gl: WebGLRenderingContext,
type: number,
data: ArrayBuffer | ArrayBufferView | any,
drawType: number,
): GLBuffer;
destroy(): void;
}
class GLFramebuffer {
constructor(gl: WebGLRenderingContext, width: number, height: number);
gl: WebGLRenderingContext;
frameBuffer: WebGLFramebuffer;
stencil: WebGLRenderbuffer;
texture: GLTexture;
width: number;
height: number;
enableTexture(texture: GLTexture): void;
enableStencil(): void;
clear(r: number, g: number, b: number, a: number): void;
bind(): void;
unbind(): void;
resize(width: number, height: number): void;
destroy(): void;
static createRGBA(
gl: WebGLRenderingContext,
width: number,
height: number,
data: ArrayBuffer | ArrayBufferView | any,
): GLFramebuffer;
static createFloat32(
gl: WebGLRenderingContext,
width: number,
height: number,
data: ArrayBuffer | ArrayBufferView | any,
): GLFramebuffer;
}
class GLShader {
constructor(
gl: WebGLRenderingContext,
vertexSrc: string | string[],
fragmentSrc: string | string[],
precision?: string,
attributeLocations?: { [key: string]: number },
);
gl: WebGLRenderingContext;
program?: WebGLProgram | null;
uniformData: any;
uniforms: any;
attributes: any;
bind(): this;
destroy(): void;
}
class GLTexture {
constructor(gl: WebGLRenderingContext, width?: number, height?: number, format?: number, type?: number);
gl: WebGLRenderingContext;
texture: WebGLTexture;
mipmap: boolean;
premultiplyAlpha: boolean;
width: number;
height: number;
format: number;
type: number;
upload(source: HTMLImageElement | ImageData | HTMLVideoElement | HTMLCanvasElement): void;
uploadData(data: ArrayBuffer | ArrayBufferView, width: number, height: number): void;
bind(location?: number): void;
unbind(): void;
minFilter(linear: boolean): void;
magFilter(linear: boolean): void;
enableMipmap(): void;
enableLinearScaling(): void;
enableNearestScaling(): void;
enableWrapClamp(): void;
enableWrapRepeat(): void;
enableWrapMirrorRepeat(): void;
destroy(): void;
static fromSource(
gl: WebGLRenderingContext,
source: HTMLImageElement | ImageData | HTMLVideoElement | HTMLCanvasElement,
premultipleAlpha?: boolean,
): GLTexture;
static fromData(gl: WebGLRenderingContext, data: number[], width: number, height: number): GLTexture;
}
interface Attrib {
attribute: {
location: number;
size: number;
};
normalized: boolean;
stride: number;
start: number;
buffer: ArrayBuffer;
}
interface WebGLRenderingContextAttribute {
buffer: WebGLBuffer;
attribute: any;
type: number;
normalized: boolean;
stride: number;
start: number;
}
interface AttribState {
tempAttribState: Attrib[];
attribState: Attrib[];
}
class VertexArrayObject {
static FORCE_NATIVE: boolean;
constructor(gl: WebGLRenderingContext, state?: WebGLState);
protected nativeVaoExtension: any;
protected nativeState: AttribState;
protected nativeVao: VertexArrayObject;
gl: WebGLRenderingContext;
attributes: Attrib[];
indexBuffer: GLBuffer;
dirty: boolean;
bind(): this;
unbind(): this;
activate(): this;
addAttribute(
buffer: GLBuffer,
attribute: Attrib,
type?: number,
normalized?: boolean,
stride?: number,
start?: number,
): this;
addIndex(buffer: GLBuffer, options?: any): this;
clear(): this;
draw(type: number, size: number, start: number): this;
destroy(): void;
}
}
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////UTILS//////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
interface DecomposedDataUri {
mediaType: string;
subType: string;
encoding: string;
data: any;
}
namespace utils {
function uid(): number;
function hex2rgb(hex: number, out?: number[]): number[];
function hex2string(hex: number): string;
function rgb2hex(rgb: number[]): number;
function canUseNewCanvasBlendModes(): boolean;
function getResolutionOfUrl(url: string, defaultValue?: number): number;
function getSvgSize(svgString: string): any;
function decomposeDataUri(dataUri: string): DecomposedDataUri | void;
function getUrlFileExtension(url: string): string | void;
function sayHello(type: string): void;
function skipHello(): void;
function isWebGLSupported(): boolean;
function sign(n: number): number;
/**
* Remove a range of items from an array
*
* @param arr The target array
* @param startIdx The index to begin removing from (inclusive)
* @param removeCount How many items to remove
*/
function removeItems<T>(arr: T[], startIdx: number, removeCount: number): void;
function correctBlendMode(blendMode: number, premultiplied: boolean): number;
function clearTextureCache(): void;
function destroyTextureCache(): void;
function premultiplyTint(tint: number, alpha: number): number;
function premultiplyRgba(
rgb: Float32Array | number[],
alpha: number,
out?: Float32Array,
premultiply?: boolean,
): Float32Array;
function premultiplyTintToRgba(
tint: number,
alpha: number,
out?: Float32Array,
premultiply?: boolean,
): Float32Array;
const premultiplyBlendMode: number[][];
const TextureCache: any;
const BaseTextureCache: any;
// https://github.com/kaimallea/isMobile
namespace isMobile {
const apple: {
phone: boolean;
ipod: boolean;
tablet: boolean;
device: boolean;
};
const android: {
phone: boolean;
tablet: boolean;
device: boolean;
};
const amazon: {
phone: boolean;
tablet: boolean;
device: boolean;
};
const windows: {
phone: boolean;
tablet: boolean;
device: boolean;
};
const seven_inch: boolean;
const other: {
blackberry10: boolean;
blackberry: boolean;
opera: boolean;
firefox: boolean;
chrome: boolean;
device: boolean;
};
const any: boolean;
const phone: boolean;
const tablet: boolean;
}
// https://github.com/primus/eventemitter3
class EventEmitter {
static prefixed: string | boolean;
static EventEmitter: {
new (): EventEmitter;
prefixed: string | boolean;
};
/**
* Minimal EventEmitter interface that is molded against the Node.js
* EventEmitter interface.
*
* @constructor
* @api public
*/
constructor();
/**
* Return an array listing the events for which the emitter has registered listeners.
*
* @returns
*/
eventNames(): Array<string | symbol>;
/**
* Return the listeners registered for a given event.
*
* @param {(string | symbol)} event The event name.
* @returns
*/
//tslint:disable-next-line:ban-types forbidden-types
listeners(event: string | symbol): Function[];
/**
* Check if there listeners for a given event.
* If `exists` argument is not `true` lists listeners.
*
* @param event The event name.
* @param exists Only check if there are listeners.
* @returns
*/
listeners(event: string | symbol, exists: boolean): boolean;
/**
* Calls each of the listeners registered for a given event.
*
* @param event The event name.
* @param args Arguments that are passed to registered listeners
* @returns `true` if the event had listeners, else `false`.
*/
emit(event: string | symbol, ...args: any[]): boolean;
/**
* Add a listener for a given event.
*
* @param event The event name.
* @param fn The listener function.
* @param [context=this] The context to invoke the listener with.
* @returns `this`
*/
on(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
/**
* Add a one-time listener for a given event.
*
* @param event The event name.
* @param fn The listener function.
* @param [context=this] The context to invoke the listener with.
* @returns `this`
*/
once(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
/**
* Remove the listeners of a given event.
*
* @param event The event name.
* @param fn Only remove the listeners that match this function.
* @param context Only remove the listeners that have this context.
* @param once Only remove one-time listeners.
* @returns `this`
*/
removeListener(event: string | symbol, fn?: (...args: any[]) => any, context?: any, once?: boolean): this;
/**
* Remove all listeners, or those of the specified event.
*
* @param event The event name.
* @returns `this`.
*/
removeAllListeners(event?: string | symbol): this;
/**
* Alias method for `removeListener`
*/
off(event: string | symbol, fn?: (...args: any[]) => any, context?: any, once?: boolean): this;
/**
* Alias method for `on`
*/
addListener(event: string | symbol, fn: (...args: any[]) => any, context?: any): this;
/**
* This function doesn"t apply anymore.
* @deprecated
*/
setMaxListeners(): this;
}
}
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////depreciation/////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// not sure how to handle blendmodes scalemodes basetexturecache
namespace core {
/**
* @class
* @private
* @name SpriteBatch
* @memberof PIXI
* @see PIXI.ParticleContainer
* @throws {ReferenceError} SpriteBatch does not exist any more, please use the new ParticleContainer instead.
* @deprecated since version 3.0.0
*/
type SpriteBatch = ParticleContainer;
/**
* @class
* @private
* @name AssetLoader
* @memberof PIXI
* @see PIXI.loaders.Loader
* @throws {ReferenceError} The loader system was overhauled in pixi v3, please see the new PIXI.loaders.Loader class.
* @deprecated since version 3.0.0
*/
type AssetLoader = loaders.Loader;
/**
* @class
* @private
* @name Stage
* @memberof PIXI
* @see PIXI.Container
* @deprecated since version 3.0.0
*/
type Stage = Container;
/**
* @class
* @private
* @name DisplayObjectContainer
* @memberof PIXI
* @see PIXI.Container
* @deprecated since version 3.0.0
*/
type DisplayObjectContainer = Container;
/**
* @class
* @private
* @name Strip
* @memberof PIXI
* @see PIXI.mesh.Mesh
* @deprecated since version 3.0.0
*/
type Strip = mesh.Mesh;
/**
* @class
* @private
* @name Rope
* @memberof PIXI
* @see PIXI.mesh.Rope
* @deprecated since version 3.0.0
*/
type Rope = mesh.Rope;
/**
* @class
* @private
* @name ParticleContainer
* @memberof PIXI
* @see PIXI.particles.ParticleContainer
* @deprecated since version 4.0.0
*/
type ParticleContainer = particles.ParticleContainer;
/**
* @class
* @private
* @name MovieClip
* @memberof PIXI
* @see PIXI.extras.MovieClip
* @deprecated since version 3.0.0
*/
type MovieClip = extras.AnimatedSprite;
/**
* @class
* @private
* @name TilingSprite
* @memberof PIXI
* @see PIXI.extras.TilingSprite
* @deprecated since version 3.0.0
*/
type TilingSprite = extras.TilingSprite;
/**
* @class
* @private
* @name BaseTextureCache
* @memberof PIXI
* @see PIXI.utils.BaseTextureCache
* @deprecated since version 3.0.0
*/
type BaseTextureCache = any;
/**
* @class
* @private
* @name BitmapText
* @memberof PIXI
* @see PIXI.extras.BitmapText
* @deprecated since version 3.0.0
*/
type BitmapText = extras.BitmapText;
/**
* @namespace
* @private
* @name math
* @memberof PIXI
* @see PIXI
* @deprecated since version 3.0.6
*/
type math = any;
/**
* @class
* @private
* @name PIXI.AbstractFilter
* @see PIXI.Filter
* @deprecated since version 3.0.6
*/
type AbstractFilter<U extends Object> = Filter<U>;
/**
* @class
* @private
* @name PIXI.TransformManual
* @see PIXI.TransformBase
* @deprecated since version 4.0.0
*/
type TransformManual = TransformBase;
/**
* @static
* @constant
* @name PIXI.TARGET_FPMS
* @see PIXI.settings.TARGET_FPMS
* @deprecated since version 4.2.0
*/
type TARGET_FPMS = number;
/**
* @static
* @constant
* @name PIXI.FILTER_RESOLUTION
* @see PIXI.settings.FILTER_RESOLUTION
* @deprecated since version 4.2.0
*/
type FILTER_RESOLUTION = number;
/**
* @static
* @constant
* @name PIXI.RESOLUTION
* @see PIXI.settings.RESOLUTION
* @deprecated since version 4.2.0
*/
type RESOLUTION = number;
/**
* @static
* @constant
* @name PIXI.MIPMAP_TEXTURES
* @see PIXI.settings.MIPMAP_TEXTURES
* @deprecated since version 4.2.0
*/
type MIPMAP_TEXTURES = any;
/**
* @static
* @constant
* @name PIXI.SPRITE_BATCH_SIZE
* @see PIXI.settings.SPRITE_BATCH_SIZE
* @deprecated since version 4.2.0
*/
type SPRITE_BATCH_SIZE = number;
/**
* @static
* @constant
* @name PIXI.SPRITE_MAX_TEXTURES
* @see PIXI.settings.SPRITE_MAX_TEXTURES
* @deprecated since version 4.2.0
*/
type SPRITE_MAX_TEXTURES = number;
/**
* @static
* @constant
* @name PIXI.RETINA_PREFIX
* @see PIXI.settings.RETINA_PREFIX
* @deprecated since version 4.2.0
*/
type RETINA_PREFIX = RegExp | string;
/**
* @static
* @constant
* @name PIXI.DEFAULT_RENDER_OPTIONS
* @see PIXI.settings.RENDER_OPTIONS
* @deprecated since version 4.2.0
*/
type DEFAULT_RENDER_OPTIONS = number;
/**
* @static
* @name PRECISION
* @memberof PIXI.settings
* @see PIXI.PRECISION
* @deprecated since version 4.4.0
*/
type PRECISION = string;
}
namespace GroupD8 {
/**
* @name PIXI.GroupD8.isSwapWidthHeight
* @see PIXI.GroupD8.isVertical
* @param rotation - The number to check.
* @returns Whether or not the direction is vertical
* @deprecated since version 4.6.0
*/
function isSwapWidthHeight(rotation: number): boolean;
}
namespace extras {
/**
* @class
* @name MovieClip
* @memberof PIXI.extras
* @see PIXI.extras.AnimatedSprite
* @deprecated since version 4.2.0
*/
type MovieClip = extras.AnimatedSprite;
/**
* @class
* @name TextureTransform
* @memberof PIXI.extras
* @see PIXI.TextureMatrix
* @deprecated since version 4.6.0
*/
type TextureTranform = TextureMatrix;
}
namespace filters {
/**
* @class
* @private
* @name PIXI.filters.VoidFilter
* @see PIXI.filters.AlphaFilter
* @deprecated since version 4.5.7
*/
type VoidFilter = filters.AlphaFilter;
}
namespace settings {
/**
* @static
* @name PRECISION
* @memberof PIXI.settings
* @see PIXI.PRECISION
* @deprecated since version 4.4.0
*/
type PRECISION = number;
}
}
declare namespace pixi {
const gl: typeof PIXI.glCore;
}
//tslint:disable-next-line:no-single-declare-module
declare module "pixi.js" {
export = PIXI;
}