modified all effects

pull/527/head
Suneet Agrawal 6 years ago
parent 2d5ad43e25
commit 28d7c605ba
  1. 9
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
  2. 14
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java
  3. 60
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderEffectFactory.java
  4. 18
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java
  5. 17
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java
  6. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java
  7. 16
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java
  8. 10
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java
  9. 13
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java
  10. 13
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java
  11. 14
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java

@ -9,6 +9,7 @@ import android.content.ContextWrapper;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.PointF; import android.graphics.PointF;
import android.graphics.Rect; import android.graphics.Rect;
import android.location.Location; import android.location.Location;
@ -73,6 +74,11 @@ import com.otaliastudios.cameraview.preview.SurfaceCameraPreview;
import com.otaliastudios.cameraview.preview.TextureCameraPreview; import com.otaliastudios.cameraview.preview.TextureCameraPreview;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect; import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
import com.otaliastudios.cameraview.shadereffects.ShaderEffectFactory; 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.SaturationEffect;
import com.otaliastudios.cameraview.shadereffects.effects.SharpnessEffect; import com.otaliastudios.cameraview.shadereffects.effects.SharpnessEffect;
import com.otaliastudios.cameraview.shadereffects.effects.TemperatureEffect; 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()); Log.d("Suneet Agrawal", "onTouchEvent " + event.getAction());
//BlackAndWhiteEffect effect = new BlackAndWhiteEffect(); //BlackAndWhiteEffect effect = new BlackAndWhiteEffect();
changeEffect(ShaderEffectFactory.ShaderEffects.INVERT_COLOR_EFFECT); changeEffect(ShaderEffectFactory.ShaderEffects.BRIGHTNESS_EFFECT);
} }
return true; return true;
@ -2162,7 +2168,6 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
if (previewingSurfaceView != null) { if (previewingSurfaceView != null) {
BaseShaderEffect shaderEffect = ShaderEffectFactory.getShaderFromFactory(effect, previewingSurfaceView); BaseShaderEffect shaderEffect = ShaderEffectFactory.getShaderFromFactory(effect, previewingSurfaceView);
//((SaturationEffect)shaderEffect).setSaturationValue(1f);
((GlCameraPreview) mCameraPreview).setShaderEffect(shaderEffect); ((GlCameraPreview) mCameraPreview).setShaderEffect(shaderEffect);
} }
} else { } else {

@ -8,20 +8,6 @@ import android.opengl.GLSurfaceView;
*/ */
public abstract class BaseShaderEffect { 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. * Previewing GlSurfaceview.
* This will be used by a few effects. * This will be used by a few effects.

@ -3,6 +3,16 @@ package com.otaliastudios.cameraview.shadereffects;
import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView;
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.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.InvertColorsEffect;
import com.otaliastudios.cameraview.shadereffects.effects.LamoishEffect; import com.otaliastudios.cameraview.shadereffects.effects.LamoishEffect;
import com.otaliastudios.cameraview.shadereffects.effects.NoEffect; import com.otaliastudios.cameraview.shadereffects.effects.NoEffect;
@ -20,6 +30,16 @@ public class ShaderEffectFactory {
NO_EFFECT, NO_EFFECT,
BLACK_AND_WHITE_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, INVERT_COLOR_EFFECT,
LAMOISH_EFFECT, LAMOISH_EFFECT,
POSTERIZE_EFFECT, POSTERIZE_EFFECT,
@ -38,6 +58,46 @@ public class ShaderEffectFactory {
shaderEffect = new BlackAndWhiteEffect(); shaderEffect = new BlackAndWhiteEffect();
break; 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: case INVERT_COLOR_EFFECT:
shaderEffect = new InvertColorsEffect(); shaderEffect = new InvertColorsEffect();
break; break;

@ -6,17 +6,23 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
* Adjusts the brightness of the preview. * Adjusts the brightness of the preview.
*/ */
public class BrightnessEffect extends BaseShaderEffect { public class BrightnessEffect extends BaseShaderEffect {
private float brightnessValue; private float brightnessValue = 2.0f;
/** /**
* Initialize Effect * 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) { public void setBrightnessValue(float brightnessvalue) {
if (brightnessvalue < 0.1f) if (brightnessvalue < 1.0f)
brightnessvalue = 0.1f; brightnessvalue = 1.0f;
if (brightnessvalue > 2.0f) else if (brightnessvalue > 2.0f)
brightnessvalue = 2.0f; brightnessvalue = 2.0f;
this.brightnessValue = brightnessvalue; this.brightnessValue = brightnessvalue;

@ -5,17 +5,22 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
* Adjusts the contrast of the preview. * Adjusts the contrast of the preview.
*/ */
public class ContrastEffect extends BaseShaderEffect { public class ContrastEffect extends BaseShaderEffect {
private float contrast; private float contrast = 2.0f;
/** /**
* Initialize Effect * 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) { public void setContrast(float contrast){
if (contrast < 0.1f) if (contrast < 1.0f)
contrast = 0.1f; contrast = 1.0f;
if (contrast > 2.0f) else if (contrast > 2.0f)
contrast = 2.0f; contrast = 2.0f;
this.contrast = contrast; this.contrast = contrast;

@ -15,6 +15,10 @@ public class DocumentaryEffect extends BaseShaderEffect {
private int mHeight; private int mHeight;
private Random mRandom; private Random mRandom;
public DocumentaryEffect(GLSurfaceView glSurfaceView) {
this.mGlSurfaceView = glSurfaceView;
}
/** /**
* Init all values that will be used by this shader. * Init all values that will be used by this shader.
*/ */

@ -14,15 +14,21 @@ public class DuotoneEffect extends BaseShaderEffect {
/** /**
* Initialize effect * Initialize effect
*/
public DuotoneEffect() {
}
/**
* setDuoToneColors
* *
* @param mFirstColor Integer, representing an ARGB color with 8 bits per channel. * @param firstColor Integer, representing an ARGB color with 8 bits per channel.
* May be created using Color class. * May be created using Color class.
* @param mSecondColor Integer, representing an ARGB color with 8 bits per channel. * @param secondColor Integer, representing an ARGB color with 8 bits per channel.
* May be created using Color class. * May be created using Color class.
*/ */
public DuotoneEffect(int mFirstColor, int mSecondColor) { public void setDuoToneColors(int firstColor, int secondColor) {
this.mFirstColor = mFirstColor; this.mFirstColor = firstColor;
this.mSecondColor = mSecondColor; this.mSecondColor = secondColor;
} }
@Override @Override

@ -10,13 +10,19 @@ public class FillLightEffect extends BaseShaderEffect {
/** /**
* Initialize Effect * Initialize Effect
*/
public FillLightEffect() {
}
/**
* setStrength
* *
* @param strength Float, between 0 and 1. 0 means no change. * @param strength Float, between 0 and 1. 0 means no change.
*/ */
public FillLightEffect(float strength) { public void setStrength(float strength){
if (strength < 0.0f) if (strength < 0.0f)
strength = 0f; strength = 0f;
if (strength > 1.0f) else if (strength > 1.0f)
strength = 1f; strength = 1f;
this.strength = strength; this.strength = strength;

@ -6,20 +6,25 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
* Apply Gamma Effect on preview being played * Apply Gamma Effect on preview being played
*/ */
public class GammaEffect extends BaseShaderEffect { public class GammaEffect extends BaseShaderEffect {
private float gammaValue; private float gammaValue = 2.0f;
/** /**
* Initialize Effect * Initialize Effect
*/
public GammaEffect() {
}
/**
* setGammaValue
* *
* @param gammaValue Range should be between 0.0 - 2.0 with 1.0 being normal. * @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) if (gammaValue < 0.0f)
gammaValue = 0.0f; gammaValue = 0.0f;
if (gammaValue > 2.0f) else if (gammaValue > 2.0f)
gammaValue = 2.0f; gammaValue = 2.0f;
this.gammaValue = gammaValue; this.gammaValue = gammaValue;
} }
@Override @Override

@ -13,19 +13,26 @@ import java.util.Random;
public class GrainEffect extends BaseShaderEffect { public class GrainEffect extends BaseShaderEffect {
private int mWidth; private int mWidth;
private int mHeight; private int mHeight;
private float strength; private float strength = 0.5f;
private Random mRandom; private Random mRandom;
/** /**
* Initialize Effect * Initialize Effect
*/
public GrainEffect(GLSurfaceView glSurfaceView) {
this.mGlSurfaceView = glSurfaceView;
}
/**
* setDistortionStrength
* *
* @param strength Float, between 0 and 1. Zero means no distortion, while 1 * @param strength Float, between 0 and 1. Zero means no distortion, while 1
* indicates the maximum amount of adjustment. * indicates the maximum amount of adjustment.
*/ */
public GrainEffect(float strength) { public void setDistortionStrength(float strength){
if (strength < 0.0f) if (strength < 0.0f)
strength = 0.0f; strength = 0.0f;
if (strength > 1.0f) else if (strength > 1.0f)
strength = 1.0f; strength = 1.0f;
this.strength = strength; this.strength = strength;
} }

@ -6,19 +6,21 @@ import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
* Apply Hue effect on the preview * Apply Hue effect on the preview
*/ */
public class HueEffect extends BaseShaderEffect { public class HueEffect extends BaseShaderEffect {
float hueValue; float hueValue = 0.0f;
/** /**
* Initialize Effect * Initialize Effect
* <p> */
* <img alt="Hue value chart" width="400" height="350" src="https://cloud.githubusercontent.com/assets/2201511/21810115/b99ac22a-d74a-11e6-9f6c-ef74d15c88c7.jpg" > 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 * @param hueDegrees Range of value should be between 0 to 360 degrees as described in the image above
*/ */
public HueEffect(float hueDegrees) { public void setHueDegreeValue(float hueDegrees){
// manipulating input value so that we can map it on 360 degree circle // manipulating input value so that we can map it on 360 degree circle
hueValue = ((hueDegrees - 45) / 45f + 0.5f) * -1; hueValue = ((hueDegrees - 45) / 45f + 0.5f) * -1;
} }
@Override @Override

Loading…
Cancel
Save