OSDN Git Service

初期インポート。
[nyartoolkit-and/nyartoolkit-android-0.9.git] / src / com / tomgibara / android / camera / BitmapCamera.java
diff --git a/src/com/tomgibara/android/camera/BitmapCamera.java b/src/com/tomgibara/android/camera/BitmapCamera.java
new file mode 100644 (file)
index 0000000..8b47530
--- /dev/null
@@ -0,0 +1,60 @@
+package com.tomgibara.android.camera;\r
+\r
+import android.graphics.Bitmap;\r
+import android.graphics.Canvas;\r
+import android.graphics.Paint;\r
+import android.graphics.Rect;\r
+\r
+/**\r
+ * A CameraSource implementation that repeatedly captures a single bitmap.\r
+ * \r
+ * @author Tom\r
+ *\r
+ */\r
+\r
+public class BitmapCamera implements CameraSource {\r
+\r
+       private final Bitmap bitmap;\r
+       private final Rect bounds;\r
+       private final Paint paint = new Paint();\r
+\r
+       public BitmapCamera(Bitmap bitmap, int width, int height) {\r
+               this.bitmap = bitmap;\r
+               bounds = new Rect(0, 0, width, height);\r
+\r
+               paint.setFilterBitmap(true);\r
+               paint.setAntiAlias(true);\r
+       }\r
+       \r
+       @Override\r
+       public int getWidth() {\r
+               return bounds.right;\r
+       }\r
+       \r
+       @Override\r
+       public int getHeight() {\r
+               return bounds.bottom;\r
+       }\r
+       \r
+       @Override\r
+       public boolean open() {\r
+               return true;\r
+       }\r
+       \r
+       @Override\r
+       public boolean capture(Canvas canvas) {\r
+               if (\r
+                               bounds.right == bitmap.width() &&\r
+                               bounds.bottom == bitmap.height()) {\r
+                       canvas.drawBitmap(bitmap, 0, 0, null);\r
+               } else {\r
+                       canvas.drawBitmap(bitmap, null, bounds, paint);\r
+               }\r
+               return true;\r
+       }\r
+       \r
+       @Override\r
+       public void close() {\r
+               /* nothing to do */\r
+       }\r
+}\r