From 06ed7651d1022d7649de94265f1a382feb791084 Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Wed, 26 Jun 2013 16:56:31 -0700 Subject: ImagePreset cleanup Get rid of remaining ivars related to history Change-Id: Ic106ef6a96f4727c6dd46d7be3d059bdc42e5a2a --- .../gallery3d/filtershow/FilterShowActivity.java | 17 +++--- .../gallery3d/filtershow/HistoryAdapter.java | 23 ++++---- .../android/gallery3d/filtershow/HistoryItem.java | 57 ++++++++++++++++++ .../filtershow/cache/CachingPipeline.java | 2 - .../filtershow/category/CategoryAdapter.java | 14 +---- .../gallery3d/filtershow/imageshow/ImageCrop.java | 5 -- .../gallery3d/filtershow/imageshow/ImageFlip.java | 5 -- .../filtershow/imageshow/ImageGeometry.java | 24 +++++--- .../filtershow/imageshow/ImageRotate.java | 5 -- .../filtershow/imageshow/ImageStraighten.java | 5 -- .../filtershow/imageshow/MasterImage.java | 37 ++++-------- .../gallery3d/filtershow/presets/ImagePreset.java | 68 ---------------------- 12 files changed, 105 insertions(+), 157 deletions(-) create mode 100644 src/com/android/gallery3d/filtershow/HistoryItem.java diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index cd88e3759..a6b57a49f 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -427,7 +427,7 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL ImagePreset oldPreset = MasterImage.getImage().getPreset(); ImagePreset copy = new ImagePreset(oldPreset); copy.removeFilter(filterRepresentation); - MasterImage.getImage().setPreset(copy, true); + MasterImage.getImage().setPreset(copy, copy.getLastRepresentation(), true); if (MasterImage.getImage().getCurrentFilterRepresentation() == filterRepresentation) { FilterRepresentation lastRepresentation = copy.getLastRepresentation(); MasterImage.getImage().setCurrentFilterRepresentation(lastRepresentation); @@ -449,12 +449,11 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL } else { if (filterRepresentation.allowsSingleInstanceOnly()) { representation.updateTempParametersFrom(filterRepresentation); - copy.setHistoryName(filterRepresentation.getName()); representation.synchronizeRepresentation(); } filterRepresentation = representation; } - MasterImage.getImage().setPreset(copy, true); + MasterImage.getImage().setPreset(copy, filterRepresentation, true); MasterImage.getImage().setCurrentFilterRepresentation(filterRepresentation); } @@ -558,7 +557,8 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL mLoadBitmapTask = null; if (mOriginalPreset != null) { - MasterImage.getImage().setPreset(mOriginalPreset, true); + MasterImage.getImage().setPreset(mOriginalPreset, + mOriginalPreset.getLastRepresentation(), true); mOriginalPreset = null; } @@ -822,10 +822,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL public void setDefaultPreset() { // Default preset (original) - ImagePreset preset = new ImagePreset(getString(R.string.history_original)); // empty + ImagePreset preset = new ImagePreset(); // empty preset.setImageLoader(mImageLoader); - mMasterImage.setPreset(preset, true); + mMasterImage.setPreset(preset, preset.getLastRepresentation(), true); } // ////////////////////////////////////////////////////////////////////////////// @@ -905,8 +905,9 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL void resetHistory() { HistoryAdapter adapter = mMasterImage.getHistory(); adapter.reset(); - ImagePreset original = new ImagePreset(adapter.getItem(0)); - mMasterImage.setPreset(original, true); + HistoryItem historyItem = adapter.getItem(0); + ImagePreset original = new ImagePreset(historyItem.getImagePreset()); + mMasterImage.setPreset(original, historyItem.getFilterRepresentation(), true); invalidateViews(); backToMain(); } diff --git a/src/com/android/gallery3d/filtershow/HistoryAdapter.java b/src/com/android/gallery3d/filtershow/HistoryAdapter.java index 79460be4d..a6cd1a92c 100644 --- a/src/com/android/gallery3d/filtershow/HistoryAdapter.java +++ b/src/com/android/gallery3d/filtershow/HistoryAdapter.java @@ -33,7 +33,7 @@ import com.android.gallery3d.filtershow.presets.ImagePreset; import java.util.Vector; -public class HistoryAdapter extends ArrayAdapter { +public class HistoryAdapter extends ArrayAdapter { private static final String LOGTAG = "HistoryAdapter"; private int mCurrentPresetPosition = 0; private String mBorders = null; @@ -115,33 +115,33 @@ public class HistoryAdapter extends ArrayAdapter { if (getCount() == 0) { return; } - ImagePreset first = getItem(getCount() - 1); + HistoryItem first = getItem(getCount() - 1); clear(); addHistoryItem(first); updateMenuItems(); } - public ImagePreset getLast() { + public HistoryItem getLast() { if (getCount() == 0) { return null; } return getItem(0); } - public ImagePreset getCurrent() { + public HistoryItem getCurrent() { return getItem(mCurrentPresetPosition); } - public void addHistoryItem(ImagePreset preset) { + public void addHistoryItem(HistoryItem preset) { insert(preset, 0); updateMenuItems(); } @Override - public void insert(ImagePreset preset, int position) { + public void insert(HistoryItem preset, int position) { if (mCurrentPresetPosition != 0) { // in this case, let's discount the presets before the current one - Vector oldItems = new Vector(); + Vector oldItems = new Vector(); for (int i = mCurrentPresetPosition; i < getCount(); i++) { oldItems.add(getItem(i)); } @@ -186,14 +186,15 @@ public class HistoryAdapter extends ArrayAdapter { view = inflater.inflate(R.layout.filtershow_history_operation_row, null); } - ImagePreset item = getItem(position); + HistoryItem historyItem = getItem(position); + ImagePreset item = historyItem.getImagePreset(); if (item != null) { TextView itemView = (TextView) view.findViewById(R.id.rowTextView); - if (itemView != null) { - itemView.setText(item.historyName()); + if (itemView != null && historyItem.getFilterRepresentation() != null) { + itemView.setText(historyItem.getFilterRepresentation().getName()); } ImageView preview = (ImageView) view.findViewById(R.id.preview); - Bitmap bmp = item.getPreviewImage(); + Bitmap bmp = historyItem.getPreviewImage(); if (position == getCount()-1 && mOriginalBitmap != null) { bmp = mOriginalBitmap; } diff --git a/src/com/android/gallery3d/filtershow/HistoryItem.java b/src/com/android/gallery3d/filtershow/HistoryItem.java new file mode 100644 index 000000000..7b1860903 --- /dev/null +++ b/src/com/android/gallery3d/filtershow/HistoryItem.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.gallery3d.filtershow; + +import android.graphics.Bitmap; +import android.util.Log; +import com.android.gallery3d.filtershow.filters.FilterRepresentation; +import com.android.gallery3d.filtershow.presets.ImagePreset; + +public class HistoryItem { + private static final String LOGTAG = "HistoryItem"; + private ImagePreset mImagePreset; + private FilterRepresentation mFilterRepresentation; + private Bitmap mPreviewImage; + + public HistoryItem(ImagePreset preset, FilterRepresentation representation) { + mImagePreset = new ImagePreset(preset); + try { + if (representation != null) { + mFilterRepresentation = representation.clone(); + } + } catch (CloneNotSupportedException e) { + Log.e(LOGTAG, "clone not supported", e); + } + } + + public ImagePreset getImagePreset() { + return mImagePreset; + } + + public FilterRepresentation getFilterRepresentation() { + return mFilterRepresentation; + } + + public Bitmap getPreviewImage() { + return mPreviewImage; + } + + public void setPreviewImage(Bitmap previewImage) { + mPreviewImage = previewImage; + } + +} diff --git a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java index 1ea40f202..494c0a636 100644 --- a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java +++ b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java @@ -287,8 +287,6 @@ public class CachingPipeline implements PipelineInterface { if (request.getType() == RenderingRequest.ICON_RENDERING) { mEnvironment.setQuality(FilterEnvironment.QUALITY_ICON); - } else if (request.getType() == RenderingRequest.STYLE_ICON_RENDERING) { - mEnvironment.setQuality(ImagePreset.STYLE_ICON); } else { mEnvironment.setQuality(FilterEnvironment.QUALITY_PREVIEW); } diff --git a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java index ba0ff33dd..f08699dee 100644 --- a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java +++ b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java @@ -67,18 +67,8 @@ public class CategoryAdapter extends ArrayAdapter { public void initializeSelection(int category) { mCategory = category; - if (category == MainPanel.LOOKS || category == MainPanel.BORDERS) { - ImagePreset preset = MasterImage.getImage().getPreset(); - if (preset != null) { - for (int i = 0; i < getCount(); i++) { - if (preset.historyName().equals(getItem(i).getRepresentation().getName())) { - mSelectedPosition = i; - } - } - } - } else { - mSelectedPosition = -1; - } + // TODO: fix this + mSelectedPosition = -1; } @Override diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java index f6271c61a..50945636d 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java @@ -111,11 +111,6 @@ public class ImageCrop extends ImageGeometry { indicatorSize = (int) resources.getDimension(R.dimen.crop_indicator_size); } - @Override - public String getName() { - return getContext().getString(R.string.crop); - } - private void swapAspect() { if (mDoingCropIntentAction) { return; diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java b/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java index 15197b055..0054af3f9 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java @@ -43,11 +43,6 @@ public class ImageFlip extends ImageGeometry { super(context); } - @Override - public String getName() { - return getContext().getString(R.string.mirror); - } - @Override protected void setActionDown(float x, float y) { super.setActionDown(x, y); diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java b/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java index 9fa80195a..666186d81 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java @@ -29,6 +29,8 @@ import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; +import com.android.gallery3d.filtershow.HistoryItem; +import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.imageshow.GeometryMetadata.FLIP; import com.android.gallery3d.filtershow.presets.ImagePreset; @@ -314,22 +316,26 @@ public abstract class ImageGeometry extends ImageShow { mMode = MODES.NONE; } - public String getName() { - return "Geometry"; - } - public void saveAndSetPreset() { - ImagePreset lastHistoryItem = MasterImage.getImage().getHistory().getLast(); - if (lastHistoryItem != null && lastHistoryItem.historyName().equalsIgnoreCase(getName())) { + FilterRepresentation lastAction = null; + HistoryItem historyItem = MasterImage.getImage().getHistory().getLast(); + if (historyItem != null) { + lastAction = historyItem.getFilterRepresentation(); + } + + if (lastAction != null + && lastAction.getSerializationName().equalsIgnoreCase( + GeometryMetadata.SERIALIZATION_NAME)) { getImagePreset().setGeometry(mLocalGeometry); resetImageCaches(this); } else { if (mLocalGeometry.hasModifications()) { ImagePreset copy = new ImagePreset(getImagePreset()); copy.setGeometry(mLocalGeometry); - copy.setHistoryName(getName()); - copy.setIsFx(false); - MasterImage.getImage().setPreset(copy, true); + // TODO: we should have multiple filter representations for each + // of the different geometry operations we have, otherwise we cannot + // differentiate them in the history/state + MasterImage.getImage().setPreset(copy, copy.getGeometry(), true); } } MasterImage.getImage().notifyGeometryChange(); diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java b/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java index ab8023e02..b3c23cdb0 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java @@ -42,11 +42,6 @@ public class ImageRotate extends ImageGeometry { super(context); } - @Override - public String getName() { - return getContext().getString(R.string.rotate); - } - private static final Paint gPaint = new Paint(); private void computeValue() { diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java b/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java index 5f906ea8d..17df2b703 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java @@ -42,11 +42,6 @@ public class ImageStraighten extends ImageGeometry { super(context, attrs); } - @Override - public String getName() { - return getContext().getString(R.string.straighten); - } - @Override protected void setActionDown(float x, float y) { super.setActionDown(x, y); diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index 839f638c1..f2e9b6308 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -23,6 +23,7 @@ import android.os.Message; import android.util.Log; import com.android.gallery3d.filtershow.FilterShowActivity; import com.android.gallery3d.filtershow.HistoryAdapter; +import com.android.gallery3d.filtershow.HistoryItem; import com.android.gallery3d.filtershow.cache.*; import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.filters.ImageFilter; @@ -139,7 +140,9 @@ public class MasterImage implements RenderingRequestCaller { return mFiltersOnlyPreset; } - public synchronized void setPreset(ImagePreset preset, boolean addToHistory) { + public synchronized void setPreset(ImagePreset preset, + FilterRepresentation change, + boolean addToHistory) { if (DEBUG) { preset.showFilters(); } @@ -148,7 +151,8 @@ public class MasterImage implements RenderingRequestCaller { setGeometry(); mPreset.fillImageStateAdapter(mState); if (addToHistory) { - mHistory.addHistoryItem(mPreset); + HistoryItem historyItem = new HistoryItem(mPreset, change); + mHistory.addHistoryItem(historyItem); } updatePresets(true); GeometryMetadata geo = mPreset.getGeometry(); @@ -158,23 +162,6 @@ public class MasterImage implements RenderingRequestCaller { mPreviousGeometry = new GeometryMetadata(geo); } - private void renderHistoryPreview() { - ImagePreset historyPreset = mPreset; - if (historyPreset != null) { - Bitmap preview = mLoader.getOriginalBitmapSmall(); - if (preview != null) { - float s = Math.min(preview.getWidth(), preview.getHeight()); - float f = sHistoryPreviewSize / s; - int w = (int) (preview.getWidth() * f); - int h = (int) (preview.getHeight() * f); - Bitmap historyPreview = Bitmap.createScaledBitmap(preview, w, h, true); - historyPreset.setPreviewImage(historyPreview); - RenderingRequest.post(historyPreview, - historyPreset, RenderingRequest.ICON_RENDERING, this); - } - } - } - private void setGeometry() { Bitmap image = mLoader.getOriginalBitmapLarge(); if (image == null) { @@ -194,8 +181,11 @@ public class MasterImage implements RenderingRequestCaller { } public void onHistoryItemClick(int position) { - setPreset(new ImagePreset(mHistory.getItem(position)), false); + HistoryItem historyItem = mHistory.getItem(position); // We need a copy from the history + ImagePreset newPreset = new ImagePreset(historyItem.getImagePreset()); + // don't need to add it to the history + setPreset(newPreset, historyItem.getFilterRepresentation(), false); mHistory.setCurrentPreset(position); } @@ -417,13 +407,6 @@ public class MasterImage implements RenderingRequestCaller { mHighresBitmap = request.getBitmap(); notifyObservers(); } - - if (request.getType() == RenderingRequest.ICON_RENDERING) { - // History preview images - ImagePreset preset = request.getOriginalImagePreset(); - preset.setPreviewImage(request.getBitmap()); - mHistory.notifyDataSetChanged(); - } } public static void reset() { diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index 1c4463062..9c5e2ae65 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -49,39 +49,20 @@ public class ImagePreset { private static final String LOGTAG = "ImagePreset"; - public static final int STYLE_ICON = 3; - public static final String PRESET_NAME = "PresetName"; - private ImageLoader mImageLoader = null; private Vector mFilters = new Vector(); - protected String mName = "Original"; - private String mHistoryName = "Original"; - protected boolean mIsFxPreset = false; - private boolean mDoApplyGeometry = true; private boolean mDoApplyFilters = true; private boolean mPartialRendering = false; private Rect mPartialRenderingBounds; private static final boolean DEBUG = false; - private Bitmap mPreviewImage; public ImagePreset() { } - public ImagePreset(String historyName) { - setHistoryName(historyName); - } - - public ImagePreset(ImagePreset source, String historyName) { - this(source); - if (historyName != null) { - setHistoryName(historyName); - } - } - public ImagePreset(ImagePreset source) { try { for (int i = 0; i < source.mFilters.size(); i++) { @@ -101,11 +82,7 @@ public class ImagePreset { } catch (java.lang.CloneNotSupportedException e) { Log.v(LOGTAG, "Exception trying to clone: " + e); } - mName = source.name(); - mHistoryName = source.name(); - mIsFxPreset = source.isFx(); mImageLoader = source.getImageLoader(); - mPreviewImage = source.getPreviewImage(); } public FilterRepresentation getFilterRepresentation(int position) { @@ -244,23 +221,6 @@ public class ImagePreset { } } - public boolean isFx() { - return mIsFxPreset; - } - - public void setIsFx(boolean value) { - mIsFxPreset = value; - } - - public void setName(String name) { - mName = name; - mHistoryName = name; - } - - public void setHistoryName(String name) { - mHistoryName = name; - } - public ImageLoader getImageLoader() { return mImageLoader; } @@ -294,10 +254,6 @@ public class ImagePreset { return false; } - if (!mName.equalsIgnoreCase(preset.name())) { - return false; - } - if (mDoApplyGeometry != preset.mDoApplyGeometry) { return false; } @@ -351,14 +307,6 @@ public class ImagePreset { return preset.mFilters.size(); } - public String name() { - return mName; - } - - public String historyName() { - return mHistoryName; - } - public void showFilters() { Log.v(LOGTAG, "\\\\\\ showFilters -- " + mFilters.size() + " filters"); int n = 0; @@ -394,7 +342,6 @@ public class ImagePreset { } } } - setHistoryName("Remove"); } public void addFilter(FilterRepresentation representation) { @@ -405,7 +352,6 @@ public class ImagePreset { if (representation.getFilterType() == FilterRepresentation.TYPE_BORDER) { removeFilter(representation); mFilters.add(representation); - setHistoryName(representation.getName()); } else if (representation.getFilterType() == FilterRepresentation.TYPE_FX) { boolean found = false; for (int i = 0; i < mFilters.size(); i++) { @@ -419,17 +365,14 @@ public class ImagePreset { if (type == FilterRepresentation.TYPE_FX) { mFilters.remove(i); mFilters.add(i, representation); - setHistoryName(representation.getName()); found = true; } } if (!found) { mFilters.add(representation); - setHistoryName(representation.getName()); } } else { mFilters.add(representation); - setHistoryName(representation.getName()); } } @@ -618,14 +561,6 @@ public class ImagePreset { return mPartialRenderingBounds; } - public Bitmap getPreviewImage() { - return mPreviewImage; - } - - public void setPreviewImage(Bitmap previewImage) { - mPreviewImage = previewImage; - } - public Vector getUsedFilters(BaseFiltersManager filtersManager) { Vector usedFilters = new Vector(); for (int i = 0; i < mFilters.size(); i++) { @@ -652,7 +587,6 @@ public class ImagePreset { int numFilters = mFilters.size(); try { writer.beginObject(); - writer.name(PRESET_NAME).value(name); GeometryMetadata geoData = getGeometry(); writer.name(geoData.getSerializationName()); writer.beginObject(); @@ -719,8 +653,6 @@ public class ImagePreset { */ public boolean readJson(JsonReader sreader) throws IOException { sreader.beginObject(); - sreader.nextName(); - mName = sreader.nextString(); while (sreader.hasNext()) { String name = sreader.nextName(); -- cgit v1.2.3