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.java232
1 files changed, 87 insertions, 145 deletions
diff --git a/src/com/android/gallery3d/filtershow/PanelController.java b/src/com/android/gallery3d/filtershow/PanelController.java
index 03a9d8bd5..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;
@@ -41,8 +42,8 @@ import com.android.gallery3d.filtershow.filters.ImageFilterVibrance;
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.ImageGeometry;
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 +58,12 @@ public class PanelController implements OnClickListener {
private static int HORIZONTAL_MOVE = 1;
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;
@@ -158,38 +165,52 @@ public class PanelController implements OnClickListener {
ImageCrop imageCrop = (ImageCrop) mCurrentImage;
switch (itemId) {
case R.id.crop_menu_1to1: {
- button.setText(mContext.getString(R.string.aspect1to1_effect));
+ String t = mContext.getString(R.string.aspect1to1_effect);
+ button.setText(t);
imageCrop.apply(1, 1);
+ imageCrop.setAspectString(t);
break;
}
case R.id.crop_menu_4to3: {
- button.setText(mContext.getString(R.string.aspect4to3_effect));
+ String t = mContext.getString(R.string.aspect4to3_effect);
+ button.setText(t);
imageCrop.apply(4, 3);
+ imageCrop.setAspectString(t);
break;
}
case R.id.crop_menu_3to4: {
- button.setText(mContext.getString(R.string.aspect3to4_effect));
+ String t = mContext.getString(R.string.aspect3to4_effect);
+ button.setText(t);
imageCrop.apply(3, 4);
+ imageCrop.setAspectString(t);
break;
}
case R.id.crop_menu_5to7: {
- button.setText(mContext.getString(R.string.aspect5to7_effect));
+ String t = mContext.getString(R.string.aspect5to7_effect);
+ button.setText(t);
imageCrop.apply(5, 7);
+ imageCrop.setAspectString(t);
break;
}
case R.id.crop_menu_7to5: {
- button.setText(mContext.getString(R.string.aspect7to5_effect));
+ String t = mContext.getString(R.string.aspect7to5_effect);
+ button.setText(t);
imageCrop.apply(7, 5);
+ imageCrop.setAspectString(t);
break;
}
case R.id.crop_menu_none: {
- button.setText(mContext.getString(R.string.aspectNone_effect));
+ String t = mContext.getString(R.string.aspectNone_effect);
+ button.setText(t);
imageCrop.applyClear();
+ imageCrop.setAspectString(t);
break;
}
case R.id.crop_menu_original: {
- button.setText(mContext.getString(R.string.aspectOriginal_effect));
+ String t = mContext.getString(R.string.aspectOriginal_effect);
+ button.setText(t);
imageCrop.applyOriginal();
+ imageCrop.setAspectString(t);
break;
}
}
@@ -287,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;
@@ -320,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;
@@ -332,6 +358,10 @@ public class PanelController implements OnClickListener {
mCurrentImage.resetParameter();
mCurrentImage.select();
}
+ if (mDisableFilterButtons) {
+ mActivity.enableFilterButtons();
+ mDisableFilterButtons = false;
+ }
}
public boolean onBackPressed() {
@@ -343,6 +373,11 @@ public class PanelController implements OnClickListener {
mMasterImage.onItemClick(position);
showPanel(mCurrentPanel);
mCurrentImage.select();
+ if (mDisableFilterButtons) {
+ mActivity.enableFilterButtons();
+ mActivity.resetHistory();
+ mDisableFilterButtons = false;
+ }
return false;
}
@@ -464,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) {
@@ -574,12 +570,37 @@ 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);
String ename = mCurrentImage.getContext().getString(R.string.tinyplanet);
mUtilityPanel.setEffectName(ename);
ensureFilter(ename);
+ if (!mDisableFilterButtons) {
+ mActivity.disableFilterButtons();
+ mDisableFilterButtons = true;
+ }
break;
}
case R.id.straightenButton: {
@@ -593,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).applyOriginal();
+ if (mCurrentImage instanceof ImageCrop && mUtilityPanel.firstTimeCropDisplayed) {
+ ((ImageCrop) mCurrentImage).clear();
mUtilityPanel.firstTimeCropDisplayed = false;
}
- mUtilityPanel.showAspectButtons();
+ if (!mFixedAspect) {
+ mUtilityPanel.showAspectButtons();
+ }
break;
}
case R.id.rotateButton: {
@@ -613,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);