Refactor filters to simplify their creation/addition
Bug:7688780
Change-Id: I9e1bb860dc9150bed4a255118654f2ca7f1ec3f0
diff --git a/res/layout/filtershow_activity.xml b/res/layout/filtershow_activity.xml
index 8546736..c26d858 100644
--- a/res/layout/filtershow_activity.xml
+++ b/res/layout/filtershow_activity.xml
@@ -312,77 +312,6 @@
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/thumbnail_margin"
android:orientation="horizontal" >
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/tinyplanetButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/tinyplanet" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/wbalanceButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/wbalance" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/exposureButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/exposure" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/vignetteButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_vignette"
- android:text="@string/vignette" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/contrastButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/contrast" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/shadowRecoveryButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/shadow_recovery" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/vibranceButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/vibrance" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/sharpenButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_sharpen"
- android:text="@string/sharpness" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/curvesButtonRGB"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_curve"
- android:text="@string/curvesRGB" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/hueButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/hue" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/saturationButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/saturation" />
-
- <com.android.gallery3d.filtershow.ui.ImageButtonTitle
- android:id="@+id/bwfilterButton"
- style="@style/FilterShowBottomButton"
- android:src="@drawable/filtershow_button_colors_contrast"
- android:text="@string/bwfilter" />
</LinearLayout>
</HorizontalScrollView>
diff --git a/res/values/filtershow_ids.xml b/res/values/filtershow_ids.xml
new file mode 100644
index 0000000..502d2f8
--- /dev/null
+++ b/res/values/filtershow_ids.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright (C) 2012 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+-->
+<resources>
+ <!-- Buttons ids for the filters -->
+ <item type="id" name="tinyplanetButton" />
+ <item type="id" name="vignetteButton" />
+ <item type="id" name="vibranceButton" />
+ <item type="id" name="contrastButton" />
+ <item type="id" name="saturationButton" />
+ <item type="id" name="bwfilterButton" />
+ <item type="id" name="wbalanceButton" />
+ <item type="id" name="hueButton" />
+ <item type="id" name="exposureButton" />
+ <item type="id" name="shadowRecoveryButton" />
+ <item type="id" name="sharpenButton" />
+ <item type="id" name="curvesButtonRGB" />
+</resources>
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index cf10a3e..724511a 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -67,6 +67,7 @@
import com.android.gallery3d.filtershow.filters.ImageFilterRS;
import com.android.gallery3d.filtershow.filters.ImageFilterSaturated;
import com.android.gallery3d.filtershow.filters.ImageFilterShadows;
+import com.android.gallery3d.filtershow.filters.ImageFilterSharpen;
import com.android.gallery3d.filtershow.filters.ImageFilterTinyPlanet;
import com.android.gallery3d.filtershow.filters.ImageFilterVibrance;
import com.android.gallery3d.filtershow.filters.ImageFilterVignette;
@@ -294,46 +295,32 @@
mPanelController.addPanel(mColorsButton, mListColors, 3);
- int[] recastIDs = {
- R.id.tinyplanetButton,
- R.id.vignetteButton,
- R.id.vibranceButton,
- R.id.contrastButton,
- R.id.saturationButton,
- R.id.bwfilterButton,
- R.id.wbalanceButton,
- R.id.hueButton,
- R.id.exposureButton,
- R.id.shadowRecoveryButton
- };
ImageFilter[] filters = {
new ImageFilterTinyPlanet(),
- new ImageFilterVignette(),
- new ImageFilterVibrance(),
- new ImageFilterContrast(),
- new ImageFilterSaturated(),
- new ImageFilterBwFilter(),
new ImageFilterWBalance(),
- new ImageFilterHue(),
new ImageFilterExposure(),
- new ImageFilterShadows()
+ new ImageFilterVignette(),
+ new ImageFilterContrast(),
+ new ImageFilterShadows(),
+ new ImageFilterVibrance(),
+ // TODO: move sharpen and curves here
+ // sharpen
+ // curves
+ new ImageFilterHue(),
+ new ImageFilterSaturated(),
+ new ImageFilterBwFilter()
};
for (int i = 0; i < filters.length; i++) {
ImageSmallFilter fView = new ImageSmallFilter(this);
- View v = listColors.findViewById(recastIDs[i]);
- int pos = listColors.indexOfChild(v);
- listColors.removeView(v);
-
filters[i].setParameter(filters[i].getPreviewParameter());
- if (v instanceof ImageButtonTitle)
- filters[i].setName(((ImageButtonTitle) v).getText());
+ filters[i].setName(getString(filters[i].getTextId()));
fView.setImageFilter(filters[i]);
fView.setController(this);
fView.setImageLoader(mImageLoader);
- fView.setId(recastIDs[i]);
+ fView.setId(filters[i].getButtonId());
mPanelController.addComponent(mColorsButton, fView);
- listColors.addView(fView, pos);
+ listColors.addView(fView);
}
int[] overlayIDs = {
diff --git a/src/com/android/gallery3d/filtershow/PanelController.java b/src/com/android/gallery3d/filtershow/PanelController.java
index dd1c6b4..5629e7d 100644
--- a/src/com/android/gallery3d/filtershow/PanelController.java
+++ b/src/com/android/gallery3d/filtershow/PanelController.java
@@ -672,12 +672,12 @@
break;
}
case R.id.bwfilterButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.bwfilter);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
+ mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
+ String ename = mCurrentImage.getContext().getString(R.string.bwfilter);
+ mUtilityPanel.setEffectName(ename);
+ ensureFilter(ename);
+ break;
+ }
case R.id.wbalanceButton: {
mCurrentImage = showImageView(R.id.imageShow).setShowControls(false);
String ename = mCurrentImage.getContext().getString(R.string.wbalance);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index 7f4d5ed..2009449 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -47,6 +47,18 @@
filterType = type;
}
+ public int getButtonId() {
+ return 0;
+ }
+
+ public int getTextId() {
+ return 0;
+ }
+
+ public int getOverlayBitmaps() {
+ return 0;
+ }
+
@Override
public ImageFilter clone() throws CloneNotSupportedException {
ImageFilter filter = (ImageFilter) super.clone();
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBwFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBwFilter.java
index 558abe3..1bb5c76 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBwFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBwFilter.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
import android.graphics.Color;
@@ -29,6 +31,16 @@
}
@Override
+ public int getButtonId() {
+ return R.id.bwfilterButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.bwfilter;
+ }
+
+ @Override
public ImageFilter clone() throws CloneNotSupportedException {
ImageFilterBwFilter filter = (ImageFilterBwFilter) super.clone();
return filter;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
index 0c3bb37..70e3d85 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterContrast extends ImageFilter {
@@ -24,6 +26,16 @@
mName = "Contrast";
}
+ @Override
+ public int getButtonId() {
+ return R.id.contrastButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.contrast;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float strength);
@Override
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterExposure.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterExposure.java
index e38dc8e..63f8601 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterExposure.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterExposure.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterExposure extends ImageFilter {
@@ -24,6 +26,16 @@
mName = "Exposure";
}
+ @Override
+ public int getButtonId() {
+ return R.id.exposureButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.exposure;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float bright);
@Override
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
index 279718e..e2ea388 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterHue extends ImageFilter {
@@ -29,6 +31,16 @@
}
@Override
+ public int getButtonId() {
+ return R.id.hueButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.hue;
+ }
+
+ @Override
public ImageFilter clone() throws CloneNotSupportedException {
ImageFilterHue filter = (ImageFilterHue) super.clone();
filter.cmatrix = new ColorSpaceMatrix(cmatrix);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
index 1d34591..129165b 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterSaturated extends ImageFilter {
@@ -24,6 +26,16 @@
mName = "Saturated";
}
+ @Override
+ public int getButtonId() {
+ return R.id.saturationButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.saturation;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float saturation);
@Override
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java
index 4e6b848..de8fcd5 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterShadows extends ImageFilter {
@@ -26,6 +28,16 @@
}
@Override
+ public int getButtonId() {
+ return R.id.shadowRecoveryButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.shadow_recovery;
+ }
+
+ @Override
public ImageFilter clone() throws CloneNotSupportedException {
ImageFilterShadows filter = (ImageFilterShadows) super.clone();
return filter;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
index a355539..db29a8a 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
@@ -28,6 +28,11 @@
}
@Override
+ public int getButtonId() {
+ return R.id.sharpenButton;
+ }
+
+ @Override
public void createFilter(android.content.res.Resources res, float scaleFactor,
boolean highQuality) {
int w = mInPixelsAllocation.getType().getX();
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
index effd89e..36bd626 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
@@ -22,6 +22,7 @@
import com.adobe.xmp.XMPException;
import com.adobe.xmp.XMPMeta;
+import com.android.gallery3d.R;
import com.android.gallery3d.app.Log;
import com.android.gallery3d.filtershow.presets.ImagePreset;
@@ -59,6 +60,16 @@
mAngle = 0;
}
+ @Override
+ public int getButtonId() {
+ return R.id.tinyplanetButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.tinyplanet;
+ }
+
public void setAngle(float angle) {
mAngle = angle;
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterVibrance.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterVibrance.java
index 34f8b24..7720d04 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterVibrance.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterVibrance.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterVibrance extends ImageFilter {
@@ -24,6 +26,16 @@
mName = "Vibrance";
}
+ @Override
+ public int getButtonId() {
+ return R.id.vibranceButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.vibrance;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float bright);
@Override
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
index 7a471e5..3c904fa 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterVignette extends ImageFilter {
@@ -25,6 +27,16 @@
mName = "Vignette";
}
+ @Override
+ public int getButtonId() {
+ return R.id.vignetteButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.vignette;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float strength);
@Override
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
index 35d439a..b2842f2 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
@@ -16,6 +16,8 @@
package com.android.gallery3d.filtershow.filters;
+import com.android.gallery3d.R;
+
import android.graphics.Bitmap;
public class ImageFilterWBalance extends ImageFilter {
@@ -26,6 +28,16 @@
mName = "WBalance";
}
+ @Override
+ public int getButtonId() {
+ return R.id.wbalanceButton;
+ }
+
+ @Override
+ public int getTextId() {
+ return R.string.wbalance;
+ }
+
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, int locX, int locY);
@Override