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