| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922 |
- /// <reference path="./global.d.ts" />
- import type { Dict } from '@pixi/utils';
- import { EventEmitter } from '@pixi/utils';
- import type { Filter } from '@pixi/core';
- import type { IPointData } from '@pixi/math';
- import type { MaskData } from '@pixi/core';
- import type { Matrix } from '@pixi/math';
- import type { ObservablePoint } from '@pixi/math';
- import type { Point } from '@pixi/math';
- import { Rectangle } from '@pixi/math';
- import type { Renderer } from '@pixi/core';
- import { Transform } from '@pixi/math';
- /**
- * 'Builder' pattern for bounds rectangles.
- *
- * This could be called an Axis-Aligned Bounding Box.
- * It is not an actual shape. It is a mutable thing; no 'EMPTY' or those kind of problems.
- * @memberof PIXI
- */
- export declare class Bounds {
- /** @default Infinity */
- minX: number;
- /** @default Infinity */
- minY: number;
- /** @default -Infinity */
- maxX: number;
- /** @default -Infinity */
- maxY: number;
- rect: Rectangle;
- /**
- * It is updated to _boundsID of corresponding object to keep bounds in sync with content.
- * Updated from outside, thus public modifier.
- */
- updateID: number;
- constructor();
- /**
- * Checks if bounds are empty.
- * @returns - 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: IPointData): void;
- /**
- * Adds a point, after transformed. This should be inlined when its possible.
- * @param matrix
- * @param point
- */
- addPointMatrix(matrix: Matrix, point: IPointData): void;
- /**
- * Adds a quad, not transformed
- * @param vertices - The verts to add.
- */
- addQuad(vertices: Float32Array): void;
- /**
- * Adds sprite frame, transformed.
- * @param transform - transform to apply
- * @param x0 - left X of frame
- * @param y0 - top Y of frame
- * @param x1 - right X of frame
- * @param y1 - bottom Y of frame
- */
- addFrame(transform: Transform, x0: number, y0: number, x1: number, y1: number): void;
- /**
- * Adds sprite frame, multiplied by matrix
- * @param matrix - matrix to apply
- * @param x0 - left X of frame
- * @param y0 - top Y of frame
- * @param x1 - right X of frame
- * @param y1 - bottom Y of frame
- */
- addFrameMatrix(matrix: Matrix, x0: number, y0: number, x1: number, y1: number): void;
- /**
- * Adds screen vertices from array
- * @param vertexData - calculated vertices
- * @param beginOffset - begin offset
- * @param endOffset - end offset, excluded
- */
- addVertexData(vertexData: Float32Array, beginOffset: number, endOffset: number): void;
- /**
- * Add an array of mesh vertices
- * @param transform - mesh transform
- * @param vertices - mesh coordinates in array
- * @param beginOffset - begin offset
- * @param endOffset - end offset, excluded
- */
- addVertices(transform: Transform, vertices: Float32Array, beginOffset: number, endOffset: number): void;
- /**
- * Add an array of mesh vertices.
- * @param matrix - mesh matrix
- * @param vertices - mesh coordinates in array
- * @param beginOffset - begin offset
- * @param endOffset - end offset, excluded
- * @param padX - x padding
- * @param padY - y padding
- */
- addVerticesMatrix(matrix: Matrix, vertices: Float32Array, beginOffset: number, endOffset: number, padX?: number, padY?: number): void;
- /**
- * Adds other {@link Bounds}.
- * @param bounds - The Bounds to be added
- */
- addBounds(bounds: Bounds): void;
- /**
- * Adds other Bounds, masked with Bounds.
- * @param bounds - The Bounds to be added.
- * @param mask - TODO
- */
- addBoundsMask(bounds: Bounds, mask: Bounds): void;
- /**
- * Adds other Bounds, multiplied by matrix. Bounds shouldn't be empty.
- * @param bounds - other bounds
- * @param matrix - multiplicator
- */
- addBoundsMatrix(bounds: Bounds, matrix: Matrix): void;
- /**
- * Adds other Bounds, masked with Rectangle.
- * @param bounds - TODO
- * @param area - TODO
- */
- addBoundsArea(bounds: Bounds, area: Rectangle): void;
- /**
- * Pads bounds object, making it grow in all directions.
- * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.
- * @param paddingX - The horizontal padding amount.
- * @param paddingY - The vertical padding amount.
- */
- pad(paddingX?: number, paddingY?: number): void;
- /**
- * Adds padded frame. (x0, y0) should be strictly less than (x1, y1)
- * @param x0 - left X of frame
- * @param y0 - top Y of frame
- * @param x1 - right X of frame
- * @param y1 - bottom Y of frame
- * @param padX - padding X
- * @param padY - padding Y
- */
- addFramePad(x0: number, y0: number, x1: number, y1: number, padX: number, padY: number): void;
- }
- export declare interface Container extends GlobalMixins.Container, DisplayObject {
- }
- /**
- * Container is a general-purpose display object that holds children. It also adds built-in support for advanced
- * rendering features like masking and filtering.
- *
- * It is the base class of all display objects that act as a container for other objects, including Graphics
- * and Sprite.
- *
- * ```js
- * import { BlurFilter } from '@pixi/filter-blur';
- * import { Container } from '@pixi/display';
- * import { Graphics } from '@pixi/graphics';
- * import { Sprite } from '@pixi/sprite';
- *
- * let container = new Container();
- * let sprite = Sprite.from("https://s3-us-west-2.amazonaws.com/s.cdpn.io/693612/IaUrttj.png");
- *
- * sprite.width = 512;
- * sprite.height = 512;
- *
- * // Adds a sprite as a child to this container. As a result, the sprite will be rendered whenever the container
- * // is rendered.
- * container.addChild(sprite);
- *
- * // Blurs whatever is rendered by the container
- * container.filters = [new BlurFilter()];
- *
- * // Only the contents within a circle at the center should be rendered onto the screen.
- * container.mask = new Graphics()
- * .beginFill(0xffffff)
- * .drawCircle(sprite.width / 2, sprite.height / 2, Math.min(sprite.width, sprite.height) / 2)
- * .endFill();
- * ```
- * @memberof PIXI
- */
- export declare class Container<T extends DisplayObject = DisplayObject> extends DisplayObject {
- /**
- * The array of children of this container.
- * @readonly
- */
- readonly children: T[];
- /**
- * If set to true, the container will sort its children by zIndex value
- * when updateTransform() is called, or manually if sortChildren() is called.
- *
- * This actually changes the order of elements in the array, so should be treated
- * as a basic solution that is not performant compared to other solutions,
- * such as @link https://github.com/pixijs/pixi-display
- *
- * Also be aware of that this may not work nicely with the addChildAt() function,
- * as the zIndex sorting may cause the child to automatically sorted to another position.
- * @see PIXI.settings.SORTABLE_CHILDREN
- */
- sortableChildren: boolean;
- /**
- * Should children be sorted by zIndex at the next updateTransform call.
- *
- * Will get automatically set to true if a new child is added, or if a child's zIndex changes.
- */
- sortDirty: boolean;
- parent: Container;
- containerUpdateTransform: () => void;
- protected _width: number;
- protected _height: number;
- constructor();
- /**
- * Overridable method that can be used by Container subclasses whenever the children array is modified.
- * @param _length
- */
- protected onChildrenChange(_length?: number): void;
- /**
- * Adds one or more children to the container.
- *
- * Multiple items can be added like so: `myContainer.addChild(thingOne, thingTwo, thingThree)`
- * @param {...PIXI.DisplayObject} children - The DisplayObject(s) to add to the container
- * @returns {PIXI.DisplayObject} - The first child that was added.
- */
- addChild<U extends T[]>(...children: U): U[0];
- /**
- * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown
- * @param {PIXI.DisplayObject} child - The child to add
- * @param {number} index - The index to place the child in
- * @returns {PIXI.DisplayObject} The child that was added.
- */
- addChildAt<U extends T>(child: U, index: number): U;
- /**
- * 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: T, child2: T): void;
- /**
- * Returns the index position of a child DisplayObject instance
- * @param child - The DisplayObject instance to identify
- * @returns - The index position of the child display object to identify
- */
- getChildIndex(child: T): 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: T, index: number): void;
- /**
- * Returns the child at the specified index
- * @param index - The index to get the child at
- * @returns - The child at the given index, if any.
- */
- getChildAt(index: number): T;
- /**
- * Removes one or more children from the container.
- * @param {...PIXI.DisplayObject} children - The DisplayObject(s) to remove
- * @returns {PIXI.DisplayObject} The first child that was removed.
- */
- removeChild<U extends T[]>(...children: U): U[0];
- /**
- * Removes a child from the specified index position.
- * @param index - The index to get the child from
- * @returns The child that was removed.
- */
- removeChildAt(index: number): T;
- /**
- * Removes all children from this container that are within the begin and end indexes.
- * @param beginIndex - The beginning position.
- * @param endIndex - The ending position. Default value is size of the container.
- * @returns - List of removed children
- */
- removeChildren(beginIndex?: number, endIndex?: number): T[];
- /** Sorts children by zIndex. Previous order is maintained for 2 children with the same zIndex. */
- sortChildren(): void;
- /** Updates the transform on all children of this container for rendering. */
- updateTransform(): void;
- /**
- * Recalculates the bounds of the container.
- *
- * This implementation will automatically fit the children's bounds into the calculation. Each child's bounds
- * is limited to its mask's bounds or filterArea, if any is applied.
- */
- calculateBounds(): void;
- /**
- * Retrieves the local bounds of the displayObject as a rectangle object.
- *
- * Calling `getLocalBounds` may invalidate the `_bounds` of the whole subtree below. If using it inside a render()
- * call, it is advised to call `getBounds()` immediately after to recalculate the world bounds of the subtree.
- * @param rect - Optional rectangle to store the result of the bounds calculation.
- * @param skipChildrenUpdate - Setting to `true` will stop re-calculation of children transforms,
- * it was default behaviour of pixi 4.0-5.2 and caused many problems to users.
- * @returns - The rectangular bounding area.
- */
- getLocalBounds(rect?: Rectangle, skipChildrenUpdate?: boolean): Rectangle;
- /**
- * Recalculates the content bounds of this object. This should be overriden to
- * calculate the bounds of this specific object (not including children).
- * @protected
- */
- protected _calculateBounds(): void;
- /**
- * Renders this object and its children with culling.
- * @protected
- * @param {PIXI.Renderer} renderer - The renderer
- */
- protected _renderWithCulling(renderer: Renderer): void;
- /**
- * Renders the object using the WebGL renderer.
- *
- * The [_render]{@link PIXI.Container#_render} method is be overriden for rendering the contents of the
- * container itself. This `render` method will invoke it, and also invoke the `render` methods of all
- * children afterward.
- *
- * If `renderable` or `visible` is false or if `worldAlpha` is not positive or if `cullable` is true and
- * the bounds of this object are out of frame, this implementation will entirely skip rendering.
- * See {@link PIXI.DisplayObject} for choosing between `renderable` or `visible`. Generally,
- * setting alpha to zero is not recommended for purely skipping rendering.
- *
- * When your scene becomes large (especially when it is larger than can be viewed in a single screen), it is
- * advised to employ **culling** to automatically skip rendering objects outside of the current screen.
- * See [cullable]{@link PIXI.DisplayObject#cullable} and [cullArea]{@link PIXI.DisplayObject#cullArea}.
- * Other culling methods might be better suited for a large number static objects; see
- * [@pixi-essentials/cull]{@link https://www.npmjs.com/package/@pixi-essentials/cull} and
- * [pixi-cull]{@link https://www.npmjs.com/package/pixi-cull}.
- *
- * The [renderAdvanced]{@link PIXI.Container#renderAdvanced} method is internally used when when masking or
- * filtering is applied on a container. This does, however, break batching and can affect performance when
- * masking and filtering is applied extensively throughout the scene graph.
- * @param renderer - The renderer
- */
- render(renderer: Renderer): void;
- /**
- * Render the object using the WebGL renderer and advanced features.
- * @param renderer - The renderer
- */
- protected renderAdvanced(renderer: Renderer): void;
- /**
- * To be overridden by the subclasses.
- * @param _renderer - The renderer
- */
- protected _render(_renderer: Renderer): 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
- * @param {boolean} [options.children=false] - if set to true, all the children will have their destroy
- * method called as well. 'options' will be passed on to those calls.
- * @param {boolean} [options.texture=false] - Only used for child Sprites if options.children is set to true
- * Should it destroy the texture of the child sprite
- * @param {boolean} [options.baseTexture=false] - Only used for child Sprites if options.children is set to true
- * Should it destroy the base texture of the child sprite
- */
- destroy(options?: IDestroyOptions | boolean): void;
- /** The width of the Container, setting this will actually modify the scale to achieve the value set. */
- get width(): number;
- set width(value: number);
- /** The height of the Container, setting this will actually modify the scale to achieve the value set. */
- get height(): number;
- set height(value: number);
- }
- export declare interface DisplayObject extends Omit<GlobalMixins.DisplayObject, keyof EventEmitter>, EventEmitter {
- }
- /**
- * The base class for all objects that are rendered on the screen.
- *
- * This is an abstract class and can not be used on its own; rather it should be extended.
- *
- * ## Display objects implemented in PixiJS
- *
- * | Display Object | Description |
- * | ------------------------------- | --------------------------------------------------------------------- |
- * | {@link PIXI.Container} | Adds support for `children` to DisplayObject |
- * | {@link PIXI.Graphics} | Shape-drawing display object similar to the Canvas API |
- * | {@link PIXI.Sprite} | Draws textures (i.e. images) |
- * | {@link PIXI.Text} | Draws text using the Canvas API internally |
- * | {@link PIXI.BitmapText} | More scaleable solution for text rendering, reusing glyph textures |
- * | {@link PIXI.TilingSprite} | Draws textures/images in a tiled fashion |
- * | {@link PIXI.AnimatedSprite} | Draws an animation of multiple images |
- * | {@link PIXI.Mesh} | Provides a lower-level API for drawing meshes with custom data |
- * | {@link PIXI.NineSlicePlane} | Mesh-related |
- * | {@link PIXI.SimpleMesh} | v4-compatible mesh |
- * | {@link PIXI.SimplePlane} | Mesh-related |
- * | {@link PIXI.SimpleRope} | Mesh-related |
- *
- * ## Transforms
- *
- * The [transform]{@link DisplayObject#transform} of a display object describes the projection from its
- * local coordinate space to its parent's local coordinate space. The following properties are derived
- * from the transform:
- *
- * <table>
- * <thead>
- * <tr>
- * <th>Property</th>
- * <th>Description</th>
- * </tr>
- * </thead>
- * <tbody>
- * <tr>
- * <td>[pivot]{@link PIXI.DisplayObject#pivot}</td>
- * <td>
- * Invariant under rotation, scaling, and skewing. The projection of into the parent's space of the pivot
- * is equal to position, regardless of the other three transformations. In other words, It is the center of
- * rotation, scaling, and skewing.
- * </td>
- * </tr>
- * <tr>
- * <td>[position]{@link PIXI.DisplayObject#position}</td>
- * <td>
- * Translation. This is the position of the [pivot]{@link PIXI.DisplayObject#pivot} in the parent's local
- * space. The default value of the pivot is the origin (0,0). If the top-left corner of your display object
- * is (0,0) in its local space, then the position will be its top-left corner in the parent's local space.
- * </td>
- * </tr>
- * <tr>
- * <td>[scale]{@link PIXI.DisplayObject#scale}</td>
- * <td>
- * Scaling. This will stretch (or compress) the display object's projection. The scale factors are along the
- * local coordinate axes. In other words, the display object is scaled before rotated or skewed. The center
- * of scaling is the [pivot]{@link PIXI.DisplayObject#pivot}.
- * </td>
- * </tr>
- * <tr>
- * <td>[rotation]{@link PIXI.DisplayObject#rotation}</td>
- * <td>
- * Rotation. This will rotate the display object's projection by this angle (in radians).
- * </td>
- * </tr>
- * <tr>
- * <td>[skew]{@link PIXI.DisplayObject#skew}</td>
- * <td>
- * <p>Skewing. This can be used to deform a rectangular display object into a parallelogram.</p>
- * <p>
- * In PixiJS, skew has a slightly different behaviour than the conventional meaning. It can be
- * thought of the net rotation applied to the coordinate axes (separately). For example, if "skew.x" is
- * ⍺ and "skew.y" is β, then the line x = 0 will be rotated by ⍺ (y = -x*cot⍺) and the line y = 0 will be
- * rotated by β (y = x*tanβ). A line y = x*tanϴ (i.e. a line at angle ϴ to the x-axis in local-space) will
- * be rotated by an angle between ⍺ and β.
- * </p>
- * <p>
- * It can be observed that if skew is applied equally to both axes, then it will be equivalent to applying
- * a rotation. Indeed, if "skew.x" = -ϴ and "skew.y" = ϴ, it will produce an equivalent of "rotation" = ϴ.
- * </p>
- * <p>
- * Another quite interesting observation is that "skew.x", "skew.y", rotation are communtative operations. Indeed,
- * because rotation is essentially a careful combination of the two.
- * </p>
- * </td>
- * </tr>
- * <tr>
- * <td>angle</td>
- * <td>Rotation. This is an alias for [rotation]{@link PIXI.DisplayObject#rotation}, but in degrees.</td>
- * </tr>
- * <tr>
- * <td>x</td>
- * <td>Translation. This is an alias for position.x!</td>
- * </tr>
- * <tr>
- * <td>y</td>
- * <td>Translation. This is an alias for position.y!</td>
- * </tr>
- * <tr>
- * <td>width</td>
- * <td>
- * Implemented in [Container]{@link PIXI.Container}. Scaling. The width property calculates scale.x by dividing
- * the "requested" width by the local bounding box width. It is indirectly an abstraction over scale.x, and there
- * is no concept of user-defined width.
- * </td>
- * </tr>
- * <tr>
- * <td>height</td>
- * <td>
- * Implemented in [Container]{@link PIXI.Container}. Scaling. The height property calculates scale.y by dividing
- * the "requested" height by the local bounding box height. It is indirectly an abstraction over scale.y, and there
- * is no concept of user-defined height.
- * </td>
- * </tr>
- * </tbody>
- * </table>
- *
- * ## Bounds
- *
- * The bounds of a display object is defined by the minimum axis-aligned rectangle in world space that can fit
- * around it. The abstract `calculateBounds` method is responsible for providing it (and it should use the
- * `worldTransform` to calculate in world space).
- *
- * There are a few additional types of bounding boxes:
- *
- * | Bounds | Description |
- * | --------------------- | ---------------------------------------------------------------------------------------- |
- * | World Bounds | This is synonymous is the regular bounds described above. See `getBounds()`. |
- * | Local Bounds | This the axis-aligned bounding box in the parent's local space. See `getLocalBounds()`. |
- * | Render Bounds | The bounds, but including extra rendering effects like filter padding. |
- * | Projected Bounds | The bounds of the projected display object onto the screen. Usually equals world bounds. |
- * | Relative Bounds | The bounds of a display object when projected onto a ancestor's (or parent's) space. |
- * | Natural Bounds | The bounds of an object in its own local space (not parent's space, like in local bounds)|
- * | Content Bounds | The natural bounds when excluding all children of a `Container`. |
- *
- * ### calculateBounds
- *
- * [Container]{@link Container} already implements `calculateBounds` in a manner that includes children.
- *
- * But for a non-Container display object, the `calculateBounds` method must be overridden in order for `getBounds` and
- * `getLocalBounds` to work. This method must write the bounds into `this._bounds`.
- *
- * Generally, the following technique works for most simple cases: take the list of points
- * forming the "hull" of the object (i.e. outline of the object's shape), and then add them
- * using {@link PIXI.Bounds#addPointMatrix}.
- *
- * ```js
- * calculateBounds(): void
- * {
- * const points = [...];
- *
- * for (let i = 0, j = points.length; i < j; i++)
- * {
- * this._bounds.addPointMatrix(this.worldTransform, points[i]);
- * }
- * }
- * ```
- *
- * You can optimize this for a large number of points by using {@link PIXI.Bounds#addVerticesMatrix} to pass them
- * in one array together.
- *
- * ## Alpha
- *
- * This alpha sets a display object's **relative opacity** w.r.t its parent. For example, if the alpha of a display
- * object is 0.5 and its parent's alpha is 0.5, then it will be rendered with 25% opacity (assuming alpha is not
- * applied on any ancestor further up the chain).
- *
- * The alpha with which the display object will be rendered is called the [worldAlpha]{@link PIXI.DisplayObject#worldAlpha}.
- *
- * ## Renderable vs Visible
- *
- * The `renderable` and `visible` properties can be used to prevent a display object from being rendered to the
- * screen. However, there is a subtle difference between the two. When using `renderable`, the transforms of the display
- * object (and its children subtree) will continue to be calculated. When using `visible`, the transforms will not
- * be calculated.
- *
- * It is recommended that applications use the `renderable` property for culling. See
- * [@pixi-essentials/cull]{@link https://www.npmjs.com/package/@pixi-essentials/cull} or
- * [pixi-cull]{@link https://www.npmjs.com/package/pixi-cull} for more details.
- *
- * Otherwise, to prevent an object from rendering in the general-purpose sense - `visible` is the property to use. This
- * one is also better in terms of performance.
- * @memberof PIXI
- */
- export declare abstract class DisplayObject extends EventEmitter {
- abstract sortDirty: boolean;
- /** The display object container that contains this display object. */
- parent: Container;
- /**
- * The multiplied alpha of the displayObject.
- * @readonly
- */
- worldAlpha: number;
- /**
- * World transform and local transform of this object.
- * This will become read-only later, please do not assign anything there unless you know what are you doing.
- */
- transform: Transform;
- /** The opacity of the object. */
- alpha: number;
- /**
- * The visibility of the object. If false the object will not be drawn, and
- * the updateTransform function will not be called.
- *
- * Only affects recursive calls from parent. You can ask for bounds or call updateTransform manually.
- */
- visible: boolean;
- /**
- * Can this object be rendered, if false the object will not be drawn but the updateTransform
- * methods will still be called.
- *
- * Only affects recursive calls from parent. You can ask for bounds manually.
- */
- renderable: boolean;
- /**
- * Should this object be rendered if the bounds of this object are out of frame?
- *
- * Culling has no effect on whether updateTransform is called.
- */
- cullable: boolean;
- /**
- * If set, this shape is used for culling instead of the bounds of this object.
- * It can improve the culling performance of objects with many children.
- * The culling area is defined in local space.
- */
- cullArea: Rectangle;
- /**
- * The area the filter is applied to. This is used as more of an optimization
- * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle.
- *
- * Also works as an interaction mask.
- */
- filterArea: Rectangle;
- /**
- * Sets the filters for the displayObject.
- * IMPORTANT: This is a WebGL only feature and will be ignored by the canvas renderer.
- * To remove filters simply set this property to `'null'`.
- */
- filters: Filter[] | null;
- /** Used to fast check if a sprite is.. a sprite! */
- isSprite: boolean;
- /** Does any other displayObject use this object as a mask? */
- isMask: boolean;
- /**
- * Which index in the children array the display component was before the previous zIndex sort.
- * Used by containers to help sort objects with the same zIndex, by using previous array index as the decider.
- * @protected
- */
- _lastSortedIndex: number;
- /**
- * The original, cached mask of the object.
- * @protected
- */
- _mask: Container | MaskData;
- /** The bounds object, this is used to calculate and store the bounds of the displayObject. */
- _bounds: Bounds;
- /** Local bounds object, swapped with `_bounds` when using `getLocalBounds()`. */
- _localBounds: Bounds;
- /**
- * The zIndex of the displayObject.
- * A higher value will mean it will be rendered on top of other displayObjects within the same container.
- * @protected
- */
- protected _zIndex: number;
- /**
- * Currently enabled filters.
- * @protected
- */
- protected _enabledFilters: Filter[];
- /** Flags the cached bounds as dirty. */
- protected _boundsID: number;
- /** Cache of this display-object's bounds-rectangle. */
- protected _boundsRect: Rectangle;
- /** Cache of this display-object's local-bounds rectangle. */
- protected _localBoundsRect: Rectangle;
- /** If the object has been destroyed via destroy(). If true, it should not be used. */
- protected _destroyed: boolean;
- /** The number of times this object is used as a mask by another object. */
- private _maskRefCount;
- private tempDisplayObjectParent;
- displayObjectUpdateTransform: () => void;
- /**
- * Mixes all enumerable properties and methods from a source object to DisplayObject.
- * @param source - The source of properties and methods to mix in.
- */
- static mixin(source: Dict<any>): void;
- constructor();
- /**
- * Fired when this DisplayObject is added to a Container.
- * @instance
- * @event added
- * @param {PIXI.Container} container - The container added to.
- */
- /**
- * Fired when this DisplayObject is removed from a Container.
- * @instance
- * @event removed
- * @param {PIXI.Container} container - The container removed from.
- */
- /**
- * Fired when this DisplayObject is destroyed. This event is emitted once
- * destroy is finished.
- * @instance
- * @event destroyed
- */
- /** Readonly flag for destroyed display objects. */
- get destroyed(): boolean;
- /** Recalculates the bounds of the display object. */
- abstract calculateBounds(): void;
- abstract removeChild(child: DisplayObject): void;
- /**
- * Renders the object using the WebGL renderer.
- * @param renderer - The renderer.
- */
- abstract render(renderer: Renderer): void;
- /** Recursively updates transform of all objects from the root to this one internal function for toLocal() */
- protected _recursivePostUpdateTransform(): void;
- /** Updates the object transform for rendering. TODO - Optimization pass! */
- updateTransform(): void;
- /**
- * Calculates and returns the (world) bounds of the display object as a [Rectangle]{@link PIXI.Rectangle}.
- *
- * This method is expensive on containers with a large subtree (like the stage). This is because the bounds
- * of a container depend on its children's bounds, which recursively causes all bounds in the subtree to
- * be recalculated. The upside, however, is that calling `getBounds` once on a container will indeed update
- * the bounds of all children (the whole subtree, in fact). This side effect should be exploited by using
- * `displayObject._bounds.getRectangle()` when traversing through all the bounds in a scene graph. Otherwise,
- * calling `getBounds` on each object in a subtree will cause the total cost to increase quadratically as
- * its height increases.
- *
- * The transforms of all objects in a container's **subtree** and of all **ancestors** are updated.
- * The world bounds of all display objects in a container's **subtree** will also be recalculated.
- *
- * The `_bounds` object stores the last calculation of the bounds. You can use to entirely skip bounds
- * calculation if needed.
- *
- * ```js
- * const lastCalculatedBounds = displayObject._bounds.getRectangle(optionalRect);
- * ```
- *
- * Do know that usage of `getLocalBounds` can corrupt the `_bounds` of children (the whole subtree, actually). This
- * is a known issue that has not been solved. See [getLocalBounds]{@link PIXI.DisplayObject#getLocalBounds} for more
- * details.
- *
- * `getBounds` should be called with `skipUpdate` equal to `true` in a render() call. This is because the transforms
- * are guaranteed to be update-to-date. In fact, recalculating inside a render() call may cause corruption in certain
- * cases.
- * @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.
- * @returns - The minimum axis-aligned rectangle in world space that fits around this object.
- */
- 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.
- * @returns - 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 - Should we skip the update transform.
- * @returns - A point object representing the position of this object.
- */
- toGlobal<P extends IPointData = Point>(position: IPointData, point?: P, skipUpdate?: boolean): P;
- /**
- * 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 - Should we skip the update transform
- * @returns - A point object representing the position of this object
- */
- toLocal<P extends IPointData = Point>(position: IPointData, from?: DisplayObject, point?: P, skipUpdate?: boolean): P;
- /**
- * Set the parent Container of this DisplayObject.
- * @param container - The Container to add this DisplayObject to.
- * @returns - The Container that this DisplayObject was added to.
- */
- setParent(container: Container): Container;
- /**
- * Convenience function to set the position, scale, skew and pivot at once.
- * @param x - The X position
- * @param y - The Y position
- * @param scaleX - The X scale value
- * @param scaleY - The Y scale value
- * @param rotation - The rotation
- * @param skewX - The X skew value
- * @param skewY - The Y skew value
- * @param pivotX - The X pivot value
- * @param pivotY - The Y pivot value
- * @returns - The DisplayObject instance
- */
- setTransform(x?: number, y?: number, scaleX?: number, scaleY?: number, rotation?: number, skewX?: number, skewY?: number, pivotX?: number, pivotY?: number): this;
- /**
- * 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()`.
- * @param _options
- */
- destroy(_options?: IDestroyOptions | boolean): void;
- /**
- * @protected
- * @member {PIXI.Container}
- */
- get _tempDisplayObjectParent(): TemporaryDisplayObject;
- /**
- * Used in Renderer, cacheAsBitmap and other places where you call an `updateTransform` on root
- *
- * ```
- * const cacheParent = elem.enableTempParent();
- * elem.updateTransform();
- * elem.disableTempParent(cacheParent);
- * ```
- * @returns - current parent
- */
- enableTempParent(): Container;
- /**
- * Pair method for `enableTempParent`
- * @param cacheParent - Actual parent of element
- */
- disableTempParent(cacheParent: Container): void;
- /**
- * The position of the displayObject on the x axis relative to the local coordinates of the parent.
- * An alias to position.x
- */
- get x(): number;
- set x(value: number);
- /**
- * The position of the displayObject on the y axis relative to the local coordinates of the parent.
- * An alias to position.y
- */
- get y(): number;
- set y(value: number);
- /**
- * Current transform of the object based on world (parent) factors.
- * @readonly
- */
- get worldTransform(): Matrix;
- /**
- * Current transform of the object based on local factors: position, scale, other stuff.
- * @readonly
- */
- get localTransform(): Matrix;
- /**
- * The coordinate of the object relative to the local coordinates of the parent.
- * @since 4.0.0
- */
- get position(): ObservablePoint;
- set position(value: IPointData);
- /**
- * The scale factors of this object along the local coordinate axes.
- *
- * The default scale is (1, 1).
- * @since 4.0.0
- */
- get scale(): ObservablePoint;
- set scale(value: IPointData);
- /**
- * The center of rotation, scaling, and skewing for this display object in its local space. The `position`
- * is the projection of `pivot` in the parent's local space.
- *
- * By default, the pivot is the origin (0, 0).
- * @since 4.0.0
- */
- get pivot(): ObservablePoint;
- set pivot(value: IPointData);
- /**
- * The skew factor for the object in radians.
- * @since 4.0.0
- */
- get skew(): ObservablePoint;
- set skew(value: IPointData);
- /**
- * The rotation of the object in radians.
- * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.
- */
- get rotation(): number;
- set rotation(value: number);
- /**
- * The angle of the object in degrees.
- * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.
- */
- get angle(): number;
- set angle(value: number);
- /**
- * The zIndex of the displayObject.
- *
- * If a container has the sortableChildren property set to true, children will be automatically
- * sorted by zIndex value; a higher value will mean it will be moved towards the end of the array,
- * and thus rendered on top of other display objects within the same container.
- * @see PIXI.Container#sortableChildren
- */
- get zIndex(): number;
- set zIndex(value: number);
- /**
- * Indicates if the object is globally visible.
- * @readonly
- */
- get worldVisible(): boolean;
- /**
- * Sets a mask for the displayObject. A mask is an object that limits the visibility of an
- * object to the shape of the mask applied to it. In PixiJS a regular mask must be a
- * {@link PIXI.Graphics} or a {@link PIXI.Sprite} object. This allows for much faster masking in canvas as it
- * utilities shape clipping. Furthermore, a mask of an object must be in the subtree of its parent.
- * Otherwise, `getLocalBounds` may calculate incorrect bounds, which makes the container's width and height wrong.
- * To remove a mask, set this property to `null`.
- *
- * For sprite mask both alpha and red channel are used. Black mask is the same as transparent mask.
- * @example
- * const graphics = new PIXI.Graphics();
- * graphics.beginFill(0xFF3300);
- * graphics.drawRect(50, 250, 100, 100);
- * graphics.endFill();
- *
- * const sprite = new PIXI.Sprite(texture);
- * sprite.mask = graphics;
- * @todo At the moment, PIXI.CanvasRenderer doesn't support PIXI.Sprite as mask.
- */
- get mask(): Container | MaskData | null;
- set mask(value: Container | MaskData | null);
- }
- export declare interface IDestroyOptions {
- children?: boolean;
- texture?: boolean;
- baseTexture?: boolean;
- }
- /**
- * @private
- */
- export declare class TemporaryDisplayObject extends DisplayObject {
- calculateBounds: () => null;
- removeChild: (child: DisplayObject) => null;
- render: (renderer: Renderer) => null;
- sortDirty: boolean;
- }
- export { }
|