modified all filters range to 0.0f-1.0f

pull/527/head
Suneet Agrawal 6 years ago
parent 396428f82d
commit f656e489d7
  1. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java
  2. 16
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java
  3. 18
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java
  4. 20
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java
  5. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java
  6. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java
  7. 17
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java
  8. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java
  9. 20
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java
  10. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java
  11. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java
  12. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java
  13. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java

@ -2,6 +2,7 @@ package com.otaliastudios.cameraview.shadereffects;
import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.effects.AutoFixEffect;
import com.otaliastudios.cameraview.shadereffects.effects.BlackAndWhiteEffect; import com.otaliastudios.cameraview.shadereffects.effects.BlackAndWhiteEffect;
import com.otaliastudios.cameraview.shadereffects.effects.BrightnessEffect; import com.otaliastudios.cameraview.shadereffects.effects.BrightnessEffect;
import com.otaliastudios.cameraview.shadereffects.effects.ContrastEffect; import com.otaliastudios.cameraview.shadereffects.effects.ContrastEffect;
@ -29,6 +30,7 @@ public class ShaderEffectFactory {
public enum ShaderEffects { public enum ShaderEffects {
NO_EFFECT, NO_EFFECT,
AUTO_FIX_EFFECT,
BLACK_AND_WHITE_EFFECT, BLACK_AND_WHITE_EFFECT,
BRIGHTNESS_EFFECT, BRIGHTNESS_EFFECT,
CONTRAST_EFFECT, CONTRAST_EFFECT,
@ -54,6 +56,11 @@ public class ShaderEffectFactory {
public static BaseShaderEffect getShaderFromFactory(ShaderEffects effect, GLSurfaceView glSurfaceView) { public static BaseShaderEffect getShaderFromFactory(ShaderEffects effect, GLSurfaceView glSurfaceView) {
BaseShaderEffect shaderEffect; BaseShaderEffect shaderEffect;
switch (effect) { switch (effect) {
case AUTO_FIX_EFFECT:
shaderEffect = new AutoFixEffect();
break;
case BLACK_AND_WHITE_EFFECT: case BLACK_AND_WHITE_EFFECT:
shaderEffect = new BlackAndWhiteEffect(); shaderEffect = new BlackAndWhiteEffect();
break; break;

@ -7,20 +7,26 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
*/ */
public class AutoFixEffect extends 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 * @param scale Float, between 0 and 1. Zero means no adjustment, while 1
* indicates the maximum amount of adjustment. * indicates the maximum amount of adjustment.
*/ */
public AutoFixEffect(float scale) { public void setScale(float scale) {
if (scale < 0.0f) if (scale < 0.0f)
scale = 0.0f; scale = 0.0f;
if (scale > 1.0f) else if (scale > 1.0f)
scale = 1.0f; scale = 1.0f;
this.scale = scale; this.scale = scale;

@ -17,15 +17,23 @@ public class BrightnessEffect extends BaseShaderEffect {
/** /**
* setBrightnessValue * 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) { public void setBrightnessValue(float brightnessvalue) {
if (brightnessvalue < 1.0f) if (brightnessvalue < 0.0f)
brightnessvalue = 0.0f;
else if (brightnessvalue > 1.0f)
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 @Override

@ -14,16 +14,24 @@ public class ContrastEffect extends BaseShaderEffect {
} }
/** /**
* *setContrast
* @param contrast Range should be between 1.0- 2.0 with 1.0 being normal. * @param contrast Range should be between 0.0- 1.0 with 0.0 being normal.
*/ */
public void setContrast(float contrast){ public void setContrast(float contrast){
if (contrast < 1.0f) if (contrast < 0.0f)
contrast = 0.0f;
else if (contrast > 1.0f)
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 @Override

@ -31,6 +31,14 @@ public class DuotoneEffect extends BaseShaderEffect {
this.mSecondColor = secondColor; this.mSecondColor = secondColor;
} }
public int getFirstColor() {
return mFirstColor;
}
public int getSecondColor() {
return mSecondColor;
}
@Override @Override
public String getFragmentShader() { public String getFragmentShader() {
float first[] = {Color.red(mFirstColor) / 255f, float first[] = {Color.red(mFirstColor) / 255f,

@ -6,7 +6,7 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
* Applies back-light filling to the preview. * Applies back-light filling to the preview.
*/ */
public class FillLightEffect extends BaseShaderEffect { public class FillLightEffect extends BaseShaderEffect {
private float strength = 0f; private float strength = 0.5f;
/** /**
* Initialize Effect * Initialize Effect
@ -17,7 +17,7 @@ public class FillLightEffect extends BaseShaderEffect {
/** /**
* setStrength * 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){ public void setStrength(float strength){
if (strength < 0.0f) if (strength < 0.0f)
@ -28,6 +28,10 @@ public class FillLightEffect extends BaseShaderEffect {
this.strength = strength; this.strength = strength;
} }
public float getStrength() {
return strength;
}
@Override @Override
public String getFragmentShader() { public String getFragmentShader() {
float fade_gamma = 0.3f; float fade_gamma = 0.3f;

@ -17,14 +17,23 @@ public class GammaEffect extends BaseShaderEffect {
/** /**
* setGammaValue * 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){ public void setGammaValue(float gammaValue){
if (gammaValue < 0.0f) if (gammaValue < 0.0f)
gammaValue = 0.0f; gammaValue = 0.0f;
else if (gammaValue > 2.0f) else if (gammaValue > 1.0f)
gammaValue = 2.0f; gammaValue = 1.0f;
this.gammaValue = gammaValue;
//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 @Override

@ -26,7 +26,7 @@ public class GrainEffect extends BaseShaderEffect {
/** /**
* setDistortionStrength * 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. * indicates the maximum amount of adjustment.
*/ */
public void setDistortionStrength(float strength){ public void setDistortionStrength(float strength){
@ -37,6 +37,10 @@ public class GrainEffect extends BaseShaderEffect {
this.strength = strength; this.strength = strength;
} }
public float getStrength() {
return strength;
}
/** /**
* Init all values that will be used by this shader. * Init all values that will be used by this shader.
* *

@ -6,7 +6,7 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
* Adjusts color saturation of preview. * Adjusts color saturation of preview.
*/ */
public class SaturationEffect extends BaseShaderEffect { public class SaturationEffect extends BaseShaderEffect {
private float scale = 0f; private float scale = 1.0f;
/** /**
* Initialize Effect * 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 * @param value Float, between 0.0 and 1. 0 means no change, while 0.0 indicates
* full desaturated, i.e. grayscale. * full desaturated, i.e. grayscale.
* and 1.0 indicates full saturation
*/ */
public void setSaturationValue(float value) { public void setSaturationValue(float value) {
if (value < -1.0f) if (value < 0.0f)
value = -1.0f; value = 0.0f;
else if (value > 1.0f) else if (value > 1.0f)
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 @Override

@ -30,6 +30,10 @@ public class SharpnessEffect extends BaseShaderEffect {
this.scale = value; this.scale = value;
} }
public float getSharpnessValue() {
return scale;
}
/** /**
* Init all values that will be used by this shader. * Init all values that will be used by this shader.
* *

@ -26,6 +26,10 @@ public class TemperatureEffect extends BaseShaderEffect {
this.scale = scale; this.scale = scale;
} }
public float getTemperatureScale() {
return scale;
}
@Override @Override
public String getFragmentShader() { public String getFragmentShader() {

@ -21,6 +21,10 @@ public class TintEffect extends BaseShaderEffect {
this.mTint = color; this.mTint = color;
} }
public int getTintColor() {
return mTint;
}
@Override @Override
public String getFragmentShader() { public String getFragmentShader() {
float color_ratio[] = {0.21f, 0.71f, 0.07f}; float color_ratio[] = {0.21f, 0.71f, 0.07f};

@ -24,6 +24,10 @@ public class VignetteEffect extends BaseShaderEffect {
} }
/**
* setVignetteEffectScale
* @param scale Float, between 0.0 and 1. 0
*/
public void setVignetteEffectScale(float scale){ public void setVignetteEffectScale(float scale){
if (scale < 0.0f) if (scale < 0.0f)
scale = 0.0f; scale = 0.0f;
@ -32,6 +36,10 @@ public class VignetteEffect extends BaseShaderEffect {
this.mScale = scale; this.mScale = scale;
} }
/**
* setVignetteEffectShade
* @param shade Float, between 0.0 and 1. 0
*/
public void setVignetteEffectShade(float shade){ public void setVignetteEffectShade(float shade){
if (shade < 0.0f) if (shade < 0.0f)
shade = 0.0f; shade = 0.0f;

Loading…
Cancel
Save