Skip to content

Commit da18ff5

Browse files
committed
Add GPUImageColorInvertFilter implementation
Signed-off-by: Wenwei Cai <stanley.w.cai@gmail.com>
1 parent 9bfe4d0 commit da18ff5

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package jp.co.cyberagent.android.gpuimage;
2+
3+
import android.opengl.GLES20;
4+
5+
/**
6+
* Invert all the colors in the image.
7+
*/
8+
public class GPUImageColorInvertFilter extends GPUImageFilter {
9+
public static final String COLOR_INVERT_FRAGMENT_SHADER = "" +
10+
"varying highp vec2 textureCoordinate;\n" +
11+
"\n" +
12+
"uniform sampler2D inputImageTexture;\n" +
13+
"\n" +
14+
"void main()\n" +
15+
"{\n" +
16+
" lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
17+
" \n" +
18+
" gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w);\n" +
19+
"}";
20+
21+
public GPUImageColorInvertFilter() {
22+
super(NO_FILTER_VERTEX_SHADER, COLOR_INVERT_FRAGMENT_SHADER);
23+
}
24+
}

sample/src/jp/co/cyberagent/android/gpuimage/sample/GPUImageFilterTools.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter;
3434
import jp.co.cyberagent.android.gpuimage.GPUImageSharpenFilter;
3535
import jp.co.cyberagent.android.gpuimage.GPUImageSobelEdgeDetection;
36+
import jp.co.cyberagent.android.gpuimage.GPUImageColorInvertFilter;
3637
import android.app.AlertDialog;
3738
import android.content.Context;
3839
import android.content.DialogInterface;
@@ -42,6 +43,7 @@ public static void showDialog(final Context context,
4243
final OnGpuImageFilterChosenListener listener) {
4344
final FilterList filters = new FilterList();
4445
filters.addFilter("Contrast", FilterType.CONTRAST);
46+
filters.addFilter("Invert", FilterType.INVERT);
4547
filters.addFilter("Gamma", FilterType.GAMMA);
4648
filters.addFilter("Brightness", FilterType.BRIGHTNESS);
4749
filters.addFilter("Sepia", FilterType.SEPIA);
@@ -72,6 +74,8 @@ private static GPUImageFilter createFilterForType(final Context context, final F
7274
return new GPUImageContrastFilter(2.0f);
7375
case GAMMA:
7476
return new GPUImageGammaFilter(2.0f);
77+
case INVERT:
78+
return new GPUImageColorInvertFilter();
7579
case BRIGHTNESS:
7680
return new GPUImageBrightnessFilter(1.5f);
7781
case GRAYSCALE:
@@ -113,7 +117,7 @@ public interface OnGpuImageFilterChosenListener {
113117
}
114118

115119
private enum FilterType {
116-
CONTRAST, GRAYSCALE, SHARPEN, SEPIA, SOBEL_EDGE_DETECTION, THREE_X_THREE_CONVOLUTION, FILTER_GROUP, EMBOSS, POSTERIZE, GAMMA, BRIGHTNESS,
120+
CONTRAST, GRAYSCALE, SHARPEN, SEPIA, SOBEL_EDGE_DETECTION, THREE_X_THREE_CONVOLUTION, FILTER_GROUP, EMBOSS, POSTERIZE, GAMMA, BRIGHTNESS, INVERT,
117121
}
118122

119123
private static class FilterList {

0 commit comments

Comments
 (0)