summaryrefslogtreecommitdiff
path: root/webcam/media/NeaveCamera.as
diff options
context:
space:
mode:
Diffstat (limited to 'webcam/media/NeaveCamera.as')
-rwxr-xr-xwebcam/media/NeaveCamera.as81
1 files changed, 81 insertions, 0 deletions
diff --git a/webcam/media/NeaveCamera.as b/webcam/media/NeaveCamera.as
new file mode 100755
index 0000000..f401af8
--- /dev/null
+++ b/webcam/media/NeaveCamera.as
@@ -0,0 +1,81 @@
+/**
+ * Neave Camera
+ *
+ * Copyright (C) 2008 Paul Neave
+ * http://www.neave.com/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation at http://www.gnu.org/licenses/gpl.html
+ */
+
+package com.neave.media
+{
+ import flash.events.*;
+ import flash.media.*;
+ import flash.system.*;
+
+ public class NeaveCamera
+ {
+ /**
+ * The requested width of the camera object
+ */
+ static public var CAMERA_WIDTH:int = 320;
+
+ /**
+ * The requested height of the camera object
+ */
+ static public var CAMERA_HEIGHT:int = 240;
+
+ static private var cam:Camera;
+
+ public function NeaveCamera() { }
+
+ /**
+ * Sets up and returns the camera object
+ *
+ * @return A camera object
+ */
+ static public function getCamera():Camera
+ {
+ // Return the same camera if it has been successfully requested before
+ if (cam != null)
+ {
+ if (cam.muted) Security.showSettings(SecurityPanel.PRIVACY);
+ return cam;
+ }
+
+ // Get the camera
+ cam = Camera.getCamera();
+ if (cam != null)
+ {
+ // Set properties if a camera was found
+ cam.setMode(CAMERA_WIDTH, CAMERA_HEIGHT, 30, true);
+ cam.addEventListener(StatusEvent.STATUS, NeaveCamera.statusListener);
+ return cam;
+ }
+ else
+ {
+ // No camera found
+ Security.showSettings(SecurityPanel.CAMERA);
+ return new Camera();
+ }
+ }
+
+ /**
+ * Whether the camera object is available or not
+ */
+ static public function get muted():Boolean
+ {
+ return cam == null || cam.muted || cam.name == null || cam.width == 0;
+ }
+
+ /**
+ * Camera status response
+ */
+ static private function statusListener(e:StatusEvent):void
+ {
+ if (e.code == "Camera.Unmuted") Security.showSettings(SecurityPanel.CAMERA);
+ }
+ }
+} \ No newline at end of file