import Painter from "../rendering/Painter";
import FragmentFilter from "../filters/FragmentFilter";
import EventDispatcher from "../events/EventDispatcher";
import Event from "../events/Event";
import Stage from "./Stage";
import DisplayObjectContainer from "./DisplayObjectContainer";
import Vector3D from "openfl/geom/Vector3D";
import Rectangle from "openfl/geom/Rectangle";
import Point from "openfl/geom/Point";
import Matrix3D from "openfl/geom/Matrix3D";
import Matrix from "openfl/geom/Matrix";
import BitmapData from "openfl/display/BitmapData";
declare namespace starling.display {
/**
* Dispatched when an object is added to a parent.
*/
export class DisplayObject extends EventDispatcher {
/**
* @private
*/
protected constructor();
/**
* Disposes all resources of the display object.
* * GPU buffers are released, event listeners are removed, filters and masks are disposed.
*/
dispose(): void;
/**
* Removes the object from its parent, if it has one, and optionally disposes it.
*/
removeFromParent(dispose?: boolean): void;
/**
* Creates a matrix that represents the transformation from the local coordinate system
* * to another. If you pass an out-matrix, the result will be stored in this matrix
* * instead of creating a new object.
*/
getTransformationMatrix(targetSpace: DisplayObject, out?: Matrix): Matrix;
/**
* Returns a rectangle that completely encloses the object as it appears in another
* * coordinate system. If you pass an out-rectangle, the result will be stored in this
* * rectangle instead of creating a new object.
*/
getBounds(targetSpace: DisplayObject, out?: Rectangle): Rectangle;
/**
* Returns the object that is found topmost beneath a point in local coordinates, or nil
* * if the test fails. Untouchable and invisible objects will cause the test to fail.
*/
hitTest(localPoint: Point): DisplayObject;
/**
* Checks if a certain point is inside the display object's mask. If there is no mask,
* * this method always returns true (because having no mask is equivalent
* * to having one that's infinitely big).
*/
hitTestMask(localPoint: Point): boolean;
/**
* Transforms a point from the local coordinate system to global (stage) coordinates.
* * If you pass an out-point, the result will be stored in this point instead of
* * creating a new object.
*/
localToGlobal(localPoint: Point, out?: Point): Point;
/**
* Transforms a point from global (stage) coordinates to the local coordinate system.
* * If you pass an out-point, the result will be stored in this point instead of
* * creating a new object.
*/
globalToLocal(globalPoint: Point, out?: Point): Point;
/**
* Renders the display object with the help of a painter object. Never call this method
* * directly, except from within another render method.
* *
* * @param painter Captures the current render state and provides utility functions
* * for rendering.
*
*/
render(painter: Painter): void;
/**
* Moves the pivot point to a certain position within the local coordinate system
* * of the object. If you pass no arguments, it will be centered.
*/
alignPivot(horizontalAlign?: string, verticalAlign?: string): void;
/**
* Draws the object into a BitmapData object.
* *
* *
This is achieved by drawing the object into the back buffer and then copying the * * pixels of the back buffer into a texture. Beware: image sizes bigger than the back * * buffer are only supported in AIR version 25 or higher and NOT in Flash Player.
* * * * @param out If you pass null, the object will be created for you. * * If you pass a BitmapData object, it should have the size of the * * object bounds, multiplied by the current contentScaleFactor. * * @param color The RGB color value with which the bitmap will be initialized. * * @param alpha The alpha value with which the bitmap will be initialized. * */ drawToBitmapData(out?: BitmapData, color?: number, alpha?: number): BitmapData; /** * Creates a matrix that represents the transformation from the local coordinate system * * to another. This method supports three dimensional objects created via 'Sprite3D'. * * If you pass anout-matrix, the result will be stored in this matrix
* * instead of creating a new object.
*/
getTransformationMatrix3D(targetSpace: DisplayObject, out?: Matrix3D): Matrix3D;
/**
* Transforms a 3D point from the local coordinate system to global (stage) coordinates.
* * This is achieved by projecting the 3D point onto the (2D) view plane.
* *
* * If you pass an out-point, the result will be stored in this point instead of
* * creating a new object.
out-vector, the result will be stored in this point instead of
* * creating a new object.
*/
globalToLocal3D(globalPoint: Point, out?: Vector3D): Vector3D;
/**
* Forces the object to be redrawn in the next frame.
* * This will prevent the object to be drawn from the render cache.
* *
* * This method is called every time the object changes in any way. When creating * * custom mesh styles or any other custom rendering code, call this method if the object * * needs to be redrawn.
* * * *If the object needs to be redrawn just because it does not support the render cache,
* * call painter.excludeFromCache() in the object's render method instead.
* * That way, Starling's skipUnchangedFrames policy won't be disrupted.
If you assign a custom transformation matrix, Starling will try to figure out
* * suitable values for x, y, scaleX, scaleY, and rotation.
* * However, if the matrix was created in a different way, this might not be possible.
* * In that case, Starling will apply the matrix, but not update the corresponding
* * properties.
CAUTION: not a copy, but the actual object!
*/ get transformationMatrix(): Matrix; set transformationMatrix(value: Matrix) /** * The 3D transformation matrix of the object relative to its parent. * * * *For 2D objects, this property returns just a 3D version of the 2D transformation * * matrix. Only the 'Sprite3D' class supports real 3D transformations.
* * * *CAUTION: not a copy, but the actual object!
*/ get transformationMatrix3D(): Matrix3D; /** * Indicates if this object or any of its parents is a 'Sprite3D' object. */ get is3D(): boolean; /** * Indicates if the mouse cursor should transform into a hand while it's over the sprite. * * @default false */ get useHandCursor(): boolean; set useHandCursor(value: boolean) /** * The bounds of the object relative to the local coordinates of the parent. */ get bounds(): Rectangle; /** * The width of the object in pixels. * * Note that for objects in a 3D space (connected to a Sprite3D), this value might not * * be accurate until the object is part of the display list. */ get width(): number; set width(value: number) /** * The height of the object in pixels. * * Note that for objects in a 3D space (connected to a Sprite3D), this value might not * * be accurate until the object is part of the display list. */ get height(): number; set height(value: number) /** * The x coordinate of the object relative to the local coordinates of the parent. */ get x(): number; set x(value: number) /** * The y coordinate of the object relative to the local coordinates of the parent. */ get y(): number; set y(value: number) /** * The x coordinate of the object's origin in its own coordinate space (default: 0). */ get pivotX(): number; set pivotX(value: number) /** * The y coordinate of the object's origin in its own coordinate space (default: 0). */ get pivotY(): number; set pivotY(value: number) /** * The horizontal scale factor. '1' means no scale, negative values flip the object. * * @default 1 */ get scaleX(): number; set scaleX(value: number) /** * The vertical scale factor. '1' means no scale, negative values flip the object. * * @default 1 */ get scaleY(): number; set scaleY(value: number) /** * Sets both 'scaleX' and 'scaleY' to the same value. The getter simply returns the * * value of 'scaleX' (even if the scaling values are different). @default 1 */ get scale(): number; set scale(value: number) /** * The horizontal skew angle in radians. */ get skewX(): number; set skewX(value: number) /** * The vertical skew angle in radians. */ get skewY(): number; set skewY(value: number) /** * The rotation of the object in radians. (In Starling, all angles are measured * * in radians.) */ get rotation(): number; set rotation(value: number) /** * The opacity of the object. 0 = transparent, 1 = opaque. @default 1 */ get alpha(): number; set alpha(value: number) /** * The visibility of the object. An invisible object will be untouchable. */ get visible(): boolean; set visible(value: boolean) /** * Indicates if this object (and its children) will receive touch events. */ get touchable(): boolean; set touchable(value: boolean) /** * The blend mode determines how the object is blended with the objects underneath. * * @default auto * * @see starling.display.BlendMode */ get blendMode(): string; set blendMode(value: string) /** * The name of the display object (default: null). Used by 'getChildByName()' of * * display object containers. */ get name(): string; set name(value: string) /** * The filter that is attached to the display object. Thestarling.filters
* * package contains several classes that define specific filters you can use. To combine
* * several filters, assign an instance of the FilterChain class; to remove
* * all filters, assign null.
* *
* * Beware that a filter instance may only be used on one object at a time! Furthermore, * * when you remove or replace a filter, it is NOT disposed automatically (since you might * * want to reuse it on a different object).
* * * * @default null * * @see starling.filters.FragmentFilter * * @see starling.filters.FilterChain * */ get filter(): FragmentFilter; set filter(value: FragmentFilter) /** * The display object that acts as a mask for the current object. * * Assignnull to remove it.
* *
* * A pixel of the masked display object will only be drawn if it is within one of the * * mask's polygons. Texture pixels and alpha values of the mask are not taken into * * account. The mask object itself is never visible.
* * * *If the mask is part of the display list, masking will occur at exactly the * * location it occupies on the stage. If it is not, the mask will be placed in the local * * coordinate system of the target object (as if it was one of its children).
* * * *For rectangular masks, you can use simple quads; for other forms (like circles * * or arbitrary shapes) it is recommended to use a 'Canvas' instance.
* * * *Note: a mask will typically cause at least two additional draw
* * calls: one to draw the mask to the stencil buffer and one to erase it. However, if the
* * mask object is an instance of starling.display.Quad and is aligned
* * parallel to the stage axes, rendering will be optimized: instead of using the
* * stencil buffer, the object will be clipped using the scissor rectangle. That's
* * faster and reduces the number of draw calls, so make use of this when possible.
Note: AIR apps require the depthAndStencil node
* * in the application descriptor XMLs to be enabled! Otherwise, stencil masking won't
* * work.