From 7706c5ea3cffe9e2feb1e20279a7be7cc2fea09a Mon Sep 17 00:00:00 2001 From: Suneet Agrawal Date: Mon, 29 Jul 2019 18:08:53 +0530 Subject: [PATCH] modified all effects --- .../otaliastudios/cameraview/CameraView.java | 9 ++- .../shadereffects/BaseShaderEffect.java | 14 ----- .../shadereffects/ShaderEffectFactory.java | 60 +++++++++++++++++++ .../effects/BrightnessEffect.java | 18 ++++-- .../shadereffects/effects/ContrastEffect.java | 17 ++++-- .../effects/DocumentaryEffect.java | 4 ++ .../shadereffects/effects/DuotoneEffect.java | 20 ++++--- .../effects/FillLightEffect.java | 10 +++- .../shadereffects/effects/GammaEffect.java | 13 ++-- .../shadereffects/effects/GrainEffect.java | 13 +++- .../shadereffects/effects/HueEffect.java | 16 ++--- 11 files changed, 143 insertions(+), 51 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index bd36ef32..bdbdf014 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -9,6 +9,7 @@ import android.content.ContextWrapper; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.TypedArray; +import android.graphics.Color; import android.graphics.PointF; import android.graphics.Rect; import android.location.Location; @@ -73,6 +74,11 @@ 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.shadereffects.effects.BrightnessEffect; +import com.otaliastudios.cameraview.shadereffects.effects.ContrastEffect; +import com.otaliastudios.cameraview.shadereffects.effects.DuotoneEffect; +import com.otaliastudios.cameraview.shadereffects.effects.GrainEffect; +import com.otaliastudios.cameraview.shadereffects.effects.HueEffect; import com.otaliastudios.cameraview.shadereffects.effects.SaturationEffect; import com.otaliastudios.cameraview.shadereffects.effects.SharpnessEffect; import com.otaliastudios.cameraview.shadereffects.effects.TemperatureEffect; @@ -584,7 +590,7 @@ public class CameraView extends FrameLayout implements LifecycleObserver { Log.d("Suneet Agrawal", "onTouchEvent " + event.getAction()); //BlackAndWhiteEffect effect = new BlackAndWhiteEffect(); - changeEffect(ShaderEffectFactory.ShaderEffects.INVERT_COLOR_EFFECT); + changeEffect(ShaderEffectFactory.ShaderEffects.BRIGHTNESS_EFFECT); } return true; @@ -2162,7 +2168,6 @@ public class CameraView extends FrameLayout implements LifecycleObserver { if (previewingSurfaceView != null) { BaseShaderEffect shaderEffect = ShaderEffectFactory.getShaderFromFactory(effect, previewingSurfaceView); - //((SaturationEffect)shaderEffect).setSaturationValue(1f); ((GlCameraPreview) mCameraPreview).setShaderEffect(shaderEffect); } } else { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java index 29270b9a..97f05454 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java @@ -8,20 +8,6 @@ import android.opengl.GLSurfaceView; */ public abstract class BaseShaderEffect { - /** - * Empty default constructor - */ - public BaseShaderEffect(){ - } - - /** - * parameterized constructor with previewing GLSurfaceView as parameter - * @param glSurfaceView - */ - public BaseShaderEffect(GLSurfaceView glSurfaceView) { - this.mGlSurfaceView = glSurfaceView; - } - /** * Previewing GlSurfaceview. * This will be used by a few effects. diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java index 73f7019c..c60b7a6c 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java @@ -3,6 +3,16 @@ package com.otaliastudios.cameraview.shadereffects; import android.opengl.GLSurfaceView; import com.otaliastudios.cameraview.shadereffects.effects.BlackAndWhiteEffect; +import com.otaliastudios.cameraview.shadereffects.effects.BrightnessEffect; +import com.otaliastudios.cameraview.shadereffects.effects.ContrastEffect; +import com.otaliastudios.cameraview.shadereffects.effects.CrossProcessEffect; +import com.otaliastudios.cameraview.shadereffects.effects.DocumentaryEffect; +import com.otaliastudios.cameraview.shadereffects.effects.DuotoneEffect; +import com.otaliastudios.cameraview.shadereffects.effects.FillLightEffect; +import com.otaliastudios.cameraview.shadereffects.effects.GammaEffect; +import com.otaliastudios.cameraview.shadereffects.effects.GrainEffect; +import com.otaliastudios.cameraview.shadereffects.effects.GreyScaleEffect; +import com.otaliastudios.cameraview.shadereffects.effects.HueEffect; import com.otaliastudios.cameraview.shadereffects.effects.InvertColorsEffect; import com.otaliastudios.cameraview.shadereffects.effects.LamoishEffect; import com.otaliastudios.cameraview.shadereffects.effects.NoEffect; @@ -20,6 +30,16 @@ public class ShaderEffectFactory { NO_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, @@ -38,6 +58,46 @@ public class ShaderEffectFactory { 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(glSurfaceView); + 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(glSurfaceView); + break; + + case GREY_SCALE_EFFECT: + shaderEffect = new GreyScaleEffect(); + break; + + case HUE_EFFECT: + shaderEffect = new HueEffect(); + break; + case INVERT_COLOR_EFFECT: shaderEffect = new InvertColorsEffect(); break; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java index d684428b..81af0618 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java @@ -6,17 +6,23 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; * Adjusts the brightness of the preview. */ public class BrightnessEffect extends BaseShaderEffect { - private float brightnessValue; + private float brightnessValue = 2.0f; /** * Initialize Effect + */ + public BrightnessEffect() { + } + + /** + * setBrightnessValue * - * @param brightnessvalue Range should be between 0.1- 2.0 with 1.0 being normal. + * @param brightnessvalue Range should be between 1.0- 2.0 with 1.0 being normal. */ - public BrightnessEffect(float brightnessvalue) { - if (brightnessvalue < 0.1f) - brightnessvalue = 0.1f; - if (brightnessvalue > 2.0f) + public void setBrightnessValue(float brightnessvalue) { + if (brightnessvalue < 1.0f) + brightnessvalue = 1.0f; + else if (brightnessvalue > 2.0f) brightnessvalue = 2.0f; this.brightnessValue = brightnessvalue; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java index 103a7955..d93222d5 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java @@ -5,17 +5,22 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; * Adjusts the contrast of the preview. */ public class ContrastEffect extends BaseShaderEffect { - private float contrast; + private float contrast = 2.0f; /** * Initialize Effect + */ + public ContrastEffect() { + } + + /** * - * @param contrast Range should be between 0.1- 2.0 with 1.0 being normal. + * @param contrast Range should be between 1.0- 2.0 with 1.0 being normal. */ - public ContrastEffect(float contrast) { - if (contrast < 0.1f) - contrast = 0.1f; - if (contrast > 2.0f) + public void setContrast(float contrast){ + if (contrast < 1.0f) + contrast = 1.0f; + else if (contrast > 2.0f) contrast = 2.0f; this.contrast = contrast; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java index b03351e7..907a7139 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java @@ -15,6 +15,10 @@ public class DocumentaryEffect extends BaseShaderEffect { private int mHeight; private Random mRandom; + public DocumentaryEffect(GLSurfaceView glSurfaceView) { + this.mGlSurfaceView = glSurfaceView; + } + /** * Init all values that will be used by this shader. */ diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java index 1626121e..0350b7d8 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java @@ -14,15 +14,21 @@ public class DuotoneEffect extends BaseShaderEffect { /** * Initialize effect + */ + public DuotoneEffect() { + } + + /** + * setDuoToneColors * - * @param mFirstColor Integer, representing an ARGB color with 8 bits per channel. - * May be created using Color class. - * @param mSecondColor Integer, representing an ARGB color with 8 bits per channel. - * May be created using Color class. + * @param firstColor Integer, representing an ARGB color with 8 bits per channel. + * May be created using Color class. + * @param secondColor Integer, representing an ARGB color with 8 bits per channel. + * May be created using Color class. */ - public DuotoneEffect(int mFirstColor, int mSecondColor) { - this.mFirstColor = mFirstColor; - this.mSecondColor = mSecondColor; + public void setDuoToneColors(int firstColor, int secondColor) { + this.mFirstColor = firstColor; + this.mSecondColor = secondColor; } @Override diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java index 850674ba..d9278e87 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java @@ -10,13 +10,19 @@ public class FillLightEffect extends BaseShaderEffect { /** * Initialize Effect + */ + public FillLightEffect() { + } + + /** + * setStrength * * @param strength Float, between 0 and 1. 0 means no change. */ - public FillLightEffect(float strength) { + public void setStrength(float strength){ if (strength < 0.0f) strength = 0f; - if (strength > 1.0f) + else if (strength > 1.0f) strength = 1f; this.strength = strength; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java index a60085e4..e62496b2 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java @@ -6,20 +6,25 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; * Apply Gamma Effect on preview being played */ public class GammaEffect extends BaseShaderEffect { - private float gammaValue; + private float gammaValue = 2.0f; /** * Initialize Effect + */ + public GammaEffect() { + } + + /** + * setGammaValue * * @param gammaValue Range should be between 0.0 - 2.0 with 1.0 being normal. */ - public GammaEffect(float gammaValue) { + public void setGammaValue(float gammaValue){ if (gammaValue < 0.0f) gammaValue = 0.0f; - if (gammaValue > 2.0f) + else if (gammaValue > 2.0f) gammaValue = 2.0f; this.gammaValue = gammaValue; - } @Override diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java index bb1efbe1..506649d7 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java @@ -13,19 +13,26 @@ import java.util.Random; public class GrainEffect extends BaseShaderEffect { private int mWidth; private int mHeight; - private float strength; + private float strength = 0.5f; private Random mRandom; /** * Initialize Effect + */ + public GrainEffect(GLSurfaceView glSurfaceView) { + this.mGlSurfaceView = glSurfaceView; + } + + /** + * setDistortionStrength * * @param strength Float, between 0 and 1. Zero means no distortion, while 1 * indicates the maximum amount of adjustment. */ - public GrainEffect(float strength) { + public void setDistortionStrength(float strength){ if (strength < 0.0f) strength = 0.0f; - if (strength > 1.0f) + else if (strength > 1.0f) strength = 1.0f; this.strength = strength; } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java index dbe1e669..824155c7 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java @@ -6,19 +6,21 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; * Apply Hue effect on the preview */ public class HueEffect extends BaseShaderEffect { - float hueValue; + float hueValue = 0.0f; /** * Initialize Effect - *

- * Hue value chart - * + */ + public HueEffect() { + } + + /** + * Hue value chart - https://cloud.githubusercontent.com/assets/2201511/21810115/b99ac22a-d74a-11e6-9f6c-ef74d15c88c7.jpg" > * @param hueDegrees Range of value should be between 0 to 360 degrees as described in the image above */ - public HueEffect(float hueDegrees) { -// manipulating input value so that we can map it on 360 degree circle + public void setHueDegreeValue(float hueDegrees){ + // manipulating input value so that we can map it on 360 degree circle hueValue = ((hueDegrees - 45) / 45f + 0.5f) * -1; - } @Override