summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/PanelController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/PanelController.java')
-rw-r--r--src/com/android/gallery3d/filtershow/PanelController.java189
1 files changed, 52 insertions, 137 deletions
diff --git a/src/com/android/gallery3d/filtershow/PanelController.java b/src/com/android/gallery3d/filtershow/PanelController.java
index e92c54936..94259e91d 100644
--- a/src/com/android/gallery3d/filtershow/PanelController.java
+++ b/src/com/android/gallery3d/filtershow/PanelController.java
@@ -32,6 +32,7 @@ import com.android.gallery3d.filtershow.filters.ImageFilterContrast;
import com.android.gallery3d.filtershow.filters.ImageFilterCurves;
import com.android.gallery3d.filtershow.filters.ImageFilterExposure;
import com.android.gallery3d.filtershow.filters.ImageFilterHue;
+import com.android.gallery3d.filtershow.filters.ImageFilterNegative;
import com.android.gallery3d.filtershow.filters.ImageFilterRedEye;
import com.android.gallery3d.filtershow.filters.ImageFilterSaturated;
import com.android.gallery3d.filtershow.filters.ImageFilterShadows;
@@ -42,6 +43,7 @@ import com.android.gallery3d.filtershow.filters.ImageFilterVignette;
import com.android.gallery3d.filtershow.filters.ImageFilterWBalance;
import com.android.gallery3d.filtershow.imageshow.ImageCrop;
import com.android.gallery3d.filtershow.imageshow.ImageShow;
+import com.android.gallery3d.filtershow.imageshow.ImageSmallFilter;
import com.android.gallery3d.filtershow.presets.ImagePreset;
import com.android.gallery3d.filtershow.ui.FramedTextButton;
import com.android.gallery3d.filtershow.ui.ImageCurves;
@@ -57,6 +59,11 @@ public class PanelController implements OnClickListener {
private static final int ANIM_DURATION = 200;
private static final String LOGTAG = "PanelController";
private boolean mDisableFilterButtons = false;
+ private boolean mFixedAspect = false;
+
+ public void setFixedAspect(boolean t) {
+ mFixedAspect = t;
+ }
class Panel {
private final View mView;
@@ -301,6 +308,7 @@ public class PanelController implements OnClickListener {
private final HashMap<View, Panel> mPanels = new HashMap<View, Panel>();
private final HashMap<View, ViewType> mViews = new HashMap<View, ViewType>();
+ private final HashMap<String, ImageFilter> mFilters = new HashMap<String, ImageFilter>();
private final Vector<View> mImageViews = new Vector<View>();
private View mCurrentPanel = null;
private View mRowPanel = null;
@@ -334,6 +342,10 @@ public class PanelController implements OnClickListener {
mViews.put(component, new ViewType(component, COMPONENT));
}
+ public void addFilter(ImageFilter filter) {
+ mFilters.put(filter.getName(), filter);
+ }
+
public void addImageView(View view) {
mImageViews.add(view);
ImageShow imageShow = (ImageShow) view;
@@ -487,60 +499,21 @@ public class PanelController implements OnClickListener {
filter = copy.getFilter(name);
}
- if (filter == null && name.equalsIgnoreCase(
- mCurrentImage.getContext().getString(R.string.curvesRGB))) {
- filter = setImagePreset(new ImageFilterCurves(), name);
- }
- if (filter == null && name.equalsIgnoreCase(
- mCurrentImage.getContext().getString(R.string.tinyplanet))) {
- filter = setImagePreset(new ImageFilterTinyPlanet(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.vignette))) {
- filter = setImagePreset(new ImageFilterVignette(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.sharpness))) {
- filter = setImagePreset(new ImageFilterSharpen(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.contrast))) {
- filter = setImagePreset(new ImageFilterContrast(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.saturation))) {
- filter = setImagePreset(new ImageFilterSaturated(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.bwfilter))) {
- filter = setImagePreset(new ImageFilterBwFilter(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.hue))) {
- filter = setImagePreset(new ImageFilterHue(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.exposure))) {
- filter = setImagePreset(new ImageFilterExposure(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.vibrance))) {
- filter = setImagePreset(new ImageFilterVibrance(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(
- R.string.shadow_recovery))) {
- filter = setImagePreset(new ImageFilterShadows(), name);
- }
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.redeye))) {
- filter = setImagePreset(new ImageFilterRedEye(), name);
+ if (filter == null) {
+ ImageFilter filterInstance = mFilters.get(name);
+ if (filterInstance != null) {
+ try {
+ ImageFilter newFilter = filterInstance.clone();
+ newFilter.reset();
+ filter = setImagePreset(newFilter, name);
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ }
}
- if (filter == null
- && name.equalsIgnoreCase(mCurrentImage.getContext().getString(R.string.wbalance))) {
- filter = setImagePreset(new ImageFilterWBalance(), name);
+ if (filter != null) {
+ mMasterImage.setCurrentFilter(filter);
}
- mMasterImage.setCurrentFilter(filter);
}
private void showCurvesPopupMenu(final ImageCurves curves, final FramedTextButton anchor) {
@@ -597,6 +570,27 @@ public class PanelController implements OnClickListener {
}
mUtilityPanel.hideAspectButtons();
mUtilityPanel.hideCurvesButtons();
+
+ if (view instanceof ImageSmallFilter) {
+ ImageSmallFilter component = (ImageSmallFilter) view;
+ ImageFilter filter = component.getImageFilter();
+ if (filter.getEditingViewId() != 0) {
+ mCurrentImage = showImageView(filter.getEditingViewId());
+ mCurrentImage.setShowControls(filter.showEditingControls());
+ String ename = mCurrentImage.getContext().getString(filter.getTextId());
+ mUtilityPanel.setEffectName(ename);
+ if (view.getId() == R.id.curvesButtonRGB) {
+ // TODO: delegate to the filter / editing view the management of the
+ // panel accessory view
+ mUtilityPanel.showCurvesButtons();
+ }
+ mUtilityPanel.setShowParameter(filter.showParameterValue());
+ ensureFilter(ename);
+ mCurrentImage.select();
+ }
+ return;
+ }
+
switch (view.getId()) {
case R.id.tinyplanetButton: {
mCurrentImage = showImageView(R.id.imageTinyPlanet).setShowControls(true);
@@ -620,11 +614,13 @@ public class PanelController implements OnClickListener {
String ename = mCurrentImage.getContext().getString(R.string.crop);
mUtilityPanel.setEffectName(ename);
mUtilityPanel.setShowParameter(false);
- if (mCurrentImage instanceof ImageCrop && mUtilityPanel.firstTimeCropDisplayed){
- ((ImageCrop) mCurrentImage).applyClear();
+ if (mCurrentImage instanceof ImageCrop && mUtilityPanel.firstTimeCropDisplayed) {
+ ((ImageCrop) mCurrentImage).clear();
mUtilityPanel.firstTimeCropDisplayed = false;
}
- mUtilityPanel.showAspectButtons();
+ if (!mFixedAspect) {
+ mUtilityPanel.showAspectButtons();
+ }
break;
}
case R.id.rotateButton: {
@@ -640,89 +636,8 @@ public class PanelController implements OnClickListener {
mUtilityPanel.setShowParameter(false);
break;
}
- case R.id.vignetteButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.vignette);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
- case R.id.curvesButtonRGB: {
- ImageCurves curves = (ImageCurves) showImageView(R.id.imageCurves);
- String ename = curves.getContext().getString(R.string.curvesRGB);
- mUtilityPanel.setEffectName(ename);
- mUtilityPanel.setShowParameter(false);
- mUtilityPanel.showCurvesButtons();
- mCurrentImage = curves;
- ensureFilter(ename);
- break;
- }
- case R.id.sharpenButton: {
- mCurrentImage = showImageView(R.id.imageZoom).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.sharpness);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
- case R.id.contrastButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.contrast);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
- case R.id.saturationButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.saturation);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- 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;
- }
- case R.id.wbalanceButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(false);
- String ename = mCurrentImage.getContext().getString(R.string.wbalance);
- mUtilityPanel.setEffectName(ename);
- mUtilityPanel.setShowParameter(false);
- ensureFilter(ename);
- break;
- }
- case R.id.hueButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.hue);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
- case R.id.exposureButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.exposure);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
- case R.id.vibranceButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.vibrance);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
- case R.id.shadowRecoveryButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.shadow_recovery);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
case R.id.redEyeButton: {
- mCurrentImage = showImageView(R.id.imageShow).setShowControls(true);
+ mCurrentImage = showImageView(R.id.imageRedEyes).setShowControls(true);
String ename = mCurrentImage.getContext().getString(R.string.redeye);
mUtilityPanel.setEffectName(ename);
ensureFilter(ename);