package openfl.events {
import openfl.geom.Matrix;
import openfl.geom.ColorTransform;
import openfl.display.DisplayObjectRenderer;
/**
 * *BETA**
 * 
 * 	RenderEvent is dispatched (optionally) once a listener is added to a
 * 	DisplayObject. When the internal Stage renderer is ready to draw the specified
 * 	object, a RenderEvent will be dispatched.
 * 
 * 	Caching a RenderEvent to access at a later time will not work properly. Also,
 * 	since the RenderEvent is more of an internal API, there may be additional
 * 	concerns to order to ensure that all objects and features work as-intended.
 * 
 * 	The type of RenderEvent dispatched will match the type of rendering being used.
 * 	This renderer type will match the default Stage render, but also can depend on
 * 	whether an off-screen render (such as DisplayObject `cacheAsBitmap` or BitmapData
 * 	`draw`) is being used.
 * 
 * @externs
 */
public class RenderEvent extends openfl.events.Event {
	/**
	 * 		Creates an Event object that contains information about render events.
	 * 		Event objects are passed as parameters to event listeners.
	 * 
	 * 		@param type        The type of the event. Possible values
	 * 						   are: `RenderEvent.CLEAR_DOM`,
	 * 						   `RenderEvent.RENDER_CAIRO`,
	 * 						   `RenderEvent.RENDER_CANVAS`,
	 * 						   `RenderEvent.RENDER_DOM`, and
	 * 						   `RenderEvent.RENDER_OPENGL`.
	 * 		@param bubbles     Determines whether the Event object participates in the
	 * 						   bubbling stage of the event flow.
	 * 		@param cancelable  Determines whether the Event object can be canceled.
	 * 		@param objectMatrix Sets the concatenated matrix for the display object being rendered.
	 * 		@param objectTransform  Sets the concatenated color transform for the display object being
	 * 		rendered.
	 * 		@param	allowSmoothing	Determines whether the current render should allow smoothing.
	 * 	
	 */
	public function RenderEvent(type:String, bubbles:Boolean = undefined, cancelable:Boolean = undefined, objectMatrix:openfl.geom.Matrix = undefined, objectColorTransform:openfl.geom.ColorTransform = undefined, allowSmoothing:Boolean = undefined) {
		super(undefined, undefined, undefined);
	}
	/**
	 * 		The `RenderEvent.CLEAR_DOM` constant defines the value of the `type` property
	 * 		of an `renderEvent` event object.
	 * 
	 * 		This event has the following properties:
	 * 
	 * 		| Property | Value |
	 * 		| --- | --- |
	 * 		| `bubbles` | `true` |
	 * 		| `cancelable` | `true` |
	 * 		| `currentTarget` | The object that is actively processing the Event object with an event listener. |
	 * 		| `renderer` | A reference to the active display object renderer. |
	 * 		| `target` | The display object that is going to be rendered. |
	 * 	
	 */
	public static const CLEAR_DOM:String = "clearDOM";
	/**
	 * 		The `RenderEvent.RENDER_CAIRO` constant defines the value of the `type` property
	 * 		of an `renderEvent` event object.
	 * 
	 * 		This event has the following properties:
	 * 
	 * 		| Property | Value |
	 * 		| --- | --- |
	 * 		| `bubbles` | `true` |
	 * 		| `cancelable` | `true` |
	 * 		| `currentTarget` | The object that is actively processing the Event object with an event listener. |
	 * 		| `renderer` | A reference to the active display object renderer. |
	 * 		| `target` | The display object that is going to be rendered. |
	 * 	
	 */
	public static const RENDER_CAIRO:String = "renderCairo";
	/**
	 * 		The `RenderEvent.RENDER_CANVAS` constant defines the value of the `type` property
	 * 		of an `renderEvent` event object.
	 * 
	 * 		This event has the following properties:
	 * 
	 * 		| Property | Value |
	 * 		| --- | --- |
	 * 		| `bubbles` | `true` |
	 * 		| `cancelable` | `true` |
	 * 		| `currentTarget` | The object that is actively processing the Event object with an event listener. |
	 * 		| `renderer` | A reference to the active display object renderer. |
	 * 		| `target` | The display object that is going to be rendered. |
	 * 	
	 */
	public static const RENDER_CANVAS:String = "renderCanvas";
	/**
	 * 		The `RenderEvent.RENDER_DOM` constant defines the value of the `type` property
	 * 		of an `renderEvent` event object.
	 * 
	 * 		This event has the following properties:
	 * 
	 * 		| Property | Value |
	 * 		| --- | --- |
	 * 		| `bubbles` | `true` |
	 * 		| `cancelable` | `true` |
	 * 		| `currentTarget` | The object that is actively processing the Event object with an event listener. |
	 * 		| `renderer` | A reference to the active display object renderer. |
	 * 		| `target` | The display object that is going to be rendered. |
	 * 	
	 */
	public static const RENDER_DOM:String = "renderDOM";
	/**
	 * 		The `RenderEvent.RENDER_OPENGL` constant defines the value of the `type` property
	 * 		of an `renderEvent` event object.
	 * 
	 * 		This event has the following properties:
	 * 
	 * 		| Property | Value |
	 * 		| --- | --- |
	 * 		| `bubbles` | `true` |
	 * 		| `cancelable` | `true` |
	 * 		| `currentTarget` | The object that is actively processing the Event object with an event listener. |
	 * 		| `renderer` | A reference to the active display object renderer. |
	 * 		| `target` | The display object that is going to be rendered. |
	 * 	
	 */
	public static const RENDER_OPENGL:String = "renderOpenGL";
	/**
	 * 		Whether the current render should allow smoothing.
	 * 	
	 */
	public var allowSmoothing:Boolean;
	/**
	 * 		The concatenated color transform for the display object being rendered.
	 * 	
	 */
	public var objectColorTransform:openfl.geom.ColorTransform;
	/**
	 * 		The concatenated matrix for the display object being rendered.
	 * 	
	 */
	public var objectMatrix:openfl.geom.Matrix;
	/**
	 * 		The display object renderer being used for this render.
	 * 	
	 */
	public var renderer:openfl.display.DisplayObjectRenderer;
	override public function clone():openfl.events.RenderEvent { return null; }
	override public function toString():String { return null; }
}
}
