diff options
author | John Hoford <hoford@google.com> | 2012-10-16 17:09:27 -0700 |
---|---|---|
committer | John Hoford <hoford@google.com> | 2012-10-17 09:52:59 -0700 |
commit | 7fc37252be8d12de906a9c68224f553f80c8ef52 (patch) | |
tree | 64073eb5bac8d911e22795bd0e89a1b3b748cebd | |
parent | 482038206b6677816b7030c3dbbc2a61ad2c9a84 (diff) | |
download | android_packages_apps_Snap-7fc37252be8d12de906a9c68224f553f80c8ef52.tar.gz android_packages_apps_Snap-7fc37252be8d12de906a9c68224f553f80c8ef52.tar.bz2 android_packages_apps_Snap-7fc37252be8d12de906a9c68224f553f80c8ef52.zip |
add support for configurable slider ranges
bug:7293391
Change-Id: Ie4984ce85387bf4d7a0a38e318eb20f6802ffc96
5 files changed, 67 insertions, 13 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index 35c74ebe1..0746751b9 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -114,7 +114,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, private boolean mSharingImage = false; private WeakReference<ProgressDialog> mSavingProgressDialog; - + private static final int SEEK_BAR_MAX = 600; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -325,7 +325,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, fillListBorders(listBorders); SeekBar seekBar = (SeekBar) findViewById(R.id.filterSeekBar); - seekBar.setMax(200); + seekBar.setMax(SEEK_BAR_MAX); + mImageShow.setSeekBar(seekBar); mImageZoom.setSeekBar(seekBar); mPanelController.setRowPanel(findViewById(R.id.secondRowPanel)); @@ -535,7 +536,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, mCurrentImageSmallFilter = filter; filter.setPreviousImageSmallFilter(null); - filter.setImageFilter(new ImageFilterFx(null,ImageFilterFx.ORIG)); + filter.setImageFilter(new ImageFilterFx(null,getString(R.string.ffx_original))); filter.setController(this); filter.setImageLoader(mImageLoader); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java index 6d0c020a7..36f2b104f 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java @@ -5,6 +5,9 @@ import android.graphics.Bitmap; public class ImageFilter implements Cloneable { + protected int mMaxParameter = 100; + protected int mMinParameter = -100; + protected int mDefaultParameter = 0; protected int mParameter = 0; protected String mName = "Original"; private final String LOGTAG = "ImageFilter"; @@ -29,6 +32,9 @@ public class ImageFilter implements Cloneable { filter.setName(getName()); filter.setParameter(getParameter()); filter.setFilterType(filterType); + filter.mMaxParameter = mMaxParameter; + filter.mMinParameter = mMinParameter; + filter.mDefaultParameter = mDefaultParameter; return filter; } @@ -53,6 +59,30 @@ public class ImageFilter implements Cloneable { mParameter = value; } + /** + * The maximum allowed value (inclusive) + * @return maximum value allowed as input to this filter + */ + public int getMaxParameter(){ + return mMaxParameter; + } + + /** + * The minimum allowed value (inclusive) + * @return minimum value allowed as input to this filter + */ + public int getMinParameter(){ + return mMinParameter; + } + + /** + * Returns the default value returned by this filter. + * @return default value + */ + public int getDefaultParameter(){ + return mDefaultParameter; + } + public boolean same(ImageFilter filter) { if (!filter.getName().equalsIgnoreCase(getName())) { return false; diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java index 7d8f41537..93cde1fe5 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java @@ -12,7 +12,7 @@ import java.util.Arrays; public class ImageFilterFx extends ImageFilter { private static final String TAG = "ImageFilterFx"; Bitmap fxBitmap; - public static final String ORIG = "Original"; + public ImageFilterFx(Bitmap fxBitmap,String name) { setFilterType(TYPE_FX); mName = name; diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java index 6f6f9e875..e5e52ecd0 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java @@ -9,6 +9,8 @@ public class ImageFilterHue extends ImageFilter { public ImageFilterHue() { mName = "Hue"; cmatrix = new ColorSpaceMatrix(); + mMaxParameter = 180; + mMinParameter = -180; } @Override diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java index 3fd6d4f85..b7d3b1ee9 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java @@ -101,18 +101,28 @@ public class ImageShow extends View implements SliderListener, OnSeekBarChangeLi public void select() { if (getCurrentFilter() != null) { int parameter = getCurrentFilter().getParameter(); - updateSeekBar(parameter); + int maxp = getCurrentFilter().getMaxParameter(); + int minp = getCurrentFilter().getMinParameter(); + updateSeekBar(parameter,minp,maxp); } if (mSeekBar != null) { mSeekBar.setOnSeekBarChangeListener(this); } } - public void updateSeekBar(int parameter) { + private int parameterToUI(int parameter,int minp,int maxp,int uimax){ + return (uimax*(parameter-minp))/(maxp-minp); + } + + private int uiToParameter(int ui,int minp,int maxp,int uimax){ + return ((maxp-minp)*ui)/uimax+minp; + } + public void updateSeekBar(int parameter,int minp,int maxp) { if (mSeekBar == null) { return; } - int progress = parameter + 100; + int seekMax = mSeekBar.getMax(); + int progress = parameterToUI(parameter,minp,maxp,seekMax); mSeekBar.setProgress(progress); if (getPanelController() != null) { getPanelController().onNewValue(parameter); @@ -124,7 +134,7 @@ public class ImageShow extends View implements SliderListener, OnSeekBarChangeLi } public void resetParameter() { - onNewValue(0); + onNewValue(getCurrentFilter().getDefaultParameter()); if (USE_SLIDER_GESTURE) { mSliderController.reset(); } @@ -139,18 +149,22 @@ public class ImageShow extends View implements SliderListener, OnSeekBarChangeLi } @Override - public void onNewValue(int value) { + public void onNewValue(int parameter) { + int maxp = 100; + int minp = -100; if (getCurrentFilter() != null) { - getCurrentFilter().setParameter(value); + getCurrentFilter().setParameter(parameter); + maxp = getCurrentFilter().getMaxParameter(); + minp = getCurrentFilter().getMinParameter(); } if (getImagePreset() != null) { mImageLoader.resetImageForPreset(getImagePreset(), this); getImagePreset().fillImageStateAdapter(mImageStateAdapter); } if (getPanelController() != null) { - getPanelController().onNewValue(value); + getPanelController().onNewValue(parameter); } - updateSeekBar(value); + updateSeekBar(parameter,minp,maxp); invalidate(); } @@ -503,7 +517,14 @@ public class ImageShow extends View implements SliderListener, OnSeekBarChangeLi @Override public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { - onNewValue(progress - 100); + int parameter = progress; + if (getCurrentFilter()!=null){ + int maxp = getCurrentFilter().getMaxParameter(); + int minp = getCurrentFilter().getMinParameter(); + parameter = uiToParameter(progress,minp,maxp,arg0.getMax()); + } + + onNewValue(parameter); } @Override |