From f656e489d71cb6795c0262083f2d498bcabad666 Mon Sep 17 00:00:00 2001 From: Suneet Agrawal Date: Fri, 2 Aug 2019 16:18:18 +0530 Subject: [PATCH] modified all filters range to 0.0f-1.0f --- .../shadereffects/ShaderEffectFactory.java | 7 ++++++ .../shadereffects/effects/AutoFixEffect.java | 16 +++++++++---- .../effects/BrightnessEffect.java | 18 ++++++++++---- .../shadereffects/effects/ContrastEffect.java | 20 +++++++++++----- .../shadereffects/effects/DuotoneEffect.java | 8 +++++++ .../effects/FillLightEffect.java | 8 +++++-- .../shadereffects/effects/GammaEffect.java | 17 +++++++++---- .../shadereffects/effects/GrainEffect.java | 6 ++++- .../effects/SaturationEffect.java | 24 +++++++++++++------ .../effects/SharpnessEffect.java | 4 ++++ .../effects/TemperatureEffect.java | 4 ++++ .../shadereffects/effects/TintEffect.java | 4 ++++ .../shadereffects/effects/VignetteEffect.java | 8 +++++++ 13 files changed, 114 insertions(+), 30 deletions(-) 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 da0ab453..d8835c87 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java @@ -2,6 +2,7 @@ package com.otaliastudios.cameraview.shadereffects; import android.opengl.GLSurfaceView; +import com.otaliastudios.cameraview.shadereffects.effects.AutoFixEffect; import com.otaliastudios.cameraview.shadereffects.effects.BlackAndWhiteEffect; import com.otaliastudios.cameraview.shadereffects.effects.BrightnessEffect; import com.otaliastudios.cameraview.shadereffects.effects.ContrastEffect; @@ -29,6 +30,7 @@ public class ShaderEffectFactory { public enum ShaderEffects { NO_EFFECT, + AUTO_FIX_EFFECT, BLACK_AND_WHITE_EFFECT, BRIGHTNESS_EFFECT, CONTRAST_EFFECT, @@ -54,6 +56,11 @@ public class ShaderEffectFactory { public static BaseShaderEffect getShaderFromFactory(ShaderEffects effect, GLSurfaceView glSurfaceView) { BaseShaderEffect shaderEffect; switch (effect) { + + case AUTO_FIX_EFFECT: + shaderEffect = new AutoFixEffect(); + break; + case BLACK_AND_WHITE_EFFECT: shaderEffect = new BlackAndWhiteEffect(); break; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java index 42afb1e9..1cde31ad 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java @@ -7,20 +7,26 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; */ public class AutoFixEffect extends BaseShaderEffect { + private float scale = 1.0f; + /** + * Initialize Effect + */ + public AutoFixEffect() { + } - private float scale; + public float getScale() { + return scale; + } /** - * Initialize Effect - * * @param scale Float, between 0 and 1. Zero means no adjustment, while 1 * indicates the maximum amount of adjustment. */ - public AutoFixEffect(float scale) { + public void setScale(float scale) { if (scale < 0.0f) scale = 0.0f; - if (scale > 1.0f) + else if (scale > 1.0f) scale = 1.0f; this.scale = scale; 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 81af0618..0f9476c6 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 @@ -17,15 +17,23 @@ public class BrightnessEffect extends BaseShaderEffect { /** * setBrightnessValue * - * @param brightnessvalue Range should be between 1.0- 2.0 with 1.0 being normal. + * @param brightnessvalue Range should be between 0.0- 1.0 with 0.0 being normal. */ public void setBrightnessValue(float brightnessvalue) { - if (brightnessvalue < 1.0f) + if (brightnessvalue < 0.0f) + brightnessvalue = 0.0f; + else if (brightnessvalue > 1.0f) brightnessvalue = 1.0f; - else if (brightnessvalue > 2.0f) - brightnessvalue = 2.0f; - this.brightnessValue = brightnessvalue; + //since the shader excepts a range of 1.0 - 2.0 + // will add the 1.0 to every value + this.brightnessValue = 1.0f + brightnessvalue; + } + + public float getBrightnessValue() { + //since the shader excepts a range of 1.0 - 2.0 + //to keep it between 0.0f - 1.0f range, will subtract the 1.0 to every value + return brightnessValue - 1.0f; } @Override 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 d93222d5..98752936 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 @@ -14,16 +14,24 @@ public class ContrastEffect extends BaseShaderEffect { } /** - * - * @param contrast Range should be between 1.0- 2.0 with 1.0 being normal. + *setContrast + * @param contrast Range should be between 0.0- 1.0 with 0.0 being normal. */ public void setContrast(float contrast){ - if (contrast < 1.0f) + if (contrast < 0.0f) + contrast = 0.0f; + else if (contrast > 1.0f) contrast = 1.0f; - else if (contrast > 2.0f) - contrast = 2.0f; - this.contrast = contrast; + //since the shader excepts a range of 1.0 - 2.0 + //will add the 1.0 to every value + this.contrast = contrast + 1.0f; + } + + public float getContrast() { + //since the shader excepts a range of 1.0 - 2.0 + //to keep it between 0.0f - 1.0f range, will subtract the 1.0 to every value + return contrast - 1.0f; } @Override 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 0350b7d8..3fbc9bbc 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 @@ -31,6 +31,14 @@ public class DuotoneEffect extends BaseShaderEffect { this.mSecondColor = secondColor; } + public int getFirstColor() { + return mFirstColor; + } + + public int getSecondColor() { + return mSecondColor; + } + @Override public String getFragmentShader() { float first[] = {Color.red(mFirstColor) / 255f, 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 d9278e87..30448d8f 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 @@ -6,7 +6,7 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; * Applies back-light filling to the preview. */ public class FillLightEffect extends BaseShaderEffect { - private float strength = 0f; + private float strength = 0.5f; /** * Initialize Effect @@ -17,7 +17,7 @@ public class FillLightEffect extends BaseShaderEffect { /** * setStrength * - * @param strength Float, between 0 and 1. 0 means no change. + * @param strength Float, between 0.0 and 1.0 where 0.0 means no change. */ public void setStrength(float strength){ if (strength < 0.0f) @@ -28,6 +28,10 @@ public class FillLightEffect extends BaseShaderEffect { this.strength = strength; } + public float getStrength() { + return strength; + } + @Override public String getFragmentShader() { float fade_gamma = 0.3f; 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 e62496b2..1a65bd31 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 @@ -17,14 +17,23 @@ public class GammaEffect extends BaseShaderEffect { /** * setGammaValue * - * @param gammaValue Range should be between 0.0 - 2.0 with 1.0 being normal. + * @param gammaValue Range should be between 0.0 - 1.0 with 0.5 being normal. */ public void setGammaValue(float gammaValue){ if (gammaValue < 0.0f) gammaValue = 0.0f; - else if (gammaValue > 2.0f) - gammaValue = 2.0f; - this.gammaValue = gammaValue; + else if (gammaValue > 1.0f) + gammaValue = 1.0f; + + //since the shader excepts a range of 0.0 - 2.0 + //will multiply the 2.0 to every value + this.gammaValue = gammaValue * 2.0f; + } + + public float getGammaValue() { + //since the shader excepts a range of 0.0 - 2.0 + //to keep it between 0.0f - 1.0f range, will divide it with 2.0 + return gammaValue / 2.0f; } @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 506649d7..decb8f19 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 @@ -26,7 +26,7 @@ public class GrainEffect extends BaseShaderEffect { /** * setDistortionStrength * - * @param strength Float, between 0 and 1. Zero means no distortion, while 1 + * @param strength Float, between 0.0f and 1.0. Zero means no distortion, while 1 * indicates the maximum amount of adjustment. */ public void setDistortionStrength(float strength){ @@ -37,6 +37,10 @@ public class GrainEffect extends BaseShaderEffect { this.strength = strength; } + public float getStrength() { + return strength; + } + /** * Init all values that will be used by this shader. * diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java index d4c09d1f..bbb14f0d 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java @@ -6,7 +6,7 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; * Adjusts color saturation of preview. */ public class SaturationEffect extends BaseShaderEffect { - private float scale = 0f; + private float scale = 1.0f; /** * Initialize Effect @@ -15,15 +15,25 @@ public class SaturationEffect extends BaseShaderEffect { } /** - * @param value Float, between -1 and 1. 0 means no change, while -1 indicates - * full desaturated, i.e. grayscale. + * @param value Float, between 0.0 and 1. 0 means no change, while 0.0 indicates + * full desaturated, i.e. grayscale. + * and 1.0 indicates full saturation */ - public void setSaturationValue(float value){ - if (value < -1.0f) - value = -1.0f; + public void setSaturationValue(float value) { + if (value < 0.0f) + value = 0.0f; else if (value > 1.0f) value = 1.0f; - this.scale = value; + + //since the shader excepts a range of -1.0 to 1.0 + //will multiply it by 2.0f and subtract 1.0 to every value + this.scale = (2.0f * value) - 1.0f; + } + + public float getSaturationValue() { + //since the shader excepts a range of -1.0 to 1.0 + //will add 1.0 to every value and divide it by 2.0f + return (scale + 1.0f) / 2.0f; } @Override diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java index c7c32d7e..103fcd3e 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java @@ -30,6 +30,10 @@ public class SharpnessEffect extends BaseShaderEffect { this.scale = value; } + public float getSharpnessValue() { + return scale; + } + /** * Init all values that will be used by this shader. * diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java index effd13c5..fc399767 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java @@ -26,6 +26,10 @@ public class TemperatureEffect extends BaseShaderEffect { this.scale = scale; } + public float getTemperatureScale() { + return scale; + } + @Override public String getFragmentShader() { diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java index 900df065..166cd57c 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java @@ -21,6 +21,10 @@ public class TintEffect extends BaseShaderEffect { this.mTint = color; } + public int getTintColor() { + return mTint; + } + @Override public String getFragmentShader() { float color_ratio[] = {0.21f, 0.71f, 0.07f}; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java index f3c1fe84..9b89b19f 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java @@ -24,6 +24,10 @@ public class VignetteEffect extends BaseShaderEffect { } + /** + * setVignetteEffectScale + * @param scale Float, between 0.0 and 1. 0 + */ public void setVignetteEffectScale(float scale){ if (scale < 0.0f) scale = 0.0f; @@ -32,6 +36,10 @@ public class VignetteEffect extends BaseShaderEffect { this.mScale = scale; } + /** + * setVignetteEffectShade + * @param shade Float, between 0.0 and 1. 0 + */ public void setVignetteEffectShade(float shade){ if (shade < 0.0f) shade = 0.0f;