package flash.media;

extern final class Camera extends flash.events.EventDispatcher {
	@:flash.property var activityLevel(get,never) : Float;
	@:flash.property var bandwidth(get,never) : Int;
	@:flash.property var currentFPS(get,never) : Float;
	@:flash.property var fps(get,never) : Float;
	@:flash.property var height(get,never) : Int;
	@:flash.property var index(get,never) : Int;
	@:flash.property var keyFrameInterval(get,never) : Int;
	@:flash.property var loopback(get,never) : Bool;
	@:flash.property var motionLevel(get,never) : Int;
	@:flash.property var motionTimeout(get,never) : Int;
	@:flash.property var muted(get,never) : Bool;
	@:flash.property var name(get,never) : String;
	@:flash.property @:require(flash11_2) var position(get,never) : String;
	@:flash.property var quality(get,never) : Int;
	@:flash.property var width(get,never) : Int;
	function new() : Void;
	@:require(flash11_4) function copyToByteArray(rect : flash.geom.Rectangle, destination : flash.utils.ByteArray) : Void;
	@:require(flash11_4) function copyToVector(rect : flash.geom.Rectangle, destination : flash.Vector<UInt>) : Void;
	@:require(flash11_4) function drawToBitmapData(destination : flash.display.BitmapData) : Void;
	private function get_activityLevel() : Float;
	private function get_bandwidth() : Int;
	private function get_currentFPS() : Float;
	private function get_fps() : Float;
	private function get_height() : Int;
	private function get_index() : Int;
	private function get_keyFrameInterval() : Int;
	private function get_loopback() : Bool;
	private function get_motionLevel() : Int;
	private function get_motionTimeout() : Int;
	private function get_muted() : Bool;
	private function get_name() : String;
	private function get_position() : String;
	private function get_quality() : Int;
	private function get_width() : Int;
	function setCursor(value : Bool) : Void;
	function setKeyFrameInterval(keyFrameInterval : Int) : Void;
	function setLoopback(compress : Bool = false) : Void;
	function setMode(width : Int, height : Int, fps : Float, favorArea : Bool = true) : Void;
	function setMotionLevel(motionLevel : Int, timeout : Int = 2000) : Void;
	function setQuality(bandwidth : Int, quality : Int) : Void;
	@:flash.property @:require(flash10_1) static var isSupported(get,never) : Bool;
	@:flash.property static var names(get,never) : Array<Dynamic>;
	@:ns("flash.media",internal) @:require(flash10_1) static function _scanHardware() : Void;
	static function getCamera(?name : String) : Camera;
	private static function get_isSupported() : Bool;
	private static function get_names() : Array<Dynamic>;
}
