Simplify Filters class

pull/535/head
Mattia Iavarone 6 years ago
parent facd26f11d
commit a37bf497c3
  1. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java
  2. 153
      cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java
  3. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java
  4. 90
      demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java

@ -19,14 +19,14 @@ public class DuotoneFilter extends Filter {
} }
/** /**
* setDuoToneColors * setDuotoneColors
* *
* @param firstColor 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. * May be created using Color class.
* @param secondColor 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. * May be created using Color class.
*/ */
public void setDuoToneColors(int firstColor, int secondColor) { public void setDuotoneColors(int firstColor, int secondColor) {
this.mFirstColor = firstColor; this.mFirstColor = firstColor;
this.mSecondColor = secondColor; this.mSecondColor = secondColor;
} }

@ -1,124 +1,45 @@
package com.otaliastudios.cameraview.filters; package com.otaliastudios.cameraview.filters;
public enum Filters { import androidx.annotation.NonNull;
NO_FILTER,
AUTO_FIX_FILTER, public enum Filters {
BLACK_AND_WHITE_FILTER, NONE(NoFilter.class),
BRIGHTNESS_FILTER, AUTO_FIX(AutoFixFilter.class),
CONTRAST_FILTER, BLACK_AND_WHITE(BlackAndWhiteFilter.class),
CROSS_PROCESS_FILTER, BRIGHTNESS(BrightnessFilter.class),
DOCUMENTARY_FILTER, CONTRAST(ContrastFilter.class),
DUO_TONE_COLOR_FILTER, CROSS_PROCESS(CrossProcessFilter.class),
FILL_LIGHT_FILTER, DOCUMENTARY(DocumentaryFilter.class),
GAMMA_FILTER, DUOTONE(DuotoneFilter.class),
GRAIN_FILTER, FILL_LIGHT(FillLightFilter.class),
GREY_SCALE_FILTER, GAMMA(GammaFilter.class),
HUE_FILTER, GRAIN(GrainFilter.class),
INVERT_COLOR_FILTER, GRAYSCALE(GrayscaleFilter.class),
LAMOISH_FILTER, HUE(HueFilter.class),
POSTERIZE_FILTER, INVERT_COLORS(InvertColorsFilter.class),
SATURATION_FILTER, LAMOISH(LamoishFilter.class),
SEPIA_FILTER, POSTERIZE(PosterizeFilter.class),
SHARPNESS_FILTER, SATURATION(SaturationFilter.class),
TEMPERATURE_FILTER, SEPIA(SepiaFilter.class),
TINT_FILTER, SHARPNESS(SharpnessFilter.class),
VIGNETTE_FILTER; TEMPERATURE(TemperatureFilter.class),
TINT(TintFilter.class),
VIGNETTE(VignetteFilter.class);
private Class<? extends Filter> filterClass;
Filters(@NonNull Class<? extends Filter> filterClass) {
this.filterClass = filterClass;
}
@NonNull
public Filter newInstance() { public Filter newInstance() {
Filter shaderEffect; try {
switch (this) { return filterClass.newInstance();
} catch (IllegalAccessException e) {
case AUTO_FIX_FILTER: return new NoFilter();
shaderEffect = new AutoFixFilter(); } catch (InstantiationException e) {
break; return new NoFilter();
case BLACK_AND_WHITE_FILTER:
shaderEffect = new BlackAndWhiteFilter();
break;
case BRIGHTNESS_FILTER:
shaderEffect = new BrightnessFilter();
break;
case CONTRAST_FILTER:
shaderEffect = new ContrastFilter();
break;
case CROSS_PROCESS_FILTER:
shaderEffect = new CrossProcessFilter();
break;
case DOCUMENTARY_FILTER:
shaderEffect = new DocumentaryFilter();
break;
case DUO_TONE_COLOR_FILTER:
shaderEffect = new DuotoneFilter();
break;
case FILL_LIGHT_FILTER:
shaderEffect = new FillLightFilter();
break;
case GAMMA_FILTER:
shaderEffect = new GammaFilter();
break;
case GRAIN_FILTER:
shaderEffect = new GrainFilter();
break;
case GREY_SCALE_FILTER:
shaderEffect = new GreyScaleFilter();
break;
case HUE_FILTER:
shaderEffect = new HueFilter();
break;
case INVERT_COLOR_FILTER:
shaderEffect = new InvertColorsFilter();
break;
case LAMOISH_FILTER:
shaderEffect = new LamoishFilter();
break;
case POSTERIZE_FILTER:
shaderEffect = new PosterizeFilter();
break;
case SATURATION_FILTER:
shaderEffect = new SaturationFilter();
break;
case SEPIA_FILTER:
shaderEffect = new SepiaFilter();
break;
case SHARPNESS_FILTER:
shaderEffect = new SharpnessFilter();
break;
case TEMPERATURE_FILTER:
shaderEffect = new TemperatureFilter();
break;
case TINT_FILTER:
shaderEffect = new TintFilter();
break;
case VIGNETTE_FILTER:
shaderEffect = new VignetteFilter();
break;
case NO_FILTER:
default:
shaderEffect = new NoFilter();
} }
return shaderEffect;
} }
} }

@ -5,11 +5,11 @@ import androidx.annotation.NonNull;
/** /**
* Converts preview to GreyScale. * Converts preview to GreyScale.
*/ */
public class GreyScaleFilter extends Filter { public class GrayscaleFilter extends Filter {
/** /**
* Initialize Effect * Initialize Effect
*/ */
public GreyScaleFilter() { public GrayscaleFilter() {
} }
@NonNull @NonNull

@ -49,7 +49,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
private ViewGroup controlPanel; private ViewGroup controlPanel;
private long mCaptureTime; private long mCaptureTime;
private Filters mCurrentEffect = NO_FILTER; private Filters mCurrentEffect = NONE;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -328,73 +328,73 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
} }
switch (mCurrentEffect){ switch (mCurrentEffect){
case NO_FILTER: case NONE:
mCurrentEffect = AUTO_FIX_FILTER; mCurrentEffect = AUTO_FIX;
break; break;
case AUTO_FIX_FILTER: case AUTO_FIX:
mCurrentEffect = BLACK_AND_WHITE_FILTER; mCurrentEffect = BLACK_AND_WHITE;
break; break;
case BLACK_AND_WHITE_FILTER: case BLACK_AND_WHITE:
mCurrentEffect = BRIGHTNESS_FILTER; mCurrentEffect = BRIGHTNESS;
break; break;
case BRIGHTNESS_FILTER: case BRIGHTNESS:
mCurrentEffect = CONTRAST_FILTER; mCurrentEffect = CONTRAST;
break; break;
case CONTRAST_FILTER: case CONTRAST:
mCurrentEffect = CROSS_PROCESS_FILTER; mCurrentEffect = CROSS_PROCESS;
break; break;
case CROSS_PROCESS_FILTER: case CROSS_PROCESS:
mCurrentEffect = DOCUMENTARY_FILTER; mCurrentEffect = DOCUMENTARY;
break; break;
case DOCUMENTARY_FILTER: case DOCUMENTARY:
mCurrentEffect = DUO_TONE_COLOR_FILTER; mCurrentEffect = DUOTONE;
break; break;
case DUO_TONE_COLOR_FILTER: case DUOTONE:
mCurrentEffect = FILL_LIGHT_FILTER; mCurrentEffect = FILL_LIGHT;
break; break;
case FILL_LIGHT_FILTER: case FILL_LIGHT:
mCurrentEffect = GAMMA_FILTER; mCurrentEffect = GAMMA;
break; break;
case GAMMA_FILTER: case GAMMA:
mCurrentEffect = GRAIN_FILTER; mCurrentEffect = GRAIN;
break; break;
case GRAIN_FILTER: case GRAIN:
mCurrentEffect = GREY_SCALE_FILTER; mCurrentEffect = GRAYSCALE;
break; break;
case GREY_SCALE_FILTER: case GRAYSCALE:
mCurrentEffect = HUE_FILTER; mCurrentEffect = HUE;
break; break;
case HUE_FILTER: case HUE:
mCurrentEffect = INVERT_COLOR_FILTER; mCurrentEffect = INVERT_COLORS;
break; break;
case INVERT_COLOR_FILTER: case INVERT_COLORS:
mCurrentEffect = LAMOISH_FILTER; mCurrentEffect = LAMOISH;
break; break;
case LAMOISH_FILTER: case LAMOISH:
mCurrentEffect = POSTERIZE_FILTER; mCurrentEffect = POSTERIZE;
break; break;
case POSTERIZE_FILTER: case POSTERIZE:
mCurrentEffect = SATURATION_FILTER; mCurrentEffect = SATURATION;
break; break;
case SATURATION_FILTER: case SATURATION:
mCurrentEffect = SEPIA_FILTER; mCurrentEffect = SEPIA;
break; break;
case SEPIA_FILTER: case SEPIA:
mCurrentEffect = SHARPNESS_FILTER; mCurrentEffect = SHARPNESS;
break; break;
case SHARPNESS_FILTER: case SHARPNESS:
mCurrentEffect = TEMPERATURE_FILTER; mCurrentEffect = TEMPERATURE;
break; break;
case TEMPERATURE_FILTER: case TEMPERATURE:
mCurrentEffect = TINT_FILTER; mCurrentEffect = TINT;
break; break;
case TINT_FILTER: case TINT:
mCurrentEffect = VIGNETTE_FILTER; mCurrentEffect = VIGNETTE;
break; break;
case VIGNETTE_FILTER: case VIGNETTE:
default: default:
mCurrentEffect = NO_FILTER; mCurrentEffect = NONE;
break; break;
} }

Loading…
Cancel
Save