OSDN Git Service

ImagePreset cleanup
authornicolasroard <nicolasroard@google.com>
Wed, 26 Jun 2013 23:56:31 +0000 (16:56 -0700)
committernicolasroard <nicolasroard@google.com>
Thu, 27 Jun 2013 17:40:59 +0000 (10:40 -0700)
Get rid of remaining ivars related to history

Change-Id: Ic106ef6a96f4727c6dd46d7be3d059bdc42e5a2a

12 files changed:
src/com/android/gallery3d/filtershow/FilterShowActivity.java
src/com/android/gallery3d/filtershow/HistoryAdapter.java
src/com/android/gallery3d/filtershow/HistoryItem.java [new file with mode: 0644]
src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
src/com/android/gallery3d/filtershow/category/CategoryAdapter.java
src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java
src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java
src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java
src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java
src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java
src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
src/com/android/gallery3d/filtershow/presets/ImagePreset.java

index cd88e37..a6b57a4 100644 (file)
@@ -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();
     }
index 79460be..a6cd1a9 100644 (file)
@@ -33,7 +33,7 @@ import com.android.gallery3d.filtershow.presets.ImagePreset;
 
 import java.util.Vector;
 
-public class HistoryAdapter extends ArrayAdapter<ImagePreset> {
+public class HistoryAdapter extends ArrayAdapter<HistoryItem> {
     private static final String LOGTAG = "HistoryAdapter";
     private int mCurrentPresetPosition = 0;
     private String mBorders = null;
@@ -115,33 +115,33 @@ public class HistoryAdapter extends ArrayAdapter<ImagePreset> {
         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<ImagePreset> oldItems = new Vector<ImagePreset>();
+            Vector<HistoryItem> oldItems = new Vector<HistoryItem>();
             for (int i = mCurrentPresetPosition; i < getCount(); i++) {
                 oldItems.add(getItem(i));
             }
@@ -186,14 +186,15 @@ public class HistoryAdapter extends ArrayAdapter<ImagePreset> {
             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 (file)
index 0000000..7b18609
--- /dev/null
@@ -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;
+    }
+
+}
index 1ea40f2..494c0a6 100644 (file)
@@ -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);
                 }
index ba0ff33..f08699d 100644 (file)
@@ -67,18 +67,8 @@ public class CategoryAdapter extends ArrayAdapter<Action> {
 
     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
index f6271c6..5094563 100644 (file)
@@ -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;
index 15197b0..0054af3 100644 (file)
@@ -44,11 +44,6 @@ public class ImageFlip extends ImageGeometry {
     }
 
     @Override
-    public String getName() {
-        return getContext().getString(R.string.mirror);
-    }
-
-    @Override
     protected void setActionDown(float x, float y) {
         super.setActionDown(x, y);
     }
index 9fa8019..666186d 100644 (file)
@@ -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();
index ab8023e..b3c23cd 100644 (file)
@@ -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() {
index 5f906ea..17df2b7 100644 (file)
@@ -43,11 +43,6 @@ public class ImageStraighten extends ImageGeometry {
     }
 
     @Override
-    public String getName() {
-        return getContext().getString(R.string.straighten);
-    }
-
-    @Override
     protected void setActionDown(float x, float y) {
         super.setActionDown(x, y);
         mBaseAngle = mAngle = getLocalStraighten();
index 839f638..f2e9b63 100644 (file)
@@ -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() {
index 1c44630..9c5e2ae 100644 (file)
@@ -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<FilterRepresentation> mFilters = new Vector<FilterRepresentation>();
 
-    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<ImageFilter> getUsedFilters(BaseFiltersManager filtersManager) {
         Vector<ImageFilter> usedFilters = new Vector<ImageFilter>();
         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();