OSDN Git Service

refactor quality to be int
authorJohn Hoford <hoford@google.com>
Tue, 12 Feb 2013 19:55:50 +0000 (11:55 -0800)
committerJohn Hoford <hoford@google.com>
Tue, 12 Feb 2013 20:11:35 +0000 (12:11 -0800)
Change-Id: I0470abdbe75cf48c5228e80b9dc060ae6f3d8bbd

35 files changed:
res/menu/filtershow_menu_draw.xml
res/values/filtershow_strings.xml
src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
src/com/android/gallery3d/filtershow/cache/ImageLoader.java
src/com/android/gallery3d/filtershow/editors/EditorDraw.java
src/com/android/gallery3d/filtershow/filters/FilterDrawRepresentation.java
src/com/android/gallery3d/filtershow/filters/ImageFilter.java
src/com/android/gallery3d/filtershow/filters/ImageFilterBorder.java
src/com/android/gallery3d/filtershow/filters/ImageFilterBwFilter.java
src/com/android/gallery3d/filtershow/filters/ImageFilterContrast.java
src/com/android/gallery3d/filtershow/filters/ImageFilterCurves.java
src/com/android/gallery3d/filtershow/filters/ImageFilterDownsample.java
src/com/android/gallery3d/filtershow/filters/ImageFilterDraw.java
src/com/android/gallery3d/filtershow/filters/ImageFilterEdge.java
src/com/android/gallery3d/filtershow/filters/ImageFilterExposure.java
src/com/android/gallery3d/filtershow/filters/ImageFilterFx.java
src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java
src/com/android/gallery3d/filtershow/filters/ImageFilterHue.java
src/com/android/gallery3d/filtershow/filters/ImageFilterKMeans.java
src/com/android/gallery3d/filtershow/filters/ImageFilterNegative.java
src/com/android/gallery3d/filtershow/filters/ImageFilterParametricBorder.java
src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
src/com/android/gallery3d/filtershow/filters/ImageFilterRedEye.java
src/com/android/gallery3d/filtershow/filters/ImageFilterSaturated.java
src/com/android/gallery3d/filtershow/filters/ImageFilterShadows.java
src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
src/com/android/gallery3d/filtershow/filters/ImageFilterStraighten.java
src/com/android/gallery3d/filtershow/filters/ImageFilterTinyPlanet.java
src/com/android/gallery3d/filtershow/filters/ImageFilterVibrance.java
src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
src/com/android/gallery3d/filtershow/filters/ImageFilterWBalance.java
src/com/android/gallery3d/filtershow/filters/SimpleImageFilter.java
src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java
src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java
src/com/android/gallery3d/filtershow/presets/ImagePreset.java

index 9455f70..2960c1f 100644 (file)
@@ -33,6 +33,9 @@
         <item
             android:id="@+id/draw_menu_color"
             android:title="@string/draw_color"/>
+        <item
+            android:id="@+id/draw_menu_clear"
+            android:title="@string/draw_clear"/>
     </group>
 
 </menu>
\ No newline at end of file
index cf6e80d..66fb390 100644 (file)
     <string name="draw_style_brush_spatter">Marker</string>
     <!--  Label for the Spatter brush style of drawing in [CHAR LIMIT=14] -->
     <string name="draw_style_brush_marker">Spatter</string>
+    <!--  Label for the removing drawing from screen [CHAR LIMIT=14] -->
+    <string name="draw_clear">Clear</string>
 
     <!--  Label for the select the color [CHAR LIMIT=30] -->
     <string name="color_pick_select">Choose custom color</string>
index 4f5cfc4..b51d8b0 100644 (file)
@@ -190,9 +190,9 @@ public class FilteringPipeline implements Handler.Callback {
     private void setPresetParameters(ImagePreset preset) {
         preset.setScaleFactor(mPreviewScaleFactor);
         if (mPreviewScaleFactor < 1.0f) {
-            preset.setIsHighQuality(false);
+            preset.setQuality(ImagePreset.QUALITY_PREVIEW);
         } else {
-            preset.setIsHighQuality(true);
+            preset.setQuality(ImagePreset.QUALITY_PREVIEW);
         }
     }
 
index b47d13b..908100a 100644 (file)
@@ -392,7 +392,7 @@ public class ImageLoader {
 
     public void saveImage(ImagePreset preset, final FilterShowActivity filterShowActivity,
             File destination) {
-        preset.setIsHighQuality(true);
+        preset.setQuality(ImagePreset.QUALITY_FINAL);
         preset.setScaleFactor(1.0f);
         new SaveCopyTask(mContext, mUri, destination, new SaveCopyTask.Callback() {
 
@@ -432,7 +432,7 @@ public class ImageLoader {
 
     public void returnFilteredResult(ImagePreset preset,
             final FilterShowActivity filterShowActivity) {
-        preset.setIsHighQuality(true);
+        preset.setQuality(ImagePreset.QUALITY_FINAL);
         preset.setScaleFactor(1.0f);
 
         BitmapTask.Callbacks<ImagePreset> cb = new BitmapTask.Callbacks<ImagePreset>() {
index 128af8e..907d108 100644 (file)
@@ -120,6 +120,10 @@ public class EditorDraw extends Editor {
                 } else if (item.getItemId() == R.id.draw_menu_style_line) {
                     ImageDraw idraw = (ImageDraw) mImageShow;
                     idraw.setStyle(ImageFilterDraw.SIMPLE_STYLE);
+                } else if (item.getItemId() == R.id.draw_menu_clear) {
+                    FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation();
+                    drawRep.clear();
+                    commitLocalRepresentation();
                 }
                 mView.invalidate();
                 return true;
index b8fa0a3..b2e1ed3 100644 (file)
@@ -17,6 +17,8 @@
 package com.android.gallery3d.filtershow.filters;
 
 import android.graphics.Path;
+import android.util.Log;
+
 import com.android.gallery3d.R;
 import com.android.gallery3d.filtershow.editors.EditorDraw;
 
@@ -30,7 +32,7 @@ public class FilterDrawRepresentation extends FilterRepresentation {
         public Path mPath;
         public float mRadius;
         public int mColor;
-
+        public int noPoints = 0;
         @Override
         public String toString() {
             return "stroke(" + mType + ", path(" + (mPath) + "), " + mRadius + " , "
@@ -57,7 +59,8 @@ public class FilterDrawRepresentation extends FilterRepresentation {
     @Override
     public String toString() {
         return getName() + " : strokes=" + mDrawing.size()
-                + ((mCurrent == null) ? " no current " : ("current=" + mCurrent.mType));
+                + ((mCurrent == null) ? " no current "
+                        : ("draw=" + mCurrent.mType + " " + mCurrent.noPoints));
     }
 
     public Vector<StrokeData> getDrawing() {
@@ -95,6 +98,8 @@ public class FilterDrawRepresentation extends FilterRepresentation {
             } catch (CloneNotSupportedException e) {
                 e.printStackTrace();
             }
+        } else {
+            Log.v(LOGTAG, "cannot use parameters from " + a);
         }
     }
 
@@ -104,8 +109,18 @@ public class FilterDrawRepresentation extends FilterRepresentation {
             return false;
         }
         if (representation instanceof FilterDrawRepresentation) {
-            // FIXME!
-            return true;
+            FilterDrawRepresentation fdRep = (FilterDrawRepresentation) representation;
+            if (fdRep.mDrawing.size() != mDrawing.size())
+                return false;
+            if (fdRep.mCurrent == null && mCurrent.mPath == null) {
+                return true;
+            }
+            if (fdRep.mCurrent != null && mCurrent.mPath != null) {
+                if (fdRep.mCurrent.noPoints == mCurrent.noPoints) {
+                    return true;
+                }
+                return false;
+            }
         }
         return false;
     }
@@ -117,14 +132,17 @@ public class FilterDrawRepresentation extends FilterRepresentation {
         mCurrent.mType = type;
         mCurrent.mPath = new Path();
         mCurrent.mPath.moveTo(x, y);
+        mCurrent.noPoints = 0;
     }
 
     public void addPoint(float x, float y) {
+        mCurrent.noPoints++;
         mCurrent.mPath.lineTo(x, y);
     }
 
     public void endSection(float x, float y) {
         mCurrent.mPath.lineTo(x, y);
+        mCurrent.noPoints++;
         mDrawing.add(mCurrent);
         mCurrent = null;
     }
index d7a76d6..00499cb 100644 (file)
@@ -37,7 +37,7 @@ public class ImageFilter implements Cloneable {
         return mName;
     }
 
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         // do nothing here, subclasses will implement filtering here
         return bitmap;
     }
@@ -46,8 +46,8 @@ public class ImageFilter implements Cloneable {
      * Called on small bitmaps to create button icons for each filter.
      * Override this to provide filter-specific button icons.
      */
-    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
-        return apply(bitmap, scaleFactor, highQuality);
+    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) {
+        return apply(bitmap, scaleFactor, quality);
     }
 
     public ImagePreset getImagePreset() {
index 416af94..70e7f22 100644 (file)
@@ -63,7 +63,7 @@ public class ImageFilterBorder extends ImageFilter {
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null || getParameters().getDrawableResource() == 0) {
             return bitmap;
         }
@@ -73,7 +73,7 @@ public class ImageFilterBorder extends ImageFilter {
     }
 
     @Override
-    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null || getParameters().getDrawableResource() == 0) {
             return bitmap;
         }
index 3580dd6..c92ac01 100644 (file)
@@ -42,7 +42,7 @@ public class ImageFilterBwFilter extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, int r, int g, int b);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index e266426..36da68b 100644 (file)
@@ -38,7 +38,7 @@ public class ImageFilterContrast extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float strength);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index 4b65a00..aa4cf22 100644 (file)
@@ -55,7 +55,7 @@ public class ImageFilterCurves extends ImageFilter {
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (!mParameters.getSpline(Spline.RGB).isOriginal()) {
             int[] rgbGradient = new int[256];
             populateArray(rgbGradient, Spline.RGB);
index a53d2f3..9064673 100644 (file)
@@ -47,7 +47,7 @@ public class ImageFilterDownsample extends SimpleImageFilter {
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
@@ -79,7 +79,7 @@ public class ImageFilterDownsample extends SimpleImageFilter {
     }
 
     @Override
-    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) {
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
         Bitmap ret = Bitmap.createScaledBitmap(bitmap, w / ICON_DOWNSAMPLE_FRACTION, h
index d2b5507..9d22f7a 100644 (file)
@@ -32,6 +32,7 @@ import android.util.Log;
 import com.android.gallery3d.R;
 import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation.StrokeData;
 import com.android.gallery3d.filtershow.imageshow.MasterImage;
+import com.android.gallery3d.filtershow.presets.ImagePreset;
 
 import java.util.Vector;
 
@@ -85,7 +86,7 @@ public class ImageFilterDraw extends ImageFilter {
     public static interface DrawStyle {
         public void setType(byte type);
         public void paint(FilterDrawRepresentation.StrokeData sd, Canvas canvas, Matrix toScrMatrix,
-                boolean highQuality);
+                int quality);
     }
 
     class SimpleDraw implements DrawStyle {
@@ -98,7 +99,7 @@ public class ImageFilterDraw extends ImageFilter {
 
         @Override
         public void paint(FilterDrawRepresentation.StrokeData sd, Canvas canvas, Matrix toScrMatrix,
-                boolean highQuality) {
+                int quality) {
             if (sd == null) {
                 return;
             }
@@ -139,7 +140,7 @@ public class ImageFilterDraw extends ImageFilter {
 
         @Override
         public void paint(FilterDrawRepresentation.StrokeData sd, Canvas canvas, Matrix toScrMatrix,
-                boolean highQuality) {
+                int quality) {
             if (sd == null || sd.mPath == null) {
                 return;
             }
@@ -198,13 +199,13 @@ public class ImageFilterDraw extends ImageFilter {
     }
 
     void paint(FilterDrawRepresentation.StrokeData sd, Canvas canvas, Matrix toScrMatrix,
-            boolean highQuality) {
-        mDrawingsTypes[sd.mType].paint(sd, canvas, toScrMatrix, highQuality);
+            int quality) {
+        mDrawingsTypes[sd.mType].paint(sd, canvas, toScrMatrix, quality);
     }
 
-    public void drawData(Canvas canvas, Matrix originalRotateToScreen, boolean highQuality) {
+    public void drawData(Canvas canvas, Matrix originalRotateToScreen, int quality) {
         Paint paint = new Paint();
-        if (highQuality) {
+        if (quality == ImagePreset.QUALITY_FINAL) {
             paint.setAntiAlias(true);
         }
         paint.setStyle(Style.STROKE);
@@ -214,9 +215,9 @@ public class ImageFilterDraw extends ImageFilter {
         if (mParameters.getDrawing().isEmpty() && mParameters.getCurrentDrawing() == null) {
             return;
         }
-        if (highQuality) {
+        if (quality == ImagePreset.QUALITY_FINAL) {
             for (FilterDrawRepresentation.StrokeData strokeData : mParameters.getDrawing()) {
-                paint(strokeData, canvas, originalRotateToScreen, highQuality);
+                paint(strokeData, canvas, originalRotateToScreen, quality);
             }
             return;
         }
@@ -237,7 +238,7 @@ public class ImageFilterDraw extends ImageFilter {
 
         StrokeData stroke = mParameters.getCurrentDrawing();
         if (stroke != null) {
-            paint(stroke, canvas, originalRotateToScreen, highQuality);
+            paint(stroke, canvas, originalRotateToScreen, quality);
         }
     }
 
@@ -247,27 +248,28 @@ public class ImageFilterDraw extends ImageFilter {
         int n = v.size();
 
         for (int i = mCachedStrokes; i < n; i++) {
-            paint(v.get(i), drawCache, originalRotateToScreen, false);
+            paint(v.get(i), drawCache, originalRotateToScreen, ImagePreset.QUALITY_PREVIEW);
         }
         mCachedStrokes = n;
     }
 
     public void draw(Canvas canvas, Matrix originalRotateToScreen) {
         for (FilterDrawRepresentation.StrokeData strokeData : mParameters.getDrawing()) {
-            paint(strokeData, canvas, originalRotateToScreen, false);
+            paint(strokeData, canvas, originalRotateToScreen, ImagePreset.QUALITY_PREVIEW);
         }
-        mDrawingsTypes[mCurrentStyle].paint(null, canvas, originalRotateToScreen, false);
+        mDrawingsTypes[mCurrentStyle].paint(
+                null, canvas, originalRotateToScreen, ImagePreset.QUALITY_PREVIEW);
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
         short[] rect = new short[4];
 
         Matrix m = new Matrix();
         m.setScale(scaleFactor, scaleFactor);
-        drawData(new Canvas(bitmap), m, highQuality);
+        drawData(new Canvas(bitmap), m, quality);
 
 
         return bitmap;
index 96839e4..55c7095 100644 (file)
@@ -38,7 +38,7 @@ public class ImageFilterEdge extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float p);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index e36f096..8bb35f8 100644 (file)
@@ -38,7 +38,7 @@ public class ImageFilterExposure extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float bright);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index 0a3c8ab..820ec3e 100644 (file)
@@ -40,7 +40,7 @@ public class ImageFilterFx extends ImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h,Bitmap  fxBitmap, int fxw, int fxh);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null || getParameters().getFxBitmap() ==null) {
             return bitmap;
         }
index a778bee..1380c52 100644 (file)
@@ -67,7 +67,7 @@ public class ImageFilterGeometry extends ImageFilter {
             Bitmap dst, int dstWidth, int dstHeight, float straightenAngle);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         // TODO: implement bilinear or bicubic here... for now, just use
         // canvas to do a simple implementation...
         // TODO: and be more memory efficient! (do it in native?)
index ed28e57..54bd068 100644 (file)
@@ -44,7 +44,7 @@ public class ImageFilterHue extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float []matrix);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index f288397..f48bd04 100644 (file)
@@ -53,7 +53,7 @@ public class ImageFilterKMeans extends SimpleImageFilter {
             int swidth, int sheight, int p, int seed);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index 14307c3..c020876 100644 (file)
@@ -23,7 +23,7 @@ public class ImageFilterNegative extends ImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
         nativeApplyFilter(bitmap, w, h);
index 36c86d8..316a286 100644 (file)
@@ -63,14 +63,14 @@ public class ImageFilterParametricBorder extends ImageFilter {
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
        Canvas canvas = new Canvas(bitmap);
        applyHelper(canvas, bitmap.getWidth(), bitmap.getHeight());
        return bitmap;
     }
 
     @Override
-    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) {
         Canvas canvas = new Canvas(bitmap);
         applyHelper(canvas, bitmap.getWidth() * 4, bitmap.getHeight() * 4);
         return bitmap;
index f5c1e7f..c741a48 100644 (file)
@@ -37,7 +37,7 @@ public class ImageFilterRS extends ImageFilter {
         mOldBitmap = null;
     }
 
-    public void prepare(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public void prepare(Bitmap bitmap, float scaleFactor, int quality) {
         if (sOldBitmap == null
                 || (bitmap.getWidth() != sOldBitmap.getWidth())
                 || (bitmap.getHeight() != sOldBitmap.getHeight())) {
@@ -56,13 +56,13 @@ public class ImageFilterRS extends ImageFilter {
         }
         mInPixelsAllocation.copyFrom(bitmap);
         if (mOldBitmap != sOldBitmap) {
-            createFilter(mResources, scaleFactor, highQuality);
+            createFilter(mResources, scaleFactor, quality);
             mOldBitmap = sOldBitmap;
         }
     }
 
     public void createFilter(android.content.res.Resources res,
-            float scaleFactor, boolean highQuality) {
+            float scaleFactor, int quality) {
         // Stub
     }
 
@@ -75,12 +75,12 @@ public class ImageFilterRS extends ImageFilter {
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (bitmap == null) {
             return bitmap;
         }
         try {
-            prepare(bitmap, scaleFactor, highQuality);
+            prepare(bitmap, scaleFactor, quality);
             runFilter();
             update(bitmap);
         } catch (android.renderscript.RSIllegalArgumentException e) {
index 177def7..a65a963 100644 (file)
@@ -63,7 +63,7 @@ public class ImageFilterRedEye extends ImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, short[] matrix);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
         short[] rect = new short[4];
index 747a036..f6ef781 100644 (file)
@@ -38,7 +38,7 @@ public class ImageFilterSaturated extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float saturation);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index a2560b9..b50b28e 100644 (file)
@@ -39,7 +39,7 @@ public class ImageFilterShadows extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float  factor);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index 92f9b1a..9c99d57 100644 (file)
@@ -48,7 +48,7 @@ public class ImageFilterSharpen extends ImageFilterRS {
 
     @Override
     public void createFilter(android.content.res.Resources res, float scaleFactor,
-            boolean highQuality) {
+            int quality) {
         int w = mInPixelsAllocation.getType().getX();
         int h = mInPixelsAllocation.getType().getY();
         mScaleFactor = scaleFactor;
index 3feec7b..92bde99 100644 (file)
@@ -53,7 +53,7 @@ public class ImageFilterStraighten extends ImageFilter {
     }
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         // TODO: implement bilinear or bicubic here... for now, just use
         // canvas to do a simple implementation...
         // TODO: and be more memory efficient! (do it in native?)
index d8ec390..702cc66 100644 (file)
@@ -72,7 +72,7 @@ public class ImageFilterTinyPlanet extends SimpleImageFilter {
             float angle);
 
     @Override
-    public Bitmap apply(Bitmap bitmapIn, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmapIn, float scaleFactor, int quality) {
         int w = bitmapIn.getWidth();
         int h = bitmapIn.getHeight();
         int outputSize = (int) (w / 2f);
index 3859211..ac20205 100644 (file)
@@ -38,7 +38,7 @@ public class ImageFilterVibrance extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float bright);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index 3aad6bd..ac0fdee 100644 (file)
@@ -42,7 +42,7 @@ public class ImageFilterVignette extends SimpleImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, float strength);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         if (getParameters() == null) {
             return bitmap;
         }
index 28223b2..e0bcfba 100644 (file)
@@ -40,7 +40,7 @@ public class ImageFilterWBalance extends ImageFilter {
     native protected void nativeApplyFilter(Bitmap bitmap, int w, int h, int locX, int locY);
 
     @Override
-    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
         int w = bitmap.getWidth();
         int h = bitmap.getHeight();
         nativeApplyFilter(bitmap, w, h, -1, -1);
index d494913..922a16a 100644 (file)
@@ -38,9 +38,9 @@ public class SimpleImageFilter extends ImageFilter {
     }
 
     @Override
-    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
+    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, int quality) {
         FilterRepresentation representation = getDefaultRepresentation();
         this.useRepresentation(representation);
-        return apply(bitmap, scaleFactor, highQuality);
+        return apply(bitmap, scaleFactor, quality);
     }
 }
index b532840..a3645d6 100644 (file)
@@ -86,12 +86,12 @@ public class GeometryMetadata {
         return false;
     }
 
-    public Bitmap apply(Bitmap original, float scaleFactor, boolean highQuality) {
+    public Bitmap apply(Bitmap original, float scaleFactor, int quality) {
         if (!hasModifications()) {
             return original;
         }
         mImageFilter.setGeometryMetadata(this);
-        Bitmap m = mImageFilter.apply(original, scaleFactor, highQuality);
+        Bitmap m = mImageFilter.apply(original, scaleFactor, quality);
         return m;
     }
 
index 2dc0221..0cd2299 100644 (file)
@@ -5,8 +5,6 @@ import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Matrix;
-import android.graphics.Rect;
-import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -91,7 +89,6 @@ public class ImageDraw extends ImageShow {
         ImageFilterDraw filter = (ImageFilterDraw) getCurrentFilter();
 
         if (event.getAction() == MotionEvent.ACTION_DOWN) {
-
             mTmpPoint[0] = event.getX();
             mTmpPoint[1] = event.getY();
             mToOrig.mapPoints(mTmpPoint);
@@ -116,8 +113,6 @@ public class ImageDraw extends ImageShow {
             mTmpPoint[1] = event.getY();
             mToOrig.mapPoints(mTmpPoint);
             mFRep.endSection(mTmpPoint[0], mTmpPoint[1]);
-            this.resetImageCaches(this);
-
         }
         mEditorDraw.commitLocalRepresentation();
         invalidate();
index c7d14e8..adea9de 100644 (file)
@@ -35,7 +35,10 @@ public class ImagePreset {
 
     private FilterRepresentation mBorder = null;
     private float mScaleFactor = 1.0f;
-    private boolean mIsHighQuality = false;
+    public static final int QUALITY_ICON = 0;
+    public static final int QUALITY_PREVIEW = 1;
+    public static final int QUALITY_FINAL = 2;
+    private int mQuality = QUALITY_PREVIEW;
     private ImageLoader mImageLoader = null;
 
     private Vector<FilterRepresentation> mFilters = new Vector<FilterRepresentation>();
@@ -380,14 +383,14 @@ public class ImagePreset {
     public Bitmap applyGeometry(Bitmap bitmap) {
         // Apply any transform -- 90 rotate, flip, straighten, crop
         // Returns a new bitmap.
-        return mGeoData.apply(bitmap, mScaleFactor, mIsHighQuality);
+        return mGeoData.apply(bitmap, mScaleFactor, mQuality);
     }
 
     public Bitmap applyBorder(Bitmap bitmap) {
         if (mBorder != null && mDoApplyGeometry) {
             ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mBorder);
             filter.useRepresentation(mBorder);
-            bitmap = filter.apply(bitmap, mScaleFactor, mIsHighQuality);
+            bitmap = filter.apply(bitmap, mScaleFactor, mQuality);
         }
         return bitmap;
     }
@@ -408,7 +411,7 @@ public class ImagePreset {
                 }
                 ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(representation);
                 filter.useRepresentation(representation);
-                bitmap = filter.apply(bitmap, mScaleFactor, mIsHighQuality);
+                bitmap = filter.apply(bitmap, mScaleFactor, mQuality);
             }
         }
 
@@ -429,12 +432,12 @@ public class ImagePreset {
         return mScaleFactor;
     }
 
-    public boolean isHighQuality() {
-        return mIsHighQuality;
+    public int getQuality() {
+        return mQuality;
     }
 
-    public void setIsHighQuality(boolean value) {
-        mIsHighQuality = value;
+    public void setQuality(int value) {
+        mQuality = value;
     }
 
     public void setScaleFactor(float value) {