modified all effects

pull/527/head
Suneet Agrawal 6 years ago
parent 65f876a2bc
commit 7706c5ea3c
  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. 16
      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.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 {

@ -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.

@ -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;

@ -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;

@ -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;

@ -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.
*/

@ -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.
* @param firstColor 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.
* @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

@ -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;

@ -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

@ -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;
}

@ -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
* <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
*/
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

Loading…
Cancel
Save