summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2012-09-29 00:17:09 -0700
committernicolasroard <nicolasroard@google.com>2012-09-29 16:58:46 -0700
commitbf93da72576b28f4e9dfb27f8f3fef702c8ae82d (patch)
tree5ca0b579c4f9f8f910282adb961538a075418af8 /src
parent0c3203f1789df3f8bd772dfd655e73b44636b629 (diff)
downloadandroid_packages_apps_Gallery2-bf93da72576b28f4e9dfb27f8f3fef702c8ae82d.tar.gz
android_packages_apps_Gallery2-bf93da72576b28f4e9dfb27f8f3fef702c8ae82d.tar.bz2
android_packages_apps_Gallery2-bf93da72576b28f4e9dfb27f8f3fef702c8ae82d.zip
Fix border bug and filter application
- fix layout (use framelayout) - fix copy imagepreset - added a current image state panel - remove title for border images for now bug:7256090 bug:7249672 bug:7234317 bug:7225150 Change-Id: I958628a1604c7e436e5d121556c8744f5748b1ec
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java107
-rw-r--r--src/com/android/gallery3d/filtershow/HistoryAdapter.java1
-rw-r--r--src/com/android/gallery3d/filtershow/ImageStateAdapter.java39
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ColorSpaceMatrix.java71
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilter.java28
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBW.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBWBlue.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBWGreen.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBWRed.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java16
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterBrightness.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java21
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java15
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java14
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java8
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterStraighten.java22
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java8
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageShow.java47
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java15
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePreset.java31
21 files changed, 287 insertions, 204 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index e807e3558..eb95d7452 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -35,6 +35,8 @@ import android.widget.AbsoluteLayout;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
@@ -75,6 +77,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
protected static final boolean ANIMATE_PANELS = false;
private boolean mShowingHistoryPanel = false;
+ private boolean mShowingImageStatePanel = false;
+
private Vector<ImageShow> mImageViews = new Vector<ImageShow>();
private Vector<View> mListViews = new Vector<View>();
private Vector<ImageButton> mBottomPanelButtons = new Vector<ImageButton>();
@@ -179,9 +183,11 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
createOnClickResetOperationsButton());
ListView operationsList = (ListView) findViewById(R.id.operationsList);
- operationsList.setAdapter(mImageShow.getListAdapter());
+ operationsList.setAdapter(mImageShow.getHistoryAdapter());
operationsList.setOnItemClickListener(this);
- mImageLoader.setAdapter((HistoryAdapter) mImageShow.getListAdapter());
+ ListView imageStateList = (ListView) findViewById(R.id.imageStateList);
+ imageStateList.setAdapter(mImageShow.getImageStateAdapter());
+ mImageLoader.setAdapter((HistoryAdapter) mImageShow.getHistoryAdapter());
fillListImages(listFilters);
fillListBorders(listBorders);
@@ -207,11 +213,17 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.filtershow_activity_menu, menu);
- MenuItem item = menu.findItem(R.id.operationsButton);
+ MenuItem showHistory = menu.findItem(R.id.operationsButton);
if (mShowingHistoryPanel) {
- item.setTitle(R.string.hide_history_panel);
+ showHistory.setTitle(R.string.hide_history_panel);
+ } else {
+ showHistory.setTitle(R.string.show_history_panel);
+ }
+ MenuItem showState = menu.findItem(R.id.showImageStateButton);
+ if (mShowingImageStatePanel) {
+ showState.setTitle(R.string.hide_imagestate_panel);
} else {
- item.setTitle(R.string.show_history_panel);
+ showState.setTitle(R.string.show_imagestate_panel);
}
return true;
}
@@ -220,7 +232,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
switch (item.getItemId()) {
case R.id.undoButton: {
HistoryAdapter adapter = (HistoryAdapter) mImageShow
- .getListAdapter();
+ .getHistoryAdapter();
int position = adapter.undo();
mImageShow.onItemClick(position);
mImageShow.showToast("Undo");
@@ -229,13 +241,17 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
}
case R.id.redoButton: {
HistoryAdapter adapter = (HistoryAdapter) mImageShow
- .getListAdapter();
+ .getHistoryAdapter();
int position = adapter.redo();
mImageShow.onItemClick(position);
mImageShow.showToast("Redo");
invalidateViews();
return true;
}
+ case R.id.showImageStateButton: {
+ toggleImageStatePanel();
+ return true;
+ }
case R.id.operationsButton: {
toggleHistoryPanel();
return true;
@@ -303,6 +319,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
filter.setImageFilter(borders[i]);
filter.setController(this);
filter.setImageLoader(mImageLoader);
+ filter.setShowTitle(false);
listBorders.addView(filter);
}
}
@@ -366,28 +383,54 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
}
// //////////////////////////////////////////////////////////////////////////////
+ // imageState panel...
+
+ private void toggleImageStatePanel() {
+ final View view = findViewById(R.id.mainPanel);
+ final View viewList = findViewById(R.id.imageStatePanel);
+
+ if (mShowingHistoryPanel) {
+ findViewById(R.id.historyPanel).setVisibility(View.INVISIBLE);
+ mShowingHistoryPanel = false;
+ }
+
+ if (!mShowingImageStatePanel) {
+ mShowingImageStatePanel = true;
+ view.animate().setDuration(200).x(-viewList.getWidth())
+ .withLayer().withEndAction(new Runnable() {
+ public void run() {
+ viewList.setAlpha(0);
+ viewList.setVisibility(View.VISIBLE);
+ viewList.animate().setDuration(100)
+ .alpha(1.0f).start();
+ }
+ }).start();
+ } else {
+ mShowingImageStatePanel = false;
+ viewList.setVisibility(View.INVISIBLE);
+ view.animate().setDuration(200).x(0).withLayer()
+ .start();
+ }
+ invalidateOptionsMenu();
+ }
+
+ // //////////////////////////////////////////////////////////////////////////////
// history panel...
private void toggleHistoryPanel() {
final View view = findViewById(R.id.mainPanel);
final View viewList = findViewById(R.id.historyPanel);
- View rootView = viewList.getRootView();
-
- // TODO: use a custom layout instead of absolutelayout...
- final AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) view
- .getLayoutParams();
- final AbsoluteLayout.LayoutParams lph = (AbsoluteLayout.LayoutParams) viewList
- .getLayoutParams();
- final int positionHistoryPanel = (int) (rootView.getWidth() - viewList
- .getWidth());
+
+ if (mShowingImageStatePanel) {
+ findViewById(R.id.imageStatePanel).setVisibility(View.INVISIBLE);
+ mShowingImageStatePanel = false;
+ }
+
if (!mShowingHistoryPanel) {
mShowingHistoryPanel = true;
view.animate().setDuration(200).x(-viewList.getWidth())
.withLayer().withEndAction(new Runnable() {
public void run() {
- view.setLayoutParams(lp);
- lph.x = positionHistoryPanel;
- viewList.setLayoutParams(lph);
viewList.setAlpha(0);
viewList.setVisibility(View.VISIBLE);
viewList.animate().setDuration(100)
@@ -398,19 +441,14 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
mShowingHistoryPanel = false;
viewList.setVisibility(View.INVISIBLE);
view.animate().setDuration(200).x(0).withLayer()
- .withEndAction(new Runnable() {
- public void run() {
- lp.x = 0;
- view.setLayoutParams(lp);
- }
- }).start();
+ .start();
}
invalidateOptionsMenu();
}
private void resetHistory() {
HistoryAdapter adapter = (HistoryAdapter) mImageShow
- .getListAdapter();
+ .getHistoryAdapter();
adapter.reset();
ImagePreset original = new ImagePreset(adapter.getItem(0));
mImageShow.setImagePreset(original);
@@ -560,7 +598,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterVignette vignette = new ImageFilterVignette();
ImagePreset copy = new ImagePreset(preset);
copy.add(vignette);
- copy.setHistoryName(vignette.name());
+ copy.setHistoryName(vignette.getName());
copy.setIsFx(false);
filter = copy.getFilter("Vignette");
mImageShow.setImagePreset(copy);
@@ -616,7 +654,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterContrast contrast = new ImageFilterContrast();
ImagePreset copy = new ImagePreset(preset);
copy.add(contrast);
- copy.setHistoryName(contrast.name());
+ copy.setHistoryName(contrast.getName());
copy.setIsFx(false);
filter = copy.getFilter("Contrast");
mImageShow.setImagePreset(copy);
@@ -642,7 +680,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterSaturated sat = new ImageFilterSaturated();
ImagePreset copy = new ImagePreset(preset);
copy.add(sat);
- copy.setHistoryName(sat.name());
+ copy.setHistoryName(sat.getName());
copy.setIsFx(false);
filter = copy.getFilter("Saturated");
mImageShow.setImagePreset(copy);
@@ -668,7 +706,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterHue contrast = new ImageFilterHue();
ImagePreset copy = new ImagePreset(preset);
copy.add(contrast);
- copy.setHistoryName(contrast.name());
+ copy.setHistoryName(contrast.getName());
copy.setIsFx(false);
filter = copy.getFilter("Hue");
mImageShow.setImagePreset(copy);
@@ -694,7 +732,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterHue contrast = new ImageFilterHue();
ImagePreset copy = new ImagePreset(preset);
copy.add(contrast);
- copy.setHistoryName(contrast.name());
+ copy.setHistoryName(contrast.getName());
copy.setIsFx(false);
filter = copy.getFilter("Hue");
mImageShow.setImagePreset(copy);
@@ -720,7 +758,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterBrightness bright = new ImageFilterBrightness();
ImagePreset copy = new ImagePreset(preset);
copy.add(bright);
- copy.setHistoryName(bright.name());
+ copy.setHistoryName(bright.getName());
copy.setIsFx(false);
filter = copy.getFilter("Brightness");
mImageShow.setImagePreset(copy);
@@ -746,7 +784,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImageFilterHue contrast = new ImageFilterHue();
ImagePreset copy = new ImagePreset(preset);
copy.add(contrast);
- copy.setHistoryName(contrast.name());
+ copy.setHistoryName(contrast.getName());
copy.setIsFx(false);
filter = copy.getFilter("Hue");
mImageShow.setImagePreset(copy);
@@ -787,11 +825,12 @@ public class FilterShowActivity extends Activity implements OnItemClickListener
ImagePreset oldPreset = mImageShow.getImagePreset();
ImagePreset copy = new ImagePreset(oldPreset);
// TODO: use a numerical constant instead.
- if (imageFilter.name().equalsIgnoreCase("Border")) {
+ if (imageFilter.getName().equalsIgnoreCase("Border")) {
copy.remove("Border");
copy.setHistoryName("Border");
}
copy.add(imageFilter);
+ mImageShow.setImagePreset(copy);
invalidateViews();
}
diff --git a/src/com/android/gallery3d/filtershow/HistoryAdapter.java b/src/com/android/gallery3d/filtershow/HistoryAdapter.java
index ed5b26b34..803c45fc0 100644
--- a/src/com/android/gallery3d/filtershow/HistoryAdapter.java
+++ b/src/com/android/gallery3d/filtershow/HistoryAdapter.java
@@ -93,7 +93,6 @@ public class HistoryAdapter extends ArrayAdapter<ImagePreset> {
if (item != null) {
TextView itemView = (TextView) view.findViewById(R.id.rowTextView);
if (itemView != null) {
- // do whatever you want with your string and long
itemView.setText(item.historyName());
}
ImageView markView = (ImageView) view.findViewById(R.id.selectedMark);
diff --git a/src/com/android/gallery3d/filtershow/ImageStateAdapter.java b/src/com/android/gallery3d/filtershow/ImageStateAdapter.java
new file mode 100644
index 000000000..0bca9a3ed
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/ImageStateAdapter.java
@@ -0,0 +1,39 @@
+
+package com.android.gallery3d.filtershow;
+
+import com.android.gallery3d.R;
+import com.android.gallery3d.filtershow.filters.ImageFilter;
+import com.android.gallery3d.filtershow.presets.ImagePreset;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+public class ImageStateAdapter extends ArrayAdapter<ImageFilter> {
+ private static final String LOGTAG = "ImageStateAdapter";
+
+ public ImageStateAdapter(Context context, int textViewResourceId) {
+ super(context, textViewResourceId);
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View view = convertView;
+ if (view == null) {
+ LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
+ Context.LAYOUT_INFLATER_SERVICE);
+ view = inflater.inflate(R.layout.filtershow_imagestate_row, null);
+ }
+ ImageFilter filter = getItem(position);
+ if (filter != null) {
+ TextView itemLabel = (TextView) view.findViewById(R.id.imagestate_label);
+ itemLabel.setText(filter.getName());
+ TextView itemParameter = (TextView) view.findViewById(R.id.imagestate_parameter);
+ itemParameter.setText("" + filter.getParameter());
+ }
+ return view;
+ }
+}
diff --git a/src/com/android/gallery3d/filtershow/filters/ColorSpaceMatrix.java b/src/com/android/gallery3d/filtershow/filters/ColorSpaceMatrix.java
index f03a04569..6791cd341 100644
--- a/src/com/android/gallery3d/filtershow/filters/ColorSpaceMatrix.java
+++ b/src/com/android/gallery3d/filtershow/filters/ColorSpaceMatrix.java
@@ -4,7 +4,7 @@ package com.android.gallery3d.filtershow.filters;
import java.util.Arrays;
public class ColorSpaceMatrix {
- private final float[] matrix = new float[16];
+ private final float[] mMatrix = new float[16];
private static final float RLUM = 0.3086f;
private static final float GLUM = 0.6094f;
private static final float BLUM = 0.0820f;
@@ -14,26 +14,35 @@ public class ColorSpaceMatrix {
}
/**
+ * Copy constructor
+ *
+ * @param matrix
+ */
+ public ColorSpaceMatrix(ColorSpaceMatrix matrix) {
+ System.arraycopy(matrix.mMatrix, 0, mMatrix, 0, matrix.mMatrix.length);
+ }
+
+ /**
* get the matrix
*
* @return the internal matrix
*/
public float[] getMatrix() {
- return matrix;
+ return mMatrix;
}
/**
* set matrix to identity
*/
public void identity() {
- Arrays.fill(matrix, 0);
- matrix[0] = matrix[5] = matrix[10] = matrix[15] = 1;
+ Arrays.fill(mMatrix, 0);
+ mMatrix[0] = mMatrix[5] = mMatrix[10] = mMatrix[15] = 1;
}
public void convertToLuminance() {
- matrix[0] = matrix[1] = matrix[2] = 0.3086f;
- matrix[4] = matrix[5] = matrix[6] = 0.6094f;
- matrix[8] = matrix[9] = matrix[10] = 0.0820f;
+ mMatrix[0] = mMatrix[1] = mMatrix[2] = 0.3086f;
+ mMatrix[4] = mMatrix[5] = mMatrix[6] = 0.6094f;
+ mMatrix[8] = mMatrix[9] = mMatrix[10] = 0.0820f;
}
private void multiply(float[] a)
@@ -44,20 +53,20 @@ public class ColorSpaceMatrix {
for (y = 0; y < 4; y++) {
int y4 = y * 4;
for (x = 0; x < 4; x++) {
- temp[y4 + x] = matrix[y4 + 0] * a[x]
- + matrix[y4 + 1] * a[4 + x]
- + matrix[y4 + 2] * a[8 + x]
- + matrix[y4 + 3] * a[12 + x];
+ temp[y4 + x] = mMatrix[y4 + 0] * a[x]
+ + mMatrix[y4 + 1] * a[4 + x]
+ + mMatrix[y4 + 2] * a[8 + x]
+ + mMatrix[y4 + 3] * a[12 + x];
}
}
for (int i = 0; i < 16; i++)
- matrix[i] = temp[i];
+ mMatrix[i] = temp[i];
}
private void xRotateMatrix(float rs, float rc)
{
ColorSpaceMatrix c = new ColorSpaceMatrix();
- float[] tmp = c.matrix;
+ float[] tmp = c.mMatrix;
tmp[5] = rc;
tmp[6] = rs;
@@ -70,7 +79,7 @@ public class ColorSpaceMatrix {
private void yRotateMatrix(float rs, float rc)
{
ColorSpaceMatrix c = new ColorSpaceMatrix();
- float[] tmp = c.matrix;
+ float[] tmp = c.mMatrix;
tmp[0] = rc;
tmp[2] = -rs;
@@ -83,7 +92,7 @@ public class ColorSpaceMatrix {
private void zRotateMatrix(float rs, float rc)
{
ColorSpaceMatrix c = new ColorSpaceMatrix();
- float[] tmp = c.matrix;
+ float[] tmp = c.mMatrix;
tmp[0] = rc;
tmp[1] = rs;
@@ -95,7 +104,7 @@ public class ColorSpaceMatrix {
private void zShearMatrix(float dx, float dy)
{
ColorSpaceMatrix c = new ColorSpaceMatrix();
- float[] tmp = c.matrix;
+ float[] tmp = c.mMatrix;
tmp[2] = dx;
tmp[6] = dy;
@@ -139,15 +148,15 @@ public class ColorSpaceMatrix {
* @param s
*/
public void changeSaturation(float s) {
- matrix[0] = (1 - s) * RLUM + s;
- matrix[1] = (1 - s) * RLUM;
- matrix[2] = (1 - s) * RLUM;
- matrix[4] = (1 - s) * GLUM;
- matrix[5] = (1 - s) * GLUM + s;
- matrix[6] = (1 - s) * GLUM;
- matrix[8] = (1 - s) * BLUM;
- matrix[9] = (1 - s) * BLUM;
- matrix[10] = (1 - s) * BLUM + s;
+ mMatrix[0] = (1 - s) * RLUM + s;
+ mMatrix[1] = (1 - s) * RLUM;
+ mMatrix[2] = (1 - s) * RLUM;
+ mMatrix[4] = (1 - s) * GLUM;
+ mMatrix[5] = (1 - s) * GLUM + s;
+ mMatrix[6] = (1 - s) * GLUM;
+ mMatrix[8] = (1 - s) * BLUM;
+ mMatrix[9] = (1 - s) * BLUM;
+ mMatrix[10] = (1 - s) * BLUM + s;
}
/**
@@ -159,7 +168,7 @@ public class ColorSpaceMatrix {
* @return computed red pixel value
*/
public float getRed(int r, int g, int b) {
- return r * matrix[0] + g * matrix[4] + b * matrix[8] + matrix[12];
+ return r * mMatrix[0] + g * mMatrix[4] + b * mMatrix[8] + mMatrix[12];
}
/**
@@ -171,7 +180,7 @@ public class ColorSpaceMatrix {
* @return computed green pixel value
*/
public float getGreen(int r, int g, int b) {
- return r * matrix[1] + g * matrix[5] + b * matrix[9] + matrix[13];
+ return r * mMatrix[1] + g * mMatrix[5] + b * mMatrix[9] + mMatrix[13];
}
/**
@@ -183,19 +192,19 @@ public class ColorSpaceMatrix {
* @return computed blue pixel value
*/
public float getBlue(int r, int g, int b) {
- return r * matrix[2] + g * matrix[6] + b * matrix[10] + matrix[14];
+ return r * mMatrix[2] + g * mMatrix[6] + b * mMatrix[10] + mMatrix[14];
}
private float getRedf(float r, float g, float b) {
- return r * matrix[0] + g * matrix[4] + b * matrix[8] + matrix[12];
+ return r * mMatrix[0] + g * mMatrix[4] + b * mMatrix[8] + mMatrix[12];
}
private float getGreenf(float r, float g, float b) {
- return r * matrix[1] + g * matrix[5] + b * matrix[9] + matrix[13];
+ return r * mMatrix[1] + g * mMatrix[5] + b * mMatrix[9] + mMatrix[13];
}
private float getBluef(float r, float g, float b) {
- return r * matrix[2] + g * matrix[6] + b * matrix[10] + matrix[14];
+ return r * mMatrix[2] + g * mMatrix[6] + b * mMatrix[10] + mMatrix[14];
}
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index 3d96a33ed..c2bd952f8 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -3,31 +3,41 @@ package com.android.gallery3d.filtershow.filters;
import android.graphics.Bitmap;
-public class ImageFilter {
+public class ImageFilter implements Cloneable {
protected int mParameter = 0;
+ protected String mName = "Original";
- public String name() {
- return "Original";
+ @Override
+ public ImageFilter clone() throws CloneNotSupportedException {
+ ImageFilter filter = (ImageFilter) super.clone();
+ filter.setName(getName());
+ filter.setParameter(getParameter());
+ return filter;
}
- // TODO: maybe use clone instead?
- public ImageFilter copy() {
- ImageFilter filter = new ImageFilter();
- filter.setParameter(mParameter);
- return filter;
+ public void setName(String name) {
+ mName = name;
+ }
+
+ public String getName() {
+ return mName;
}
public void apply(Bitmap bitmap) {
// do nothing here, subclasses will implement filtering here
}
+ public int getParameter() {
+ return mParameter;
+ }
+
public void setParameter(int value) {
mParameter = value;
}
public boolean same(ImageFilter filter) {
- if (!filter.name().equalsIgnoreCase(name())) {
+ if (!filter.getName().equalsIgnoreCase(getName())) {
return false;
}
return true;
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBW.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBW.java
index e997d3ee9..bc3dd0938 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBW.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBW.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterBW extends ImageFilter {
- public String name() {
- return "Black & White";
- }
-
- public ImageFilter copy() {
- return new ImageFilterBW();
+ public ImageFilterBW() {
+ mName = "Black & White";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBWBlue.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBWBlue.java
index 685b8ff7a..7368be587 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBWBlue.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBWBlue.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterBWBlue extends ImageFilter {
- public String name() {
- return "Black & White (Blue)";
- }
-
- public ImageFilter copy() {
- return new ImageFilterBWBlue();
+ public ImageFilterBWBlue() {
+ mName = "Black & White (Blue)";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBWGreen.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBWGreen.java
index 9fa73866c..f4e6c61fc 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBWGreen.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBWGreen.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterBWGreen extends ImageFilter {
- public String name() {
- return "Black & White (Green)";
- }
-
- public ImageFilter copy() {
- return new ImageFilterBWGreen();
+ public ImageFilterBWGreen() {
+ mName = "Black & White (Green)";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBWRed.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBWRed.java
index c5e444f38..bb7d661ad 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBWRed.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBWRed.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterBWRed extends ImageFilter {
- public String name() {
- return "Black & White (Red)";
- }
-
- public ImageFilter copy() {
- return new ImageFilterBWRed();
+ public ImageFilterBWRed() {
+ mName = "Black & White (Red)";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
index 6a714178b..7df7a2b6f 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
@@ -12,16 +12,16 @@ import android.graphics.drawable.NinePatchDrawable;
public class ImageFilterBorder extends ImageFilter {
Drawable mNinePatch = null;
- public ImageFilterBorder(Drawable ninePatch) {
- mNinePatch = ninePatch;
- }
-
- public String name() {
- return "Border";
+ @Override
+ public ImageFilter clone() throws CloneNotSupportedException {
+ ImageFilterBorder filter = (ImageFilterBorder) super.clone();
+ filter.setDrawable(mNinePatch);
+ return filter;
}
- public ImageFilter copy() {
- return new ImageFilterBorder(mNinePatch);
+ public ImageFilterBorder(Drawable ninePatch) {
+ mName = "Border";
+ mNinePatch = ninePatch;
}
public boolean same(ImageFilter filter) {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterBrightness.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterBrightness.java
index 8ec4dd061..ab61a00c2 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterBrightness.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterBrightness.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterBrightness extends ImageFilter {
- public String name() {
- return "Brightness";
- }
-
- public ImageFilter copy() {
- return new ImageFilterBrightness();
+ public ImageFilterBrightness() {
+ mName = "Brightness";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float bright);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
index dd072cb56..b3ef74d21 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterContrast extends ImageFilter {
- public String name() {
- return "Contrast";
- }
-
- public ImageFilter copy() {
- return new ImageFilterContrast();
+ public ImageFilterContrast() {
+ mName = "Contrast";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float strength);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
index c21ae1f9f..5de8ff483 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
@@ -15,15 +15,18 @@ public class ImageFilterCurves extends ImageFilter {
private boolean mUseRed = true;
private boolean mUseGreen = true;
private boolean mUseBlue = true;
- private String mName = "Curves";
private Spline mSpline = null;
- public String name() {
- return mName;
+ public ImageFilterCurves() {
+ mName = "Curves";
}
- public void setName(String name) {
- mName = name;
+ @Override
+ public ImageFilter clone() throws CloneNotSupportedException {
+ ImageFilterCurves filter = (ImageFilterCurves) super.clone();
+ filter.setCurve(mCurve);
+ filter.setSpline(new Spline(mSpline));
+ return filter;
}
public void setUseRed(boolean value) {
@@ -60,14 +63,6 @@ public class ImageFilterCurves extends ImageFilter {
return true;
}
- public ImageFilter copy() {
- ImageFilterCurves curves = new ImageFilterCurves();
- curves.setCurve(mCurve);
- curves.setName(mName);
- curves.setSpline(new Spline(mSpline));
- return curves;
- }
-
public void populateArray(int[] array) {
for (int i = 0; i < 256; i++) {
array[i] = (int) (mCurve[i]);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java
index baa85e13f..4e46943fc 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java
@@ -10,22 +10,25 @@ import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Shader.TileMode;
+import com.android.gallery3d.filtershow.ui.Spline;
+
public class ImageFilterGradient extends ImageFilter {
private Bitmap mGradientBitmap = null;
private int[] mColors = null;
private float[] mPositions = null;
- public String name() {
- return "Gradient";
+ public ImageFilterGradient() {
+ mName = "Gradient";
}
- public ImageFilter copy() {
- ImageFilterGradient gradient = new ImageFilterGradient();
+ @Override
+ public ImageFilter clone() throws CloneNotSupportedException {
+ ImageFilterGradient filter = (ImageFilterGradient) super.clone();
for (int i = 0; i < mColors.length; i++) {
- gradient.addColor(mColors[i], mPositions[i]);
+ filter.addColor(mColors[i], mPositions[i]);
}
- return gradient;
+ return filter;
}
public void addColor(int color, float position) {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
index 154ae2941..874e7ec1e 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
@@ -4,14 +4,18 @@ package com.android.gallery3d.filtershow.filters;
import android.graphics.Bitmap;
public class ImageFilterHue extends ImageFilter {
- private ColorSpaceMatrix cmatrix = new ColorSpaceMatrix();
+ private ColorSpaceMatrix cmatrix = null;
- public String name() {
- return "Hue";
+ public ImageFilterHue() {
+ mName = "Hue";
+ cmatrix = new ColorSpaceMatrix();
}
- public ImageFilter copy() {
- return new ImageFilterHue();
+ @Override
+ public ImageFilter clone() throws CloneNotSupportedException {
+ ImageFilterHue filter = (ImageFilterHue) super.clone();
+ filter.cmatrix = new ColorSpaceMatrix(cmatrix);
+ return filter;
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float []matrix);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
index f44c6a1c6..d3db4419b 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterSaturated extends ImageFilter {
- public String name() {
- return "Saturated";
- }
-
- public ImageFilter copy() {
- return new ImageFilterSaturated();
+ public ImageFilterSaturated() {
+ mName = "Saturated";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float saturation);
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterStraighten.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterStraighten.java
index 09a3f22f9..483d901e6 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterStraighten.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterStraighten.java
@@ -14,25 +14,29 @@ public class ImageFilterStraighten extends ImageFilter {
private float mRotation;
private float mZoomFactor;
- public String name() {
- return "Straighten";
+ public ImageFilterStraighten() {
+ mName = "Straighten";
}
- public void setRotation(float rotation) {
- mRotation = rotation;
+ @Override
+ public ImageFilter clone() throws CloneNotSupportedException {
+ ImageFilterStraighten filter = (ImageFilterStraighten) super.clone();
+ filter.mRotation = mRotation;
+ filter.mZoomFactor = mZoomFactor;
+ return filter;
}
- public void setRotationZoomFactor(float zoomFactor) {
+ public ImageFilterStraighten(float rotation, float zoomFactor) {
+ mRotation = rotation;
mZoomFactor = zoomFactor;
}
- public ImageFilterStraighten(float rotation, float zoomFactor) {
+ public void setRotation(float rotation) {
mRotation = rotation;
- mZoomFactor = zoomFactor;
}
- public ImageFilter copy() {
- return new ImageFilterStraighten(mRotation, mZoomFactor);
+ public void setRotationZoomFactor(float zoomFactor) {
+ mZoomFactor = zoomFactor;
}
public void apply(Bitmap bitmap) {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
index 74d5527c2..24699a2a2 100644
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
@@ -5,12 +5,8 @@ import android.graphics.Bitmap;
public class ImageFilterVignette extends ImageFilter {
- public String name() {
- return "Vignette";
- }
-
- public ImageFilter copy() {
- return new ImageFilterVignette();
+ public ImageFilterVignette() {
+ mName = "Vignette";
}
native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float strength);
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
index a22170378..14bc0be20 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
@@ -3,6 +3,7 @@ package com.android.gallery3d.filtershow.imageshow;
import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.HistoryAdapter;
+import com.android.gallery3d.filtershow.ImageStateAdapter;
import com.android.gallery3d.filtershow.cache.ImageLoader;
import com.android.gallery3d.filtershow.filters.ImageFilter;
import com.android.gallery3d.filtershow.presets.ImagePreset;
@@ -45,7 +46,8 @@ public class ImageShow extends View implements SliderListener {
protected SliderController mSliderController = new SliderController();
- private HistoryAdapter mAdapter = null;
+ private HistoryAdapter mHistoryAdapter = null;
+ private ImageStateAdapter mImageStateAdapter = null;
protected Rect mImageBounds = null;
protected float mImageRotation = 0;
@@ -63,21 +65,26 @@ public class ImageShow extends View implements SliderListener {
if (mCurrentFilter != null) {
mCurrentFilter.setParameter(value);
}
- mImageLoader.resetImageForPreset(getImagePreset(), this);
+ if (mImagePreset != null) {
+ mImageLoader.resetImageForPreset(mImagePreset, this);
+ mImagePreset.fillImageStateAdapter(mImageStateAdapter);
+ }
invalidate();
}
public ImageShow(Context context, AttributeSet attrs) {
super(context, attrs);
mSliderController.setListener(this);
- mAdapter = new HistoryAdapter(context, R.layout.filtershow_history_operation_row,
+ mHistoryAdapter = new HistoryAdapter(context, R.layout.filtershow_history_operation_row,
R.id.rowTextView);
+ mImageStateAdapter = new ImageStateAdapter(context,
+ R.layout.filtershow_imagestate_row);
}
public ImageShow(Context context) {
super(context);
mSliderController.setListener(this);
- mAdapter = new HistoryAdapter(context, R.layout.filtershow_history_operation_row,
+ mHistoryAdapter = new HistoryAdapter(context, R.layout.filtershow_history_operation_row,
R.id.rowTextView);
}
@@ -94,7 +101,7 @@ public class ImageShow extends View implements SliderListener {
}
public void setAdapter(HistoryAdapter adapter) {
- mAdapter = adapter;
+ mHistoryAdapter = adapter;
}
public void showToast(String text) {
@@ -166,7 +173,6 @@ public class ImageShow extends View implements SliderListener {
if (mImageLoader != null) {
filteredImage = mImageLoader.getImageForPreset(this,
getImagePreset(), showHires());
-// Log.v(LOGTAG, "getImageForPreset " + getImagePreset() + " is: " + filteredImage);
}
if (filteredImage == null) {
@@ -247,14 +253,13 @@ public class ImageShow extends View implements SliderListener {
public void setImagePreset(ImagePreset preset, boolean addToHistory) {
mImagePreset = preset;
if (getImagePreset() != null) {
-// Log.v(LOGTAG, "add " + getImagePreset().name() + " " + getImagePreset());
if (addToHistory) {
- mAdapter.insert(getImagePreset(), 0);
+ mHistoryAdapter.insert(getImagePreset(), 0);
}
getImagePreset().setEndpoint(this);
updateImage();
}
-// Log.v(LOGTAG, "invalidate from setImagePreset");
+ mImagePreset.fillImageStateAdapter(mImageStateAdapter);
invalidate();
}
@@ -281,8 +286,6 @@ public class ImageShow extends View implements SliderListener {
public void updateFilteredImage(Bitmap bitmap) {
mFilteredImage = bitmap;
- // Log.v(LOGTAG, "invalidate from updateFilteredImage");
- // invalidate();
}
public void saveImage(FilterShowActivity filterShowActivity) {
@@ -292,28 +295,24 @@ public class ImageShow extends View implements SliderListener {
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
mSliderController.onTouchEvent(event);
- // Log.v(LOGTAG, "invalidate from onTouchEvent");
invalidate();
return true;
}
// listview stuff
- public ArrayAdapter getListAdapter() {
- return mAdapter;
+ public ArrayAdapter getHistoryAdapter() {
+ return mHistoryAdapter;
+ }
+
+ public ArrayAdapter getImageStateAdapter() {
+ return mImageStateAdapter;
}
public void onItemClick(int position) {
- Log.v(LOGTAG, "Click on item " + position);
- Log.v(LOGTAG, "item " + position + " is " + mAdapter.getItem(position));
- setImagePreset(new ImagePreset(mAdapter.getItem(position)), false); // we
- // need
- // a
- // copy
- // from
- // the
- // history
- mAdapter.setCurrentPreset(position);
+ setImagePreset(new ImagePreset(mHistoryAdapter.getItem(position)), false);
+ // we need a copy from the history
+ mHistoryAdapter.setCurrentPreset(position);
}
public void showOriginal(boolean show) {
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
index f8794230c..401d96fb1 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageSmallFilter.java
@@ -10,13 +10,16 @@ import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.view.View.MeasureSpec;
public class ImageSmallFilter extends ImageShow implements View.OnClickListener {
+ private static final String LOGTAG = "ImageSmallFilter";
private FilterShowActivity mController = null;
private ImageFilter mImageFilter = null;
+ private boolean mShowTitle = true;
public ImageSmallFilter(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -44,11 +47,6 @@ public class ImageSmallFilter extends ImageShow implements View.OnClickListener
setMeasuredDimension(parentHeight, parentHeight);
}
- /*
- * protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- * setMeasuredDimension(256, 256); }
- */
-
public void onClick(View v) {
if (mController != null) {
if (mImageFilter != null) {
@@ -66,8 +64,13 @@ public class ImageSmallFilter extends ImageShow implements View.OnClickListener
return mImageLoader.getOriginalBitmapSmall();
}
+ public void setShowTitle(boolean value) {
+ mShowTitle = value;
+ invalidate();
+ }
+
public boolean showTitle() {
- return true;
+ return mShowTitle;
}
public boolean showControls() {
diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
index 6659eaecf..69b3f0939 100644
--- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
+++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java
@@ -7,6 +7,7 @@ import android.graphics.Bitmap;
import android.graphics.RectF;
import android.util.Log;
+import com.android.gallery3d.filtershow.ImageStateAdapter;
import com.android.gallery3d.filtershow.filters.ImageFilter;
import com.android.gallery3d.filtershow.filters.ImageFilterStraighten;
import com.android.gallery3d.filtershow.imageshow.ImageShow;
@@ -36,8 +37,12 @@ public class ImagePreset {
}
public ImagePreset(ImagePreset source) {
- for (int i = 0; i < source.mFilters.size(); i++) {
- add(source.mFilters.elementAt(i).copy());
+ try {
+ for (int i = 0; i < source.mFilters.size(); i++) {
+ add(source.mFilters.elementAt(i).clone());
+ }
+ } catch (java.lang.CloneNotSupportedException e) {
+ Log.v(LOGTAG, "Exception trying to clone: " + e);
}
mName = source.name();
mHistoryName = source.name();
@@ -59,9 +64,6 @@ public class ImagePreset {
// TODO
}
-// Log.v(LOGTAG, "applyGeometry with rotate " + mStraightenRotate + " and zoom "
- // + mStraightenZoom);
-
if (mStraightenRotate != 0) {
// TODO: keep the instances around
ImageFilter straighten = new ImageFilterStraighten(mStraightenRotate, mStraightenZoom);
@@ -117,8 +119,8 @@ public class ImagePreset {
return mHistoryName;
}
- public void add(ImageFilter preset) {
- mFilters.add(preset);
+ public void add(ImageFilter filter) {
+ mFilters.add(filter);
}
public void remove(String filterName) {
@@ -135,7 +137,7 @@ public class ImagePreset {
public ImageFilter getFilter(String name) {
for (int i = 0; i < mFilters.size(); i++) {
ImageFilter filter = mFilters.elementAt(i);
- if (filter.name().equalsIgnoreCase(name)) {
+ if (filter.getName().equalsIgnoreCase(name)) {
return filter;
}
}
@@ -158,7 +160,7 @@ public class ImagePreset {
ImageFilter borderFilter = null;
for (int i = 0; i < mFilters.size(); i++) {
ImageFilter filter = mFilters.elementAt(i);
- if (filter.name().equalsIgnoreCase("Border")) {
+ if (filter.getName().equalsIgnoreCase("Border")) {
// TODO don't use the name as an id
borderFilter = filter;
} else {
@@ -174,4 +176,13 @@ public class ImagePreset {
return bitmap;
}
- }
+ public void fillImageStateAdapter(ImageStateAdapter imageStateAdapter) {
+ if (imageStateAdapter == null) {
+ return;
+ }
+ imageStateAdapter.clear();
+ imageStateAdapter.addAll(mFilters);
+ imageStateAdapter.notifyDataSetChanged();
+ }
+
+}