refatored code

pull/527/head
Suneet Agrawal 6 years ago
parent 92a82c4f04
commit 6f8b3e2297
  1. 19
      cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java
  2. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/internal/egl/EglViewport.java
  3. 104
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/BaseShaderEffect.java
  4. 20
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/ShaderInterface.java
  5. 11
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/AutoFixEffect.java
  6. 12
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BlackAndWhiteEffect.java
  7. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/BrightnessEffect.java
  8. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/ContrastEffect.java
  9. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/CrossProcessEffect.java
  10. 15
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DocumentaryEffect.java
  11. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/DuotoneEffect.java
  12. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/FillLightEffect.java
  13. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GammaEffect.java
  14. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GrainEffect.java
  15. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/GreyScaleEffect.java
  16. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/HueEffect.java
  17. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/InvertColorsEffect.java
  18. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/LamoishEffect.java
  19. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/NoEffect.java
  20. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/PosterizeEffect.java
  21. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SaturationEffect.java
  22. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SepiaEffect.java
  23. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/SharpnessEffect.java
  24. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TemperatureEffect.java
  25. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/TintEffect.java
  26. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/shadereffects/effects/VignetteEffect.java

@ -19,6 +19,7 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.location.Location;
import android.media.MediaActionSound;
import android.opengl.GLSurfaceView;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
@ -68,7 +69,7 @@ import com.otaliastudios.cameraview.preview.CameraPreview;
import com.otaliastudios.cameraview.preview.GlCameraPreview;
import com.otaliastudios.cameraview.preview.SurfaceCameraPreview;
import com.otaliastudios.cameraview.preview.TextureCameraPreview;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
import com.otaliastudios.cameraview.shadereffects.effects.BlackAndWhiteEffect;
import com.otaliastudios.cameraview.size.AspectRatio;
import com.otaliastudios.cameraview.size.Size;
@ -579,7 +580,8 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
if( MotionEvent.ACTION_UP == event.getAction()) {
Log.d("Suneet Agrawal", "onTouchEvent " + event.getAction());
changeEffect(new BlackAndWhiteEffect());
BlackAndWhiteEffect effect = new BlackAndWhiteEffect();
changeEffect(effect);
}
return true;
@ -2142,9 +2144,18 @@ public class CameraView extends FrameLayout implements LifecycleObserver {
//region Effects
public void changeEffect(ShaderInterface shader) {
public GLSurfaceView getCurrentPreviewingGlSurfaceView(){
if (mCameraPreview instanceof GlCameraPreview) {
String effect = shader.getShader(((GlCameraPreview) mCameraPreview).getView());
return ((GlCameraPreview) mCameraPreview).getView();
}
LOG.w("getCurrentPreviewingGlSurfaceView", "current preview is not GLSurfaceView");
return null;
}
public void changeEffect(BaseShaderEffect shader) {
if (mCameraPreview instanceof GlCameraPreview) {
String effect = shader.getFragmentShader();
((GlCameraPreview) mCameraPreview).setEffectFragmentShader(effect);
//doInstantiatePreview();

@ -5,8 +5,6 @@ import android.opengl.GLES11Ext;
import android.opengl.GLES20;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.effects.BlackAndWhiteEffect;
import java.nio.FloatBuffer;

@ -0,0 +1,104 @@
package com.otaliastudios.cameraview.shadereffects;
import android.opengl.GLSurfaceView;
/**
* An interface that every effect must implement so that there is a common
* getFragmentShader method that every effect class is force to override
*/
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.
*/
protected GLSurfaceView mGlSurfaceView;
public void setGlSurfaceView(GLSurfaceView glSurfaceView) {
this.mGlSurfaceView = glSurfaceView;
}
public String getPositionVariableName() {
return mPositionVariableName;
}
/**
* Local variable name which were used in the shader code.
* These will be used by openGL program to render these vertex and fragment shader
*/
private String mPositionVariableName = "aPosition";
private String mTextureCoordinateVariableName = "aTextureCoord";
private String mMVPMatrixVariableName = "uMVPMatrix";
private String mTextureMatrixVariableName = "uTexMatrix";
public void setPositionVariableName(String positionVariableName) {
this.mPositionVariableName = positionVariableName;
}
public String getTexttureCoordinateVariableName() {
return mTextureCoordinateVariableName;
}
public void setTexttureCoordinateVariableName(String texttureCoordinateVariableName) {
this.mTextureCoordinateVariableName = texttureCoordinateVariableName;
}
public String getMVPMatrixVariableName() {
return mMVPMatrixVariableName;
}
public void setMVPMatrixVariableName(String mvpMatrixVariableName) {
this.mMVPMatrixVariableName = mvpMatrixVariableName;
}
public String getTextureMatrixVariableName() {
return mTextureMatrixVariableName;
}
public void setTextureMatrixVariableName(String textureMatrixVariableName) {
this.mTextureMatrixVariableName = textureMatrixVariableName;
}
/**
* Get vertex Shader code
*
* @return complete shader code in C
* <p>
* This is the default implementation, each effect can implement its own.
*/
public String getVertextShader() {
return "uniform mat4 uMVPMatrix;\n" +
"uniform mat4 uTexMatrix;\n" +
"attribute vec4 aPosition;\n" +
"attribute vec4 aTextureCoord;\n" +
"varying vec2 vTextureCoord;\n" +
"void main() {\n" +
" gl_Position = uMVPMatrix * aPosition;\n" +
" vTextureCoord = (uTexMatrix * aTextureCoord).xy;\n" +
"}\n";
}
/**
* Get fragment Shader code
*
* @return complete shader code in C
*/
public abstract String getFragmentShader();
}

@ -1,20 +0,0 @@
package com.otaliastudios.cameraview.shadereffects;
import android.opengl.GLSurfaceView;
/**
* An interface that every effect must implement so that there is a common
* getShader method that every effect class is force to override
*/
public interface ShaderInterface {
/**
* Returns Shader code
*
* @param mGlSurfaceView
* send this for every shader but this will only be used when the
* shader needs it.
* @return complete shader code in C
*/
public String getShader(GLSurfaceView mGlSurfaceView);
}

@ -1,13 +1,14 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Attempts to auto-fix the preview based on histogram equalization.
*/
public class AutoFixEffect implements ShaderInterface {
public class AutoFixEffect extends BaseShaderEffect {
private float scale;
/**
@ -26,7 +27,7 @@ public class AutoFixEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,21 +1,21 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Converts the preview into black and white colors
*/
public class BlackAndWhiteEffect implements ShaderInterface {
public class BlackAndWhiteEffect extends BaseShaderEffect {
/**
* Initialize Effect
* Initialize effect
*/
public BlackAndWhiteEffect(){
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Adjusts the brightness of the preview.
*/
public class BrightnessEffect implements ShaderInterface {
public class BrightnessEffect extends BaseShaderEffect {
private float brightnessValue;
/**
@ -25,7 +23,7 @@ public class BrightnessEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,12 +1,10 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Adjusts the contrast of the preview.
*/
public class ContrastEffect implements ShaderInterface {
public class ContrastEffect extends BaseShaderEffect {
private float contrast;
/**
@ -24,7 +22,7 @@ public class ContrastEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,14 +1,12 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Applies a cross process effect on preview, in which the red and green channels
* are enhanced while the blue channel is restricted.
*/
public class CrossProcessEffect implements ShaderInterface {
public class CrossProcessEffect extends BaseShaderEffect {
/**
* Initialize Effect
@ -17,7 +15,7 @@ public class CrossProcessEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -2,7 +2,7 @@ package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
import java.util.Date;
import java.util.Random;
@ -10,22 +10,13 @@ import java.util.Random;
/**
* Applies black and white documentary style effect on preview.
*/
public class DocumentaryEffect implements ShaderInterface {
public class DocumentaryEffect extends BaseShaderEffect {
private int mWidth;
private int mHeight;
private Random mRandom;
/**
* Initialize Effect
*/
public DocumentaryEffect() {
}
/**
* Init all values that will be used by this shader.
*
* @param mGlSurfaceView which is responsible for displaying your video
*/
private void initValues(GLSurfaceView mGlSurfaceView) {
mWidth = mGlSurfaceView.getWidth();
@ -34,7 +25,7 @@ public class DocumentaryEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
initValues(mGlSurfaceView);
float scale[] = new float[2];
if (mWidth > mHeight) {

@ -1,14 +1,13 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.graphics.Color;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Representation of preview using only two color tones.
*/
public class DuotoneEffect implements ShaderInterface {
public class DuotoneEffect extends BaseShaderEffect {
// Default values
private int mFirstColor = Color.MAGENTA;
private int mSecondColor = Color.YELLOW;
@ -27,7 +26,7 @@ public class DuotoneEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
float first[] = {Color.red(mFirstColor) / 255f,
Color.green(mFirstColor) / 255f, Color.blue(mFirstColor) / 255f};
float second[] = {Color.red(mSecondColor) / 255f,

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Applies back-light filling to the preview.
*/
public class FillLightEffect implements ShaderInterface {
public class FillLightEffect extends BaseShaderEffect {
private float strength = 0f;
/**
@ -25,7 +23,7 @@ public class FillLightEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
float fade_gamma = 0.3f;
float amt = 1.0f - strength;
float mult = 1.0f / (amt * 0.7f + 0.3f);

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Apply Gamma Effect on preview being played
*/
public class GammaEffect implements ShaderInterface {
public class GammaEffect extends BaseShaderEffect {
private float gammaValue;
/**
@ -25,7 +23,7 @@ public class GammaEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -2,7 +2,7 @@ package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
import java.util.Date;
import java.util.Random;
@ -10,7 +10,7 @@ import java.util.Random;
/**
* Applies film grain effect to preview.
*/
public class GrainEffect implements ShaderInterface {
public class GrainEffect extends BaseShaderEffect {
private int mWidth;
private int mHeight;
private float strength;
@ -42,7 +42,7 @@ public class GrainEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
initValues(mGlSurfaceView);
float seed[] = {mRandom.nextFloat(), mRandom.nextFloat()};

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Converts preview to GreyScale.
*/
public class GreyScaleEffect implements ShaderInterface {
public class GreyScaleEffect extends BaseShaderEffect {
/**
* Initialize Effect
*/
@ -15,7 +13,7 @@ public class GreyScaleEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Apply Hue effect on the preview
*/
public class HueEffect implements ShaderInterface {
public class HueEffect extends BaseShaderEffect {
float hueValue;
/**
@ -24,7 +22,7 @@ public class HueEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Inverts the preview colors. This can also be known as negative Effect.
*/
public class InvertColorsEffect implements ShaderInterface {
public class InvertColorsEffect extends BaseShaderEffect {
/**
* Initialize Effect
*/
@ -15,7 +13,7 @@ public class InvertColorsEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -2,7 +2,7 @@ package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
import java.util.Date;
import java.util.Random;
@ -10,7 +10,7 @@ import java.util.Random;
/**
* Applies lomo-camera style effect to preview.
*/
public class LamoishEffect implements ShaderInterface {
public class LamoishEffect extends BaseShaderEffect {
private int mWidth;
private int mHeight;
private Random mRandom;
@ -34,7 +34,7 @@ public class LamoishEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
initValues(mGlSurfaceView);
float scale[] = new float[2];
if (mWidth > mHeight) {

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Displays the normal preview without any effect.
*/
public class NoEffect implements ShaderInterface {
public class NoEffect extends BaseShaderEffect {
/**
* Initialize
*/
@ -15,7 +13,7 @@ public class NoEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Applies Posterization effect to Preview.
*/
public class PosterizeEffect implements ShaderInterface {
public class PosterizeEffect extends BaseShaderEffect {
/**
* Initialize Effect
*/
@ -15,7 +13,7 @@ public class PosterizeEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String shader = "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Adjusts color saturation of preview.
*/
public class SaturationEffect implements ShaderInterface {
public class SaturationEffect extends BaseShaderEffect {
private float scale = 0f;
/**
@ -22,7 +20,7 @@ public class SaturationEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
float shift = 1.0f / 255.0f;
float weights[] = {2f / 8f, 5f / 8f, 1f / 8f};
float exponents[] = new float[3];

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Converts preview to Sepia tone.
*/
public class SepiaEffect implements ShaderInterface {
public class SepiaEffect extends BaseShaderEffect {
/**
* Initialize Effect
*/
@ -15,7 +13,7 @@ public class SepiaEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
float weights[] = {805.0f / 2048.0f, 715.0f / 2048.0f,
557.0f / 2048.0f, 1575.0f / 2048.0f, 1405.0f / 2048.0f,
1097.0f / 2048.0f, 387.0f / 2048.0f, 344.0f / 2048.0f,

@ -1,12 +1,12 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Sharpens the preview.
*/
public class SharpnessEffect implements ShaderInterface {
public class SharpnessEffect extends BaseShaderEffect {
private int mWidth;
private int mHeight;
private float scale = 0f;
@ -36,7 +36,7 @@ public class SharpnessEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
initValues(mGlSurfaceView);
String stepsizeXString = "stepsizeX = " + 1.0f / mWidth + ";\n";

@ -1,13 +1,11 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Adjusts color temperature of the preview.
*/
public class TemperatureEffect implements ShaderInterface {
public class TemperatureEffect extends BaseShaderEffect {
private float scale = 0f;
/**
@ -26,7 +24,7 @@ public class TemperatureEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
String scaleString = "scale = " + (2.0f * scale - 1.0f) + ";\n";

@ -1,15 +1,14 @@
package com.otaliastudios.cameraview.shadereffects.effects;
import android.graphics.Color;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Tints the preview with specified color..
*/
public class TintEffect implements ShaderInterface {
public class TintEffect extends BaseShaderEffect {
private int mTint = 0xFF0000FF;
/**
@ -24,7 +23,7 @@ public class TintEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
float color_ratio[] = {0.21f, 0.71f, 0.07f};
String color_ratioString[] = new String[3];
color_ratioString[0] = "color_ratio[0] = " + color_ratio[0] + ";\n";

@ -2,13 +2,13 @@ package com.otaliastudios.cameraview.shadereffects.effects;
import android.opengl.GLSurfaceView;
import com.otaliastudios.cameraview.shadereffects.ShaderInterface;
import com.otaliastudios.cameraview.shadereffects.BaseShaderEffect;
/**
* Applies lomo-camera style effect to your preview.
*/
public class VignetteEffect implements ShaderInterface {
public class VignetteEffect extends BaseShaderEffect {
private int mWidth = 0;
private int mHeight = 0;
private float mScale = 0f;
@ -39,7 +39,7 @@ public class VignetteEffect implements ShaderInterface {
}
@Override
public String getShader(GLSurfaceView mGlSurfaceView) {
public String getFragmentShader() {
initValues(mGlSurfaceView);
float scale[] = new float[2];
if (mWidth > mHeight) {

Loading…
Cancel
Save