21
21
import android .content .DialogInterface ;
22
22
import android .graphics .BitmapFactory ;
23
23
import android .graphics .PointF ;
24
+ import android .opengl .Matrix ;
25
+
24
26
import jp .co .cyberagent .android .gpuimage .*;
25
27
26
28
import java .util .LinkedList ;
27
29
import java .util .List ;
28
30
29
- public class GPUImageFilterTools {
31
+ public class GPUImageFilterTools {
30
32
public static void showDialog (final Context context ,
31
33
final OnGpuImageFilterChosenListener listener ) {
32
34
final FilterList filters = new FilterList ();
@@ -109,6 +111,8 @@ public static void showDialog(final Context context,
109
111
110
112
filters . addFilter ("Bilateral Blur" , FilterType .BILATERAL_BLUR );
111
113
114
+ filters .addFilter ("Transform (2-D)" , FilterType .TRANSFORM2D );
115
+
112
116
113
117
AlertDialog .Builder builder = new AlertDialog .Builder (context );
114
118
builder .setTitle ("Choose a filter" );
@@ -174,11 +178,11 @@ private static GPUImageFilter createFilterForType(final Context context, final F
174
178
case MONOCHROME :
175
179
return new GPUImageMonochromeFilter (1.0f , new float []{0.6f , 0.45f , 0.3f , 1.0f });
176
180
case OPACITY :
177
- return new GPUImageOpacityFilter (1.0f );
181
+ return new GPUImageOpacityFilter (1.0f );
178
182
case RGB :
179
- return new GPUImageRGBFilter (1.0f , 1.0f , 1.0f );
183
+ return new GPUImageRGBFilter (1.0f , 1.0f , 1.0f );
180
184
case WHITE_BALANCE :
181
- return new GPUImageWhiteBalanceFilter (5000.0f , 0.0f );
185
+ return new GPUImageWhiteBalanceFilter (5000.0f , 0.0f );
182
186
case VIGNETTE :
183
187
PointF centerPoint = new PointF ();
184
188
centerPoint .x = 0.5f ;
@@ -296,6 +300,9 @@ private static GPUImageFilter createFilterForType(final Context context, final F
296
300
case BILATERAL_BLUR :
297
301
return new GPUImageBilateralFilter ();
298
302
303
+ case TRANSFORM2D :
304
+ return new GPUImageTransformFilter ();
305
+
299
306
default :
300
307
throw new IllegalStateException ("No filter of that type!" );
301
308
}
@@ -323,7 +330,7 @@ private enum FilterType {
323
330
BLEND_DISSOLVE , BLEND_EXCLUSION , BLEND_SOURCE_OVER , BLEND_HARD_LIGHT , BLEND_LIGHTEN , BLEND_ADD , BLEND_DIVIDE , BLEND_MULTIPLY , BLEND_OVERLAY , BLEND_SCREEN , BLEND_ALPHA ,
324
331
BLEND_COLOR , BLEND_HUE , BLEND_SATURATION , BLEND_LUMINOSITY , BLEND_LINEAR_BURN , BLEND_SOFT_LIGHT , BLEND_SUBTRACT , BLEND_CHROMA_KEY , BLEND_NORMAL , LOOKUP_AMATORKA ,
325
332
GAUSSIAN_BLUR , CROSSHATCH , BOX_BLUR , CGA_COLORSPACE , DILATION , KUWAHARA , RGB_DILATION , SKETCH , TOON , SMOOTH_TOON , BULGE_DISTORTION , GLASS_SPHERE , HAZE , LAPLACIAN , NON_MAXIMUM_SUPPRESSION ,
326
- SPHERE_REFRACTION , SWIRL , WEAK_PIXEL_INCLUSION , FALSE_COLOR , COLOR_BALANCE , LEVELS_FILTER_MIN , BILATERAL_BLUR , HALFTONE
333
+ SPHERE_REFRACTION , SWIRL , WEAK_PIXEL_INCLUSION , FALSE_COLOR , COLOR_BALANCE , LEVELS_FILTER_MIN , BILATERAL_BLUR , HALFTONE , TRANSFORM2D
327
334
}
328
335
329
336
private static class FilterList {
@@ -400,6 +407,8 @@ public FilterAdjuster(final GPUImageFilter filter) {
400
407
adjuster = new LevelsMinMidAdjuster ().filter (filter );
401
408
} else if (filter instanceof GPUImageBilateralFilter ) {
402
409
adjuster = new BilateralAdjuster ().filter (filter );
410
+ } else if (filter instanceof GPUImageTransformFilter ) {
411
+ adjuster = new RotateAdjuster ().filter (filter );
403
412
}
404
413
else {
405
414
@@ -525,46 +534,46 @@ public void adjust(final int percentage) {
525
534
getFilter ().setSaturation (range (percentage , 0.0f , 2.0f ));
526
535
}
527
536
}
528
-
537
+
529
538
private class ExposureAdjuster extends Adjuster <GPUImageExposureFilter > {
530
539
@ Override
531
540
public void adjust (final int percentage ) {
532
541
getFilter ().setExposure (range (percentage , -10.0f , 10.0f ));
533
542
}
534
- }
535
-
543
+ }
544
+
536
545
private class HighlightShadowAdjuster extends Adjuster <GPUImageHighlightShadowFilter > {
537
546
@ Override
538
547
public void adjust (final int percentage ) {
539
548
getFilter ().setShadows (range (percentage , 0.0f , 1.0f ));
540
549
getFilter ().setHighlights (range (percentage , 0.0f , 1.0f ));
541
550
}
542
551
}
543
-
552
+
544
553
private class MonochromeAdjuster extends Adjuster <GPUImageMonochromeFilter > {
545
554
@ Override
546
555
public void adjust (final int percentage ) {
547
556
getFilter ().setIntensity (range (percentage , 0.0f , 1.0f ));
548
557
//getFilter().setColor(new float[]{0.6f, 0.45f, 0.3f, 1.0f});
549
558
}
550
559
}
551
-
560
+
552
561
private class OpacityAdjuster extends Adjuster <GPUImageOpacityFilter > {
553
562
@ Override
554
563
public void adjust (final int percentage ) {
555
564
getFilter ().setOpacity (range (percentage , 0.0f , 1.0f ));
556
565
}
557
- }
558
-
566
+ }
567
+
559
568
private class RGBAdjuster extends Adjuster <GPUImageRGBFilter > {
560
569
@ Override
561
570
public void adjust (final int percentage ) {
562
571
getFilter ().setRed (range (percentage , 0.0f , 1.0f ));
563
572
//getFilter().setGreen(range(percentage, 0.0f, 1.0f));
564
573
//getFilter().setBlue(range(percentage, 0.0f, 1.0f));
565
574
}
566
- }
567
-
575
+ }
576
+
568
577
private class WhiteBalanceAdjuster extends Adjuster <GPUImageWhiteBalanceFilter > {
569
578
@ Override
570
579
public void adjust (final int percentage ) {
@@ -653,7 +662,7 @@ public void adjust(int percentage) {
653
662
private class LevelsMinMidAdjuster extends Adjuster <GPUImageLevelsFilter > {
654
663
@ Override
655
664
public void adjust (int percentage ) {
656
- getFilter ().setMin (0.0f , range (percentage , 0.0f , 1.0f ) , 1.0f );
665
+ getFilter ().setMin (0.0f , range (percentage , 0.0f , 1.0f ), 1.0f );
657
666
}
658
667
}
659
668
@@ -664,5 +673,14 @@ public void adjust(final int percentage) {
664
673
}
665
674
}
666
675
676
+ private class RotateAdjuster extends Adjuster <GPUImageTransformFilter > {
677
+ @ Override
678
+ public void adjust (final int percentage ) {
679
+ float [] transform = new float [16 ];
680
+ Matrix .setRotateM (transform , 0 , 360 * percentage / 100 , 0 , 0 , 1.0f );
681
+ getFilter ().setTransform3D (transform );
682
+ }
683
+ }
684
+
667
685
}
668
686
}
0 commit comments