From a37bf497c3c3dc2e932c2b52e99bb79bce4f6ebf Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Mon, 5 Aug 2019 15:49:00 +0200 Subject: [PATCH] Simplify Filters class --- .../cameraview/filters/DuotoneFilter.java | 4 +- .../cameraview/filters/Filters.java | 153 +++++------------- ...yScaleFilter.java => GrayscaleFilter.java} | 4 +- .../cameraview/demo/CameraActivity.java | 90 +++++------ 4 files changed, 86 insertions(+), 165 deletions(-) rename cameraview/src/main/java/com/otaliastudios/cameraview/filters/{GreyScaleFilter.java => GrayscaleFilter.java} (87%) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java index de34f7d5..c13398eb 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java @@ -19,14 +19,14 @@ public class DuotoneFilter extends Filter { } /** - * setDuoToneColors + * setDuotoneColors * * @param firstColor Integer, representing an ARGB color with 8 bits per channel. * May be created using Color class. * @param secondColor Integer, representing an ARGB color with 8 bits per channel. * May be created using Color class. */ - public void setDuoToneColors(int firstColor, int secondColor) { + public void setDuotoneColors(int firstColor, int secondColor) { this.mFirstColor = firstColor; this.mSecondColor = secondColor; } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java index 26bf6d82..2747ddc9 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/Filters.java @@ -1,124 +1,45 @@ package com.otaliastudios.cameraview.filters; -public enum Filters { - NO_FILTER, +import androidx.annotation.NonNull; - AUTO_FIX_FILTER, - BLACK_AND_WHITE_FILTER, - BRIGHTNESS_FILTER, - CONTRAST_FILTER, - CROSS_PROCESS_FILTER, - DOCUMENTARY_FILTER, - DUO_TONE_COLOR_FILTER, - FILL_LIGHT_FILTER, - GAMMA_FILTER, - GRAIN_FILTER, - GREY_SCALE_FILTER, - HUE_FILTER, - INVERT_COLOR_FILTER, - LAMOISH_FILTER, - POSTERIZE_FILTER, - SATURATION_FILTER, - SEPIA_FILTER, - SHARPNESS_FILTER, - TEMPERATURE_FILTER, - TINT_FILTER, - VIGNETTE_FILTER; +public enum Filters { + NONE(NoFilter.class), + AUTO_FIX(AutoFixFilter.class), + BLACK_AND_WHITE(BlackAndWhiteFilter.class), + BRIGHTNESS(BrightnessFilter.class), + CONTRAST(ContrastFilter.class), + CROSS_PROCESS(CrossProcessFilter.class), + DOCUMENTARY(DocumentaryFilter.class), + DUOTONE(DuotoneFilter.class), + FILL_LIGHT(FillLightFilter.class), + GAMMA(GammaFilter.class), + GRAIN(GrainFilter.class), + GRAYSCALE(GrayscaleFilter.class), + HUE(HueFilter.class), + INVERT_COLORS(InvertColorsFilter.class), + LAMOISH(LamoishFilter.class), + POSTERIZE(PosterizeFilter.class), + SATURATION(SaturationFilter.class), + SEPIA(SepiaFilter.class), + SHARPNESS(SharpnessFilter.class), + TEMPERATURE(TemperatureFilter.class), + TINT(TintFilter.class), + VIGNETTE(VignetteFilter.class); + + private Class filterClass; + + Filters(@NonNull Class filterClass) { + this.filterClass = filterClass; + } + @NonNull public Filter newInstance() { - Filter shaderEffect; - switch (this) { - - case AUTO_FIX_FILTER: - shaderEffect = new AutoFixFilter(); - break; - - 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(); + try { + return filterClass.newInstance(); + } catch (IllegalAccessException e) { + return new NoFilter(); + } catch (InstantiationException e) { + return new NoFilter(); } - - return shaderEffect; } } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GreyScaleFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java similarity index 87% rename from cameraview/src/main/java/com/otaliastudios/cameraview/filters/GreyScaleFilter.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java index a5872562..6015120f 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GreyScaleFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java @@ -5,11 +5,11 @@ import androidx.annotation.NonNull; /** * Converts preview to GreyScale. */ -public class GreyScaleFilter extends Filter { +public class GrayscaleFilter extends Filter { /** * Initialize Effect */ - public GreyScaleFilter() { + public GrayscaleFilter() { } @NonNull diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java index 9e3880c9..20bb6b8a 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java @@ -49,7 +49,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis private ViewGroup controlPanel; private long mCaptureTime; - private Filters mCurrentEffect = NO_FILTER; + private Filters mCurrentEffect = NONE; @Override protected void onCreate(Bundle savedInstanceState) { @@ -328,73 +328,73 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis } switch (mCurrentEffect){ - case NO_FILTER: - mCurrentEffect = AUTO_FIX_FILTER; + case NONE: + mCurrentEffect = AUTO_FIX; break; - case AUTO_FIX_FILTER: - mCurrentEffect = BLACK_AND_WHITE_FILTER; + case AUTO_FIX: + mCurrentEffect = BLACK_AND_WHITE; break; - case BLACK_AND_WHITE_FILTER: - mCurrentEffect = BRIGHTNESS_FILTER; + case BLACK_AND_WHITE: + mCurrentEffect = BRIGHTNESS; break; - case BRIGHTNESS_FILTER: - mCurrentEffect = CONTRAST_FILTER; + case BRIGHTNESS: + mCurrentEffect = CONTRAST; break; - case CONTRAST_FILTER: - mCurrentEffect = CROSS_PROCESS_FILTER; + case CONTRAST: + mCurrentEffect = CROSS_PROCESS; break; - case CROSS_PROCESS_FILTER: - mCurrentEffect = DOCUMENTARY_FILTER; + case CROSS_PROCESS: + mCurrentEffect = DOCUMENTARY; break; - case DOCUMENTARY_FILTER: - mCurrentEffect = DUO_TONE_COLOR_FILTER; + case DOCUMENTARY: + mCurrentEffect = DUOTONE; break; - case DUO_TONE_COLOR_FILTER: - mCurrentEffect = FILL_LIGHT_FILTER; + case DUOTONE: + mCurrentEffect = FILL_LIGHT; break; - case FILL_LIGHT_FILTER: - mCurrentEffect = GAMMA_FILTER; + case FILL_LIGHT: + mCurrentEffect = GAMMA; break; - case GAMMA_FILTER: - mCurrentEffect = GRAIN_FILTER; + case GAMMA: + mCurrentEffect = GRAIN; break; - case GRAIN_FILTER: - mCurrentEffect = GREY_SCALE_FILTER; + case GRAIN: + mCurrentEffect = GRAYSCALE; break; - case GREY_SCALE_FILTER: - mCurrentEffect = HUE_FILTER; + case GRAYSCALE: + mCurrentEffect = HUE; break; - case HUE_FILTER: - mCurrentEffect = INVERT_COLOR_FILTER; + case HUE: + mCurrentEffect = INVERT_COLORS; break; - case INVERT_COLOR_FILTER: - mCurrentEffect = LAMOISH_FILTER; + case INVERT_COLORS: + mCurrentEffect = LAMOISH; break; - case LAMOISH_FILTER: - mCurrentEffect = POSTERIZE_FILTER; + case LAMOISH: + mCurrentEffect = POSTERIZE; break; - case POSTERIZE_FILTER: - mCurrentEffect = SATURATION_FILTER; + case POSTERIZE: + mCurrentEffect = SATURATION; break; - case SATURATION_FILTER: - mCurrentEffect = SEPIA_FILTER; + case SATURATION: + mCurrentEffect = SEPIA; break; - case SEPIA_FILTER: - mCurrentEffect = SHARPNESS_FILTER; + case SEPIA: + mCurrentEffect = SHARPNESS; break; - case SHARPNESS_FILTER: - mCurrentEffect = TEMPERATURE_FILTER; + case SHARPNESS: + mCurrentEffect = TEMPERATURE; break; - case TEMPERATURE_FILTER: - mCurrentEffect = TINT_FILTER; + case TEMPERATURE: + mCurrentEffect = TINT; break; - case TINT_FILTER: - mCurrentEffect = VIGNETTE_FILTER; + case TINT: + mCurrentEffect = VIGNETTE; break; - case VIGNETTE_FILTER: + case VIGNETTE: default: - mCurrentEffect = NO_FILTER; + mCurrentEffect = NONE; break; }