diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/PanelController.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/PanelController.java | 189 |
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); |