diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index 45a382be..ad0aba26 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -13,12 +13,10 @@ import android.graphics.PointF; import android.graphics.Rect; import android.location.Location; import android.media.MediaActionSound; -import android.opengl.GLSurfaceView; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; -import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -49,6 +47,8 @@ import com.otaliastudios.cameraview.engine.Camera1Engine; import com.otaliastudios.cameraview.engine.Camera2Engine; import com.otaliastudios.cameraview.engine.CameraEngine; import com.otaliastudios.cameraview.engine.offset.Reference; +import com.otaliastudios.cameraview.filters.Filter; +import com.otaliastudios.cameraview.filters.Filters; import com.otaliastudios.cameraview.frame.Frame; import com.otaliastudios.cameraview.frame.FrameProcessor; import com.otaliastudios.cameraview.gesture.Gesture; @@ -71,8 +71,6 @@ import com.otaliastudios.cameraview.preview.CameraPreview; import com.otaliastudios.cameraview.preview.GlCameraPreview; import com.otaliastudios.cameraview.preview.SurfaceCameraPreview; import com.otaliastudios.cameraview.preview.TextureCameraPreview; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; -import com.otaliastudios.cameraview.shadereffects.ShaderEffectFactory; import com.otaliastudios.cameraview.size.AspectRatio; import com.otaliastudios.cameraview.size.Size; import com.otaliastudios.cameraview.size.SizeSelector; @@ -2136,33 +2134,20 @@ public class CameraView extends FrameLayout implements LifecycleObserver { //region Effects - public GLSurfaceView getCurrentPreviewingGlSurfaceView() { + public void setFilter(Filters filter) { if (mCameraPreview instanceof GlCameraPreview) { - return ((GlCameraPreview) mCameraPreview).getView(); - } - - LOG.w("getCurrentPreviewingGlSurfaceView", "current preview is not GLSurfaceView"); - return null; - } - - public void changeEffect(ShaderEffectFactory.ShaderEffects effect) { - if (mCameraPreview instanceof GlCameraPreview) { - GLSurfaceView previewingSurfaceView = getCurrentPreviewingGlSurfaceView(); - if (previewingSurfaceView != null) { - BaseShaderEffect shaderEffect = ShaderEffectFactory.getShaderFromFactory(effect, previewingSurfaceView); - - ((GlCameraPreview) mCameraPreview).setShaderEffect(shaderEffect); - } + Filter shaderEffect = filter.newInstance(); + ((GlCameraPreview) mCameraPreview).setShaderEffect(shaderEffect); } else { - LOG.w("changeEffect", "changeEffect is supported only for GLSurfaceView"); + LOG.w("setFilter", "setFilter is supported only for GLSurfaceView"); } } - public void changeEffect(BaseShaderEffect shaderEffect) { + public void setFilter(Filter shaderEffect) { if (mCameraPreview instanceof GlCameraPreview) { ((GlCameraPreview) mCameraPreview).setShaderEffect(shaderEffect); } else { - LOG.w("changeEffect", "changeEffect is supported only for GLSurfaceView"); + LOG.w("setFilter", "setFilter is supported only for GLSurfaceView"); } } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixEffect.java similarity index 92% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixEffect.java index 1cde31ad..b1f75052 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixEffect.java @@ -1,11 +1,11 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Attempts to auto-fix the preview based on histogram equalization. */ -public class AutoFixEffect extends BaseShaderEffect { +public class AutoFixEffect extends Filter { private float scale = 1.0f; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BlackAndWhiteEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteEffect.java similarity index 80% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BlackAndWhiteEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteEffect.java index 5e9b21c6..19c449c3 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BlackAndWhiteEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteEffect.java @@ -1,11 +1,11 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Converts the preview into black and white colors */ -public class BlackAndWhiteEffect extends BaseShaderEffect { +public class BlackAndWhiteEffect extends Filter { /** diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessEffect.java similarity index 86% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessEffect.java index 0f9476c6..8cfb0709 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessEffect.java @@ -1,11 +1,11 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Adjusts the brightness of the preview. */ -public class BrightnessEffect extends BaseShaderEffect { +public class BrightnessEffect extends Filter { private float brightnessValue = 2.0f; /** diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastEffect.java similarity index 85% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastEffect.java index 98752936..94dd8da9 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastEffect.java @@ -1,10 +1,10 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Adjusts the contrast of the preview. */ -public class ContrastEffect extends BaseShaderEffect { +public class ContrastEffect extends Filter { private float contrast = 2.0f; /** diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CrossProcessEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessEffect.java similarity index 87% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CrossProcessEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessEffect.java index 8b327cc1..701469dc 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CrossProcessEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessEffect.java @@ -1,12 +1,12 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Applies a cross process effect on preview, in which the red and green channels * are enhanced while the blue channel is restricted. */ -public class CrossProcessEffect extends BaseShaderEffect { +public class CrossProcessEffect extends Filter { /** * Initialize Effect diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CustomEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CustomEffect.java similarity index 72% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CustomEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/CustomEffect.java index 3bdb7139..4680f8d0 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CustomEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CustomEffect.java @@ -1,12 +1,12 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * This class is to implement any custom effect. */ -public class CustomEffect extends BaseShaderEffect { +public class CustomEffect extends Filter { /** * Parameterized constructor with vertex and fragment shader as parameter diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryEffect.java similarity index 91% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryEffect.java index 418e4f2e..cb5bcce8 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryEffect.java @@ -1,8 +1,6 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import android.opengl.GLSurfaceView; - -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; import java.util.Date; import java.util.Random; @@ -10,7 +8,7 @@ import java.util.Random; /** * Applies black and white documentary style effect on preview. */ -public class DocumentaryEffect extends BaseShaderEffect { +public class DocumentaryEffect extends Filter { private Random mRandom; public DocumentaryEffect() { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneEffect.java similarity index 91% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneEffect.java index 3fbc9bbc..06158847 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneEffect.java @@ -1,13 +1,13 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; import android.graphics.Color; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Representation of preview using only two color tones. */ -public class DuotoneEffect extends BaseShaderEffect { +public class DuotoneEffect extends Filter { // Default values private int mFirstColor = Color.MAGENTA; private int mSecondColor = Color.YELLOW; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightEffect.java similarity index 89% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightEffect.java index 30448d8f..2ffcb787 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightEffect.java @@ -1,11 +1,11 @@ -package com.otaliastudios.cameraview.shadereffects.effects; +package com.otaliastudios.cameraview.filters; -import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; +import com.otaliastudios.cameraview.filters.Filter; /** * Applies back-light filling to the preview. */ -public class FillLightEffect extends BaseShaderEffect { +public class FillLightEffect extends Filter { private float strength = 0.5f; /** diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filter.java similarity index 94% rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filter.java index d77a2ebe..17bda399 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filter.java @@ -1,6 +1,4 @@ -package com.otaliastudios.cameraview.shadereffects; - -import android.opengl.GLSurfaceView; +package com.otaliastudios.cameraview.filters; /** * A Base abstract class that every effect must extend so that there is a common getShader method. @@ -20,7 +18,7 @@ import android.opengl.GLSurfaceView; *
* The default implementation of this class is NoEffect.
*/
-public abstract class BaseShaderEffect {
+public abstract class Filter {
/**
* Vertex shader code written in Shader Language (C) and stored as String.
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java
new file mode 100644
index 00000000..2faf1ed5
--- /dev/null
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java
@@ -0,0 +1,124 @@
+package com.otaliastudios.cameraview.filters;
+
+public enum Filters {
+ NO_EFFECT,
+
+ AUTO_FIX_EFFECT,
+ BLACK_AND_WHITE_EFFECT,
+ BRIGHTNESS_EFFECT,
+ CONTRAST_EFFECT,
+ CROSS_PROCESS_EFFECT,
+ DOCUMENTARY_EFFECT,
+ DUO_TONE_COLOR_EFFECT,
+ FILL_LIGHT_EFFECT,
+ GAMMA_EFFECT,
+ GRAIN_EFFECT,
+ GREY_SCALE_EFFECT,
+ HUE_EFFECT,
+ INVERT_COLOR_EFFECT,
+ LAMOISH_EFFECT,
+ POSTERIZE_EFFECT,
+ SATURATION_EFFECT,
+ SEPIA_EFFECT,
+ SHARPNESS_EFFECT,
+ TEMPERATURE_EFFECT,
+ TINT_EFFECT,
+ VIGNETTE_EFFECT;
+
+ public Filter newInstance(){
+ Filter shaderEffect;
+ switch (this) {
+
+ case AUTO_FIX_EFFECT:
+ shaderEffect = new AutoFixEffect();
+ break;
+
+ case BLACK_AND_WHITE_EFFECT:
+ shaderEffect = new BlackAndWhiteEffect();
+ break;
+
+ case BRIGHTNESS_EFFECT:
+ shaderEffect = new BrightnessEffect();
+ break;
+
+ case CONTRAST_EFFECT:
+ shaderEffect = new ContrastEffect();
+ break;
+
+ case CROSS_PROCESS_EFFECT:
+ shaderEffect = new CrossProcessEffect();
+ break;
+
+ case DOCUMENTARY_EFFECT:
+ shaderEffect = new DocumentaryEffect();
+ break;
+
+ case DUO_TONE_COLOR_EFFECT:
+ shaderEffect = new DuotoneEffect();
+ break;
+
+ case FILL_LIGHT_EFFECT:
+ shaderEffect = new FillLightEffect();
+ break;
+
+ case GAMMA_EFFECT:
+ shaderEffect = new GammaEffect();
+ break;
+
+ case GRAIN_EFFECT:
+ shaderEffect = new GrainEffect();
+ break;
+
+ case GREY_SCALE_EFFECT:
+ shaderEffect = new GreyScaleEffect();
+ break;
+
+ case HUE_EFFECT:
+ shaderEffect = new HueEffect();
+ break;
+
+ case INVERT_COLOR_EFFECT:
+ shaderEffect = new InvertColorsEffect();
+ break;
+
+ case LAMOISH_EFFECT:
+ shaderEffect = new LamoishEffect();
+ break;
+
+ case POSTERIZE_EFFECT:
+ shaderEffect = new PosterizeEffect();
+ break;
+
+ case SATURATION_EFFECT:
+ shaderEffect = new SaturationEffect();
+ break;
+
+ case SEPIA_EFFECT:
+ shaderEffect = new SepiaEffect();
+ break;
+
+ case SHARPNESS_EFFECT:
+ shaderEffect = new SharpnessEffect();
+ break;
+
+ case TEMPERATURE_EFFECT:
+ shaderEffect = new TemperatureEffect();
+ break;
+
+ case TINT_EFFECT:
+ shaderEffect = new TintEffect();
+ break;
+
+ case VIGNETTE_EFFECT:
+ shaderEffect = new VignetteEffect();
+ break;
+
+
+ case NO_EFFECT:
+ default:
+ shaderEffect = new NoFilterEffect();
+ }
+
+ return shaderEffect;
+ }
+}
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaEffect.java
similarity index 88%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaEffect.java
index 1a65bd31..9ac08cb2 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Apply Gamma Effect on preview being played
*/
-public class GammaEffect extends BaseShaderEffect {
+public class GammaEffect extends Filter {
private float gammaValue = 2.0f;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainEffect.java
similarity index 92%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainEffect.java
index c64a15f7..68a6e73d 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainEffect.java
@@ -1,8 +1,6 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import android.opengl.GLSurfaceView;
-
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
import java.util.Date;
import java.util.Random;
@@ -10,7 +8,7 @@ import java.util.Random;
/**
* Applies film grain effect to preview.
*/
-public class GrainEffect extends BaseShaderEffect {
+public class GrainEffect extends Filter {
private float strength = 0.5f;
private Random mRandom;
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GreyScaleEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GreyScaleEffect.java
similarity index 76%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GreyScaleEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/GreyScaleEffect.java
index 2406f6ff..7198c5a7 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GreyScaleEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GreyScaleEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Converts preview to GreyScale.
*/
-public class GreyScaleEffect extends BaseShaderEffect {
+public class GreyScaleEffect extends Filter {
/**
* Initialize Effect
*/
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueEffect.java
similarity index 92%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueEffect.java
index 824155c7..6c4802fd 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Apply Hue effect on the preview
*/
-public class HueEffect extends BaseShaderEffect {
+public class HueEffect extends Filter {
float hueValue = 0.0f;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/InvertColorsEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsEffect.java
similarity index 79%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/InvertColorsEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsEffect.java
index 8510436a..ae5d13b7 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/InvertColorsEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Inverts the preview colors. This can also be known as negative Effect.
*/
-public class InvertColorsEffect extends BaseShaderEffect {
+public class InvertColorsEffect extends Filter {
/**
* Initialize Effect
*/
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/LamoishEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/LamoishEffect.java
similarity index 94%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/LamoishEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/LamoishEffect.java
index 1cadd87c..0f579938 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/LamoishEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/LamoishEffect.java
@@ -1,8 +1,6 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import android.opengl.GLSurfaceView;
-
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
import java.util.Date;
import java.util.Random;
@@ -10,7 +8,7 @@ import java.util.Random;
/**
* Applies lomo-camera style effect to preview.
*/
-public class LamoishEffect extends BaseShaderEffect {
+public class LamoishEffect extends Filter {
private Random mRandom;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/NoFilterEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/NoFilterEffect.java
new file mode 100644
index 00000000..b02cc01d
--- /dev/null
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/NoFilterEffect.java
@@ -0,0 +1,11 @@
+package com.otaliastudios.cameraview.filters;
+
+import com.otaliastudios.cameraview.filters.Filter;
+
+public class NoFilterEffect extends Filter {
+
+ @Override
+ public String getFragmentShader() {
+ return mFragmentShader;
+ }
+}
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/PosterizeEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeEffect.java
similarity index 79%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/PosterizeEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeEffect.java
index 4fd90b96..f4920f75 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/PosterizeEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Applies Posterization effect to Preview.
*/
-public class PosterizeEffect extends BaseShaderEffect {
+public class PosterizeEffect extends Filter {
/**
* Initialize Effect
*/
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationEffect.java
similarity index 92%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationEffect.java
index bbb14f0d..65a03f40 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Adjusts color saturation of preview.
*/
-public class SaturationEffect extends BaseShaderEffect {
+public class SaturationEffect extends Filter {
private float scale = 1.0f;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SepiaEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaEffect.java
similarity index 88%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SepiaEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaEffect.java
index 821612c6..83f8c629 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SepiaEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Converts preview to Sepia tone.
*/
-public class SepiaEffect extends BaseShaderEffect {
+public class SepiaEffect extends Filter {
/**
* Initialize Effect
*/
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessEffect.java
similarity index 89%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessEffect.java
index b7cad61a..c5406d73 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessEffect.java
@@ -1,12 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import android.opengl.GLSurfaceView;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Sharpens the preview.
*/
-public class SharpnessEffect extends BaseShaderEffect {
+public class SharpnessEffect extends Filter {
private float scale = 0.5f;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureEffect.java
similarity index 88%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureEffect.java
index fc399767..b068fcee 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureEffect.java
@@ -1,11 +1,11 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Adjusts color temperature of the preview.
*/
-public class TemperatureEffect extends BaseShaderEffect {
+public class TemperatureEffect extends Filter {
private float scale = 0f;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintEffect.java
similarity index 89%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintEffect.java
index 166cd57c..b53a6f48 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintEffect.java
@@ -1,14 +1,14 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
import android.graphics.Color;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Tints the preview with specified color..
*/
-public class TintEffect extends BaseShaderEffect {
+public class TintEffect extends Filter {
private int mTint = 0xFFFF0000;
/**
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteEffect.java
similarity index 90%
rename from cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java
rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteEffect.java
index 844a71fb..f6665558 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteEffect.java
@@ -1,14 +1,12 @@
-package com.otaliastudios.cameraview.shadereffects.effects;
+package com.otaliastudios.cameraview.filters;
-import android.opengl.GLSurfaceView;
-
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
/**
* Applies lomo-camera style effect to your preview.
*/
-public class VignetteEffect extends BaseShaderEffect {
+public class VignetteEffect extends Filter {
private float mScale = 0.85f;
private float mShade = 0.5f;
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/internal/egl/EglViewport.java b/cameraview/src/main/java/com/otaliastudios/cameraview/internal/egl/EglViewport.java
index e0bee9d2..bce47762 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/internal/egl/EglViewport.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/internal/egl/EglViewport.java
@@ -5,8 +5,8 @@ import android.opengl.GLES11Ext;
import android.opengl.GLES20;
import com.otaliastudios.cameraview.CameraLogger;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
-import com.otaliastudios.cameraview.shadereffects.effects.NoFilterEffect;
+import com.otaliastudios.cameraview.filters.Filter;
+import com.otaliastudios.cameraview.filters.NoFilterEffect;
import java.nio.FloatBuffer;
@@ -54,7 +54,7 @@ public class EglViewport extends EglElement {
// private int muTexOffsetLoc; // Used for filtering
// private int muColorAdjustLoc; // Used for filtering
- private BaseShaderEffect mShaderEffect;
+ private Filter mShaderEffect;
private boolean mIsShaderChanged = false;
@@ -111,7 +111,7 @@ public class EglViewport extends EglElement {
return texId;
}
- public void changeShaderEffect(BaseShaderEffect shaderEffect){
+ public void changeShaderEffect(Filter shaderEffect){
this.mShaderEffect = shaderEffect;
mIsShaderChanged = true;
}
diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java
index 494e1f1a..5c4dc72b 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java
@@ -27,7 +27,7 @@ import com.otaliastudios.cameraview.internal.utils.WorkerHandler;
import com.otaliastudios.cameraview.preview.GlCameraPreview;
import com.otaliastudios.cameraview.preview.RendererFrameCallback;
import com.otaliastudios.cameraview.preview.RendererThread;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
+import com.otaliastudios.cameraview.filters.Filter;
import com.otaliastudios.cameraview.size.AspectRatio;
import com.otaliastudios.cameraview.size.Size;
@@ -100,7 +100,7 @@ public class SnapshotGlPictureRecorder extends PictureRecorder {
@RendererThread
@Override
- public void onRendererFrame(@NonNull SurfaceTexture surfaceTexture, final float scaleX, final float scaleY, BaseShaderEffect shaderEffect) {
+ public void onRendererFrame(@NonNull SurfaceTexture surfaceTexture, final float scaleX, final float scaleY, Filter shaderEffect) {
mPreview.removeRendererFrameCallback(this);
// This kinda work but has drawbacks:
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 badfae13..178bdba0 100644
--- a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java
+++ b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java
@@ -15,8 +15,8 @@ import android.view.ViewGroup;
import com.otaliastudios.cameraview.R;
import com.otaliastudios.cameraview.internal.egl.EglViewport;
import com.otaliastudios.cameraview.internal.utils.Op;
-import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
-import com.otaliastudios.cameraview.shadereffects.effects.NoFilterEffect;
+import com.otaliastudios.cameraview.filters.Filter;
+import com.otaliastudios.cameraview.filters.NoFilterEffect;
import com.otaliastudios.cameraview.size.AspectRatio;
import java.util.Collections;
@@ -70,7 +70,7 @@ public class GlCameraPreview extends CameraPreview