diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/imageshow')
7 files changed, 71 insertions, 16 deletions
diff --git a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java index a3645d6f5..647b101a1 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java +++ b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java @@ -23,10 +23,14 @@ import android.graphics.RectF; import com.android.gallery3d.filtershow.CropExtras; import com.android.gallery3d.filtershow.cache.ImageLoader; +import com.android.gallery3d.filtershow.editors.EditorCrop; +import com.android.gallery3d.filtershow.editors.EditorFlip; +import com.android.gallery3d.filtershow.editors.EditorRotate; +import com.android.gallery3d.filtershow.editors.EditorStraighten; +import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.filters.ImageFilterGeometry; -public class GeometryMetadata { - private static final ImageFilterGeometry mImageFilter = new ImageFilterGeometry(); +public class GeometryMetadata extends FilterRepresentation { private static final String LOGTAG = "GeometryMetadata"; private float mScaleFactor = 1.0f; private float mRotation = 0; @@ -59,9 +63,25 @@ public class GeometryMetadata { } public GeometryMetadata() { + super("GeometryMetadata"); + setFilterClass(ImageFilterGeometry.class); + setEditorId(EditorCrop.ID); + setName("Crop"); + setTextId(0); + } + + @Override + public int[] getEditorIds() { + return new int[] { + EditorCrop.ID, + EditorStraighten.ID, + EditorRotate.ID, + EditorFlip.ID + }; } public GeometryMetadata(GeometryMetadata g) { + super("GeometryMetadata"); set(g); } @@ -86,15 +106,6 @@ public class GeometryMetadata { return false; } - public Bitmap apply(Bitmap original, float scaleFactor, int quality) { - if (!hasModifications()) { - return original; - } - mImageFilter.setGeometryMetadata(this); - Bitmap m = mImageFilter.apply(original, scaleFactor, quality); - return m; - } - public void set(GeometryMetadata g) { mScaleFactor = g.mScaleFactor; mRotation = g.mRotation; @@ -436,4 +447,17 @@ public class GeometryMetadata { m.preRotate(-straighten, photo.centerX(), photo.centerY()); return m; } + + @Override + public void useParametersFrom(FilterRepresentation a) { + GeometryMetadata data = (GeometryMetadata) a; + set(data); + } + + @Override + public FilterRepresentation clone() throws CloneNotSupportedException { + GeometryMetadata representation = (GeometryMetadata) super.clone(); + representation.useParametersFrom(this); + return representation; + } } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java index 284bfde76..beaa93de4 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageCrop.java @@ -37,6 +37,8 @@ import android.widget.PopupMenu; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.CropExtras; +import com.android.gallery3d.filtershow.editors.EditorCrop; +import com.android.gallery3d.filtershow.filters.FilterCurvesRepresentation; import com.android.gallery3d.filtershow.ui.FramedTextButton; public class ImageCrop extends ImageGeometry { @@ -81,11 +83,13 @@ public class ImageCrop extends ImageGeometry { private static final String LOGTAG = "ImageCrop"; private String mAspect = ""; - private int mAspectTextSize = 24; + private static int mAspectTextSize = 24; private boolean mFixedAspect = false; - public void setAspectTextSize(int textSize) { + private EditorCrop mEditorCrop; + + public static void setAspectTextSize(int textSize) { mAspectTextSize = textSize; } @@ -779,4 +783,8 @@ public class ImageCrop extends ImageGeometry { } } + public void setEditor(EditorCrop editorCrop) { + mEditorCrop = editorCrop; + } + } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java b/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java index 6bfba1b2c..70637a30c 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageFlip.java @@ -24,6 +24,7 @@ import android.graphics.RectF; import android.util.AttributeSet; import com.android.gallery3d.R; +import com.android.gallery3d.filtershow.editors.EditorFlip; import com.android.gallery3d.filtershow.imageshow.GeometryMetadata.FLIP; public class ImageFlip extends ImageGeometry { @@ -32,6 +33,7 @@ public class ImageFlip extends ImageGeometry { private static final float MIN_FLICK_DIST_FOR_FLIP = 0.1f; private static final String LOGTAG = "ImageFlip"; private FLIP mNextFlip = FLIP.NONE; + private EditorFlip mEditorFlip; public ImageFlip(Context context, AttributeSet attrs) { super(context, attrs); @@ -140,4 +142,8 @@ public class ImageFlip extends ImageGeometry { drawTransformedCropped(canvas, image, gPaint); } + public void setEditor(EditorFlip editorFlip) { + mEditorFlip = editorFlip; + } + } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java b/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java index e18f0d034..352329e13 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java @@ -138,7 +138,7 @@ public abstract class ImageGeometry extends ImageShow { } // Overwrites local with master - protected void syncLocalToMasterGeometry() { + public void syncLocalToMasterGeometry() { mLocalGeometry = getGeometry(); calculateLocalScalingFactorAndOffset(); } @@ -423,6 +423,7 @@ public abstract class ImageGeometry extends ImageShow { return; } mHasDrawn = true; + drawShape(canvas, image); } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java b/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java index 30cc9e2f3..c4b9aa27d 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageRotate.java @@ -23,6 +23,7 @@ import android.graphics.Paint; import android.util.AttributeSet; import com.android.gallery3d.R; +import com.android.gallery3d.filtershow.editors.EditorRotate; public class ImageRotate extends ImageGeometry { @@ -30,6 +31,7 @@ public class ImageRotate extends ImageGeometry { private float mAngle = 0; private final boolean mSnapToNinety = true; + private EditorRotate mEditorRotate; private static final String LOGTAG = "ImageRotate"; public ImageRotate(Context context, AttributeSet attrs) { @@ -84,4 +86,8 @@ public class ImageRotate extends ImageGeometry { gPaint.setARGB(255, 255, 255, 255); drawTransformedCropped(canvas, image, gPaint); } + + public void setEditor(EditorRotate editorRotate) { + mEditorRotate = editorRotate; + } } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java b/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java index dfd950565..be116bda7 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java @@ -26,11 +26,13 @@ import android.graphics.RectF; import android.util.AttributeSet; import com.android.gallery3d.R; +import com.android.gallery3d.filtershow.editors.EditorStraighten; public class ImageStraighten extends ImageGeometry { private float mBaseAngle = 0; private float mAngle = 0; + private EditorStraighten mEditorStraighten; private static final String LOGTAG = "ImageStraighten"; private static final Paint gPaint = new Paint(); @@ -134,4 +136,8 @@ public class ImageStraighten extends ImageGeometry { } } + public void setEditor(EditorStraighten editorStraighten) { + mEditorStraighten = editorStraighten; + } + } diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index 9eafe2236..4ca74300c 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -17,6 +17,7 @@ package com.android.gallery3d.filtershow.imageshow; import android.graphics.*; +import android.util.Log; import com.android.gallery3d.filtershow.FilterShowActivity; import com.android.gallery3d.filtershow.HistoryAdapter; @@ -208,7 +209,8 @@ public class MasterImage implements RenderingRequestCaller { if (force || mGeometryOnlyPreset == null) { ImagePreset newPreset = new ImagePreset(mPreset); newPreset.setDoApplyFilters(false); - if (mGeometryOnlyPreset == null + newPreset.setDoApplyGeometry(true); + if (force || mGeometryOnlyPreset == null || !newPreset.same(mGeometryOnlyPreset)) { mGeometryOnlyPreset = newPreset; RenderingRequest.post(mLoader.getOriginalBitmapLarge(), @@ -217,8 +219,9 @@ public class MasterImage implements RenderingRequestCaller { } if (force || mFiltersOnlyPreset == null) { ImagePreset newPreset = new ImagePreset(mPreset); + newPreset.setDoApplyFilters(true); newPreset.setDoApplyGeometry(false); - if (mFiltersOnlyPreset == null + if (force || mFiltersOnlyPreset == null || !newPreset.same(mFiltersOnlyPreset)) { mFiltersOnlyPreset = newPreset; RenderingRequest.post(mLoader.getOriginalBitmapLarge(), @@ -330,6 +333,7 @@ public class MasterImage implements RenderingRequestCaller { } public void notifyGeometryChange() { + updatePresets(true); for (GeometryListener listener : mGeometryListeners) { listener.geometryChanged(); } |