--- /dev/null
+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