Skip to content

Commit 9bfe4d0

Browse files
author
Patrick Boos
committed
Refactor mIsInitialized out into the GPUImageFilter class
1 parent 42d3f05 commit 9bfe4d0

10 files changed

Lines changed: 75 additions & 58 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
#OSX
22
.DS_Store
33
target/
4+
5+
.idea/
6+
*.iml

library/src/jp/co/cyberagent/android/gpuimage/GPUImage.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@
1616

1717
package jp.co.cyberagent.android.gpuimage;
1818

19-
import java.io.File;
20-
import java.io.FileNotFoundException;
21-
import java.io.FileOutputStream;
22-
import java.io.IOException;
23-
import java.util.List;
24-
import java.util.concurrent.Semaphore;
25-
26-
import jp.co.cyberagent.android.gpuimage.GPUImageRenderer.Rotation;
2719
import android.annotation.TargetApi;
2820
import android.app.ActivityManager;
2921
import android.content.Context;
@@ -45,6 +37,14 @@
4537
import android.provider.MediaStore;
4638
import android.view.Display;
4739
import android.view.WindowManager;
40+
import jp.co.cyberagent.android.gpuimage.GPUImageRenderer.Rotation;
41+
42+
import java.io.File;
43+
import java.io.FileNotFoundException;
44+
import java.io.FileOutputStream;
45+
import java.io.IOException;
46+
import java.util.List;
47+
import java.util.concurrent.Semaphore;
4848

4949
/**
5050
* The main accessor for GPUImage functionality. This class helps to do common
@@ -239,7 +239,7 @@ public Bitmap getBitmapWithFilterApplied(final Bitmap bitmap) {
239239

240240
@Override
241241
public void run() {
242-
mFilter.onDestroy();
242+
mFilter.destroy();
243243
lock.release();
244244
}
245245
});
@@ -259,7 +259,7 @@ public void run() {
259259
buffer.setRenderer(renderer);
260260
renderer.setImageBitmap(bitmap, false);
261261
Bitmap result = buffer.getBitmap();
262-
mFilter.onDestroy();
262+
mFilter.destroy();
263263
renderer.deleteImage();
264264
buffer.destroy();
265265

@@ -296,7 +296,7 @@ public static void getBitmapForMultipleFilters(final Bitmap bitmap,
296296
for (GPUImageFilter filter : filters) {
297297
renderer.setFilter(filter);
298298
listener.response(buffer.getBitmap());
299-
filter.onDestroy();
299+
filter.destroy();
300300
}
301301
renderer.deleteImage();
302302
buffer.destroy();

library/src/jp/co/cyberagent/android/gpuimage/GPUImageBrightnessFilter.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public class GPUImageBrightnessFilter extends GPUImageFilter {
3737

3838
private int mBrightnessLocation;
3939
private float mBrightness;
40-
private boolean mIsInitialized = false;
4140

4241
public GPUImageBrightnessFilter() {
4342
this(0.0f);
@@ -52,14 +51,16 @@ public GPUImageBrightnessFilter(final float brightness) {
5251
public void onInit() {
5352
super.onInit();
5453
mBrightnessLocation = GLES20.glGetUniformLocation(getProgram(), "brightness");
55-
mIsInitialized = true;
54+
}
55+
56+
@Override
57+
public void onInitialized() {
58+
super.onInitialized();
5659
setBrightness(mBrightness);
5760
}
5861

5962
public void setBrightness(final float brightness) {
6063
mBrightness = brightness;
61-
if (mIsInitialized) {
62-
setFloat(mBrightnessLocation, mBrightness);
63-
}
64+
setFloat(mBrightnessLocation, mBrightness);
6465
}
6566
}

library/src/jp/co/cyberagent/android/gpuimage/GPUImageColorMatrixFilter.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public class GPUImageColorMatrixFilter extends GPUImageFilter {
4242
private float[] mColorMatrix;
4343
private int mColorMatrixLocation;
4444
private int mIntensityLocation;
45-
private boolean mIsInitialized = false;
4645

4746
public GPUImageColorMatrixFilter() {
4847
this(1.0f, new float[] {
@@ -64,22 +63,22 @@ public void onInit() {
6463
super.onInit();
6564
mColorMatrixLocation = GLES20.glGetUniformLocation(getProgram(), "colorMatrix");
6665
mIntensityLocation = GLES20.glGetUniformLocation(getProgram(), "intensity");
67-
mIsInitialized = true;
66+
}
67+
68+
@Override
69+
public void onInitialized() {
70+
super.onInitialized();
6871
setIntensity(mIntensity);
6972
setColorMatrix(mColorMatrix);
7073
}
7174

7275
public void setIntensity(final float intensity) {
7376
mIntensity = intensity;
74-
if (mIsInitialized) {
75-
setFloat(mIntensityLocation, intensity);
76-
}
77+
setFloat(mIntensityLocation, intensity);
7778
}
7879

7980
public void setColorMatrix(final float[] colorMatrix) {
8081
mColorMatrix = colorMatrix;
81-
if (mIsInitialized) {
82-
setUniformMatrix4f(mColorMatrixLocation, colorMatrix);
83-
}
82+
setUniformMatrix4f(mColorMatrixLocation, colorMatrix);
8483
}
8584
}

library/src/jp/co/cyberagent/android/gpuimage/GPUImageContrastFilter.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class GPUImageContrastFilter extends GPUImageFilter {
3939

4040
private int mContrastLocation;
4141
private float mContrast;
42-
private boolean mIsInitialized = false;
4342

4443
public GPUImageContrastFilter() {
4544
this(1.2f);
@@ -54,14 +53,16 @@ public GPUImageContrastFilter(float contrast) {
5453
public void onInit() {
5554
super.onInit();
5655
mContrastLocation = GLES20.glGetUniformLocation(getProgram(), "contrast");
57-
mIsInitialized = true;
56+
}
57+
58+
@Override
59+
public void onInitialized() {
60+
super.onInitialized();
5861
setContrast(mContrast);
5962
}
6063

6164
public void setContrast(final float contrast) {
6265
mContrast = contrast;
63-
if (mIsInitialized) {
64-
setFloat(mContrastLocation, mContrast);
65-
}
66+
setFloat(mContrastLocation, mContrast);
6667
}
6768
}

library/src/jp/co/cyberagent/android/gpuimage/GPUImageFilter.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
package jp.co.cyberagent.android.gpuimage;
1818

19+
import android.opengl.GLES20;
20+
1921
import java.nio.FloatBuffer;
2022
import java.util.LinkedList;
2123

22-
import android.opengl.GLES20;
23-
2424
public class GPUImageFilter {
2525
public static final String NO_FILTER_VERTEX_SHADER = "" +
2626
"attribute vec4 position;\n" +
@@ -64,13 +64,26 @@ public GPUImageFilter(final String vertexShader, final String fragmentShader) {
6464
mFragmentShader = fragmentShader;
6565
}
6666

67+
public final void init() {
68+
onInit();
69+
mIsInitialized = true;
70+
onInitialized();
71+
}
72+
6773
public void onInit() {
6874
mGLProgId = OpenGlUtils.loadProgram(mVertexShader, mFragmentShader);
6975
mGLAttribPosition = GLES20.glGetAttribLocation(mGLProgId, "position");
7076
mGLUniformTexture = GLES20.glGetUniformLocation(mGLProgId, "inputImageTexture");
7177
mGLAttribTextureCoordinate = GLES20.glGetAttribLocation(mGLProgId,
7278
"inputTextureCoordinate");
73-
mIsInitialized = true;
79+
}
80+
81+
public void onInitialized() {
82+
}
83+
84+
public final void destroy() {
85+
mIsInitialized = false;
86+
onDestroy();
7487
}
7588

7689
public void onDestroy() {

library/src/jp/co/cyberagent/android/gpuimage/GPUImageFilterGroup.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616

1717
package jp.co.cyberagent.android.gpuimage;
1818

19-
import static jp.co.cyberagent.android.gpuimage.GPUImageRenderer.CUBE;
20-
import static jp.co.cyberagent.android.gpuimage.GPUImageRenderer.TEXTURE_NO_ROTATION;
19+
import android.opengl.GLES20;
2120

2221
import java.nio.ByteBuffer;
2322
import java.nio.ByteOrder;
2423
import java.nio.FloatBuffer;
2524
import java.util.List;
2625

27-
import android.opengl.GLES20;
26+
import static jp.co.cyberagent.android.gpuimage.GPUImageRenderer.CUBE;
27+
import static jp.co.cyberagent.android.gpuimage.GPUImageRenderer.TEXTURE_NO_ROTATION;
2828

2929
/**
3030
* Resembles a filter that consists of multiple filters applied after each
@@ -65,7 +65,7 @@ public GPUImageFilterGroup(final List<GPUImageFilter> filters) {
6565
public void onInit() {
6666
super.onInit();
6767
for (GPUImageFilter filter : mFilters) {
68-
filter.onInit();
68+
filter.init();
6969
}
7070
}
7171

@@ -77,7 +77,7 @@ public void onInit() {
7777
public void onDestroy() {
7878
destroyFramebuffers();
7979
for (GPUImageFilter filter : mFilters) {
80-
filter.onDestroy();
80+
filter.destroy();
8181
}
8282
super.onDestroy();
8383
}

library/src/jp/co/cyberagent/android/gpuimage/GPUImageGammaFilter.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public class GPUImageGammaFilter extends GPUImageFilter {
3737

3838
private int mGammaLocation;
3939
private float mGamma;
40-
private boolean mIsInitialized = false;
4140

4241
public GPUImageGammaFilter() {
4342
this(1.2f);
@@ -52,14 +51,16 @@ public GPUImageGammaFilter(final float gamma) {
5251
public void onInit() {
5352
super.onInit();
5453
mGammaLocation = GLES20.glGetUniformLocation(getProgram(), "gamma");
55-
mIsInitialized = true;
54+
}
55+
56+
@Override
57+
public void onInitialized() {
58+
super.onInitialized();
5659
setGamma(mGamma);
5760
}
5861

5962
public void setGamma(final float gamma) {
6063
mGamma = gamma;
61-
if (mIsInitialized) {
62-
setFloat(mGammaLocation, mGamma);
63-
}
64+
setFloat(mGammaLocation, mGamma);
6465
}
6566
}

library/src/jp/co/cyberagent/android/gpuimage/GPUImageRenderer.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,6 @@
1616

1717
package jp.co.cyberagent.android.gpuimage;
1818

19-
import java.io.IOException;
20-
import java.nio.ByteBuffer;
21-
import java.nio.ByteOrder;
22-
import java.nio.FloatBuffer;
23-
import java.nio.IntBuffer;
24-
import java.util.LinkedList;
25-
import java.util.Queue;
26-
27-
import javax.microedition.khronos.egl.EGLConfig;
28-
import javax.microedition.khronos.opengles.GL10;
29-
3019
import android.annotation.TargetApi;
3120
import android.graphics.Bitmap;
3221
import android.graphics.Canvas;
@@ -37,6 +26,16 @@
3726
import android.opengl.GLES20;
3827
import android.opengl.GLSurfaceView.Renderer;
3928

29+
import javax.microedition.khronos.egl.EGLConfig;
30+
import javax.microedition.khronos.opengles.GL10;
31+
import java.io.IOException;
32+
import java.nio.ByteBuffer;
33+
import java.nio.ByteOrder;
34+
import java.nio.FloatBuffer;
35+
import java.nio.IntBuffer;
36+
import java.util.LinkedList;
37+
import java.util.Queue;
38+
4039
@TargetApi(11)
4140
public class GPUImageRenderer implements Renderer, PreviewCallback {
4241
public static final int NO_IMAGE = -1;
@@ -111,7 +110,7 @@ public GPUImageRenderer(final GPUImageFilter filter) {
111110
public void onSurfaceCreated(final GL10 unused, final EGLConfig config) {
112111
GLES20.glClearColor(0, 0, 0, 1);
113112
GLES20.glDisable(GLES20.GL_DEPTH_TEST);
114-
mFilter.onInit();
113+
mFilter.init();
115114
}
116115

117116
@Override
@@ -188,9 +187,9 @@ public void run() {
188187
final GPUImageFilter oldFilter = mFilter;
189188
mFilter = filter;
190189
if (oldFilter != null) {
191-
oldFilter.onDestroy();
190+
oldFilter.destroy();
192191
}
193-
mFilter.onInit();
192+
mFilter.init();
194193
GLES20.glUseProgram(mFilter.getProgram());
195194
mFilter.onOutputSizeChanged(mOutputWidth, mOutputHeight);
196195
}

sample/project.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212

1313
# Project target.
1414
target=android-16
15-
android.library.reference.1=../library
16-
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
15+
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
16+
android.library.reference.1=../library

0 commit comments

Comments
 (0)