From dc5cdd35a579dd5b4836094cd42fed2f290e28b7 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Thu, 2 Apr 2020 19:53:00 -0300 Subject: [PATCH] FilterCameraPreview as interface, better CameraPreview APIs --- .../cameraview/preview/MockCameraPreview.java | 2 +- .../cameraview/preview/CameraPreview.java | 25 +++++++++++-------- .../preview/FilterCameraPreview.java | 11 +++----- .../cameraview/preview/GlCameraPreview.java | 5 ++-- .../preview/SurfaceCameraPreview.java | 2 +- .../preview/TextureCameraPreview.java | 2 +- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java index bec20e0e..c4e5238c 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/preview/MockCameraPreview.java @@ -10,7 +10,7 @@ import android.view.ViewGroup; import com.otaliastudios.cameraview.filter.Filter; import com.otaliastudios.cameraview.preview.CameraPreview; -public class MockCameraPreview extends FilterCameraPreview { +public class MockCameraPreview extends CameraPreview implements FilterCameraPreview { public MockCameraPreview(Context context, ViewGroup parent) { super(context, parent); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/CameraPreview.java b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/CameraPreview.java index deaa9002..14982e10 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/CameraPreview.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/CameraPreview.java @@ -62,18 +62,24 @@ public abstract class CameraPreview { @VisibleForTesting CropCallback mCropCallback; private SurfaceCallback mSurfaceCallback; private T mView; - boolean mCropping; + @SuppressWarnings("WeakerAccess") + protected boolean mCropping; // These are the surface dimensions in REF_VIEW. - int mOutputSurfaceWidth; - int mOutputSurfaceHeight; + @SuppressWarnings("WeakerAccess") + protected int mOutputSurfaceWidth; + @SuppressWarnings("WeakerAccess") + protected int mOutputSurfaceHeight; // These are the preview stream dimensions, in REF_VIEW. - int mInputStreamWidth; - int mInputStreamHeight; + @SuppressWarnings("WeakerAccess") + protected int mInputStreamWidth; + @SuppressWarnings("WeakerAccess") + protected int mInputStreamHeight; // The rotation, if any, to be applied when drawing. - int mDrawRotation; + @SuppressWarnings("WeakerAccess") + protected int mDrawRotation; /** * Creates a new preview. @@ -88,7 +94,7 @@ public abstract class CameraPreview { * Sets a callback to be notified of surface events (creation, change, destruction) * @param callback a callback */ - public final void setSurfaceCallback(@Nullable SurfaceCallback callback) { + public void setSurfaceCallback(@Nullable SurfaceCallback callback) { if (hasSurface() && mSurfaceCallback != null) { mSurfaceCallback.onSurfaceDestroyed(); } @@ -124,9 +130,8 @@ public abstract class CameraPreview { * @return the root view */ @SuppressWarnings("unused") - @VisibleForTesting @NonNull - abstract View getRootView(); + public abstract View getRootView(); /** * Returns the output surface object (for example a SurfaceHolder @@ -162,7 +167,7 @@ public abstract class CameraPreview { * Returns the current input stream size, in view coordinates. * @return the current input stream size */ - @SuppressWarnings("unused") + @VisibleForTesting @NonNull final Size getStreamSize() { return new Size(mInputStreamWidth, mInputStreamHeight); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/FilterCameraPreview.java b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/FilterCameraPreview.java index a164aa86..e4a56363 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/FilterCameraPreview.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/FilterCameraPreview.java @@ -16,18 +16,13 @@ import com.otaliastudios.cameraview.filter.Filter; * The preview has the responsibility of calling {@link Filter#setSize(int, int)} * whenever the preview size changes and as soon as the filter is applied. */ -public abstract class FilterCameraPreview extends CameraPreview { - - @SuppressWarnings("WeakerAccess") - public FilterCameraPreview(@NonNull Context context, @NonNull ViewGroup parent) { - super(context, parent); - } +public interface FilterCameraPreview { /** * Sets a new filter. * @param filter new filter */ - public abstract void setFilter(@NonNull Filter filter); + void setFilter(@NonNull Filter filter); /** * Returns the currently used filter. @@ -35,5 +30,5 @@ public abstract class FilterCameraPreview extends Camera */ @SuppressWarnings("unused") @NonNull - public abstract Filter getCurrentFilter(); + Filter getCurrentFilter(); } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java index 58b6f065..dcb51e0f 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java @@ -60,7 +60,8 @@ import javax.microedition.khronos.opengles.GL10; * which means that we can fetch the GL context that was created and is managed * by the {@link GLSurfaceView}. */ -public class GlCameraPreview extends FilterCameraPreview { +public class GlCameraPreview extends CameraPreview + implements FilterCameraPreview { private boolean mDispatched; private SurfaceTexture mInputSurfaceTexture; @@ -110,7 +111,7 @@ public class GlCameraPreview extends FilterCameraPreview