From 0483c7cc6d321fd6e07dc602f6bac69bc365a401 Mon Sep 17 00:00:00 2001 From: John Hoford Date: Wed, 27 Feb 2013 19:21:38 -0800 Subject: crop fix Change-Id: Ie2e79992bf45fffb0ae00c4a4fd879546fa1450f --- .../gallery3d/filtershow/FilterShowActivity.java | 42 +++++++++++++--------- .../gallery3d/filtershow/cache/ImageLoader.java | 9 ----- .../gallery3d/filtershow/editors/EditorCrop.java | 20 +++++++++++ .../filtershow/imageshow/MasterImage.java | 30 ++++++++++++++++ 4 files changed, 76 insertions(+), 25 deletions(-) (limited to 'src/com') diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index 7401a1c8a..a1c301f7d 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -44,9 +44,15 @@ import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; -import android.widget.*; +import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; +import android.widget.FrameLayout; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.ShareActionProvider; import android.widget.ShareActionProvider.OnShareTargetSelectedListener; +import android.widget.Toast; import com.android.gallery3d.R; import com.android.gallery3d.data.LocalAlbum; @@ -61,15 +67,19 @@ import com.android.gallery3d.filtershow.editors.EditorManager; import com.android.gallery3d.filtershow.editors.EditorRedEye; import com.android.gallery3d.filtershow.editors.EditorRotate; import com.android.gallery3d.filtershow.editors.EditorStraighten; -import com.android.gallery3d.filtershow.editors.ImageOnlyEditor; import com.android.gallery3d.filtershow.editors.EditorTinyPlanet; -import com.android.gallery3d.filtershow.filters.*; +import com.android.gallery3d.filtershow.editors.ImageOnlyEditor; +import com.android.gallery3d.filtershow.filters.FilterColorBorderRepresentation; +import com.android.gallery3d.filtershow.filters.FilterFxRepresentation; +import com.android.gallery3d.filtershow.filters.FilterImageBorderRepresentation; +import com.android.gallery3d.filtershow.filters.FilterRepresentation; +import com.android.gallery3d.filtershow.filters.FiltersManager; +import com.android.gallery3d.filtershow.filters.ImageFilter; +import com.android.gallery3d.filtershow.filters.ImageFilterBorder; +import com.android.gallery3d.filtershow.filters.ImageFilterRS; import com.android.gallery3d.filtershow.imageshow.GeometryMetadata; import com.android.gallery3d.filtershow.imageshow.ImageCrop; -import com.android.gallery3d.filtershow.imageshow.ImageFlip; -import com.android.gallery3d.filtershow.imageshow.ImageRotate; import com.android.gallery3d.filtershow.imageshow.ImageShow; -import com.android.gallery3d.filtershow.imageshow.ImageStraighten; import com.android.gallery3d.filtershow.imageshow.ImageTinyPlanet; import com.android.gallery3d.filtershow.imageshow.ImageZoom; import com.android.gallery3d.filtershow.imageshow.MasterImage; @@ -305,10 +315,12 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, mImageShow.getImagePreset().mGeoData.setCropExtras(mCropExtras); // FIXME: moving to editors breaks the crop action -// mImageCrop.setExtras(mCropExtras); + EditorCrop crop = (EditorCrop) mEditorPlaceHolder.getEditor(EditorCrop.ID); + + crop.setExtras(mCropExtras); String s = getString(R.string.Fixed); -// mImageCrop.setAspectString(s); -// mImageCrop.setCropActionFlag(true); + crop.setAspectString(s); + crop.setCropActionFlag(true); mPanelController.setFixedAspect(mCropExtras.getAspectX() > 0 && mCropExtras.getAspectY() > 0); } @@ -467,13 +479,14 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, } } + MasterImage.getImage().setOriginalGeometry(largeBitmap); mLoadBitmapTask = null; if (mAction == CROP_ACTION) { - // FIXME: broken by the move to editors - // mPanelController.showComponent(findViewById(R.id.cropButton)); + + mPanelController.showComponent(findViewById(EditorCrop.ID)); } else if (mAction == TINY_PLANET_ACTION) { - mPanelController.showComponent(findViewById(R.id.tinyplanetButton)); + mPanelController.showComponent(findViewById(EditorTinyPlanet.ID)); } super.onPostExecute(result); @@ -692,10 +705,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, String text = representation.getName(); icon.setup(text, mPanelController, panel); icon.setFilterRepresentation(representation); - if (representation instanceof FilterTinyPlanetRepresentation) { - // needed to hide tinyplanet on startup - icon.setId(R.id.tinyplanetButton); - } + icon.setId(representation.getEditorId()); mPanelController.addComponent(button, icon); panel.addView(icon); return icon; diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java index 1aeb6b578..d0796b57b 100644 --- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java +++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java @@ -134,15 +134,6 @@ public class ImageLoader { return false; } updateBitmaps(); - // TODO: cleanup - GeometryMetadata geo = MasterImage.getImage().getPreset().mGeoData; - float w = mOriginalBitmapLarge.getWidth(); - float h = mOriginalBitmapLarge.getHeight(); - RectF r = new RectF(0, 0, w, h); - geo.setPhotoBounds(r); - geo.setCropBounds(r); - MasterImage.getImage().getPreset().setGeometry(geo); - MasterImage.getImage().notifyGeometryChange(); mLoadingLock.unlock(); return true; } diff --git a/src/com/android/gallery3d/filtershow/editors/EditorCrop.java b/src/com/android/gallery3d/filtershow/editors/EditorCrop.java index 53e07abaf..0fbf48313 100644 --- a/src/com/android/gallery3d/filtershow/editors/EditorCrop.java +++ b/src/com/android/gallery3d/filtershow/editors/EditorCrop.java @@ -20,6 +20,7 @@ import android.content.Context; import android.widget.FrameLayout; import com.android.gallery3d.R; +import com.android.gallery3d.filtershow.CropExtras; import com.android.gallery3d.filtershow.imageshow.ImageCrop; import com.android.gallery3d.filtershow.imageshow.MasterImage; @@ -28,6 +29,9 @@ public class EditorCrop extends Editor implements EditorInfo { private static final String LOGTAG = "EditorCrop"; ImageCrop mImageCrop; + private String mAspectString = null; + private boolean mCropActionFlag = false; + private CropExtras mCropExtras = null; public EditorCrop() { super(ID); @@ -37,6 +41,9 @@ public class EditorCrop extends Editor implements EditorInfo { public void createEditor(Context context, FrameLayout frameLayout) { super.createEditor(context, frameLayout); mView = mImageShow = mImageCrop = new ImageCrop(context); + mImageCrop.setExtras(mCropExtras); + mImageCrop.setAspectString(mAspectString); + mImageCrop.setCropActionFlag(mCropActionFlag); mImageCrop.setImageLoader(MasterImage.getImage().getImageLoader()); mImageCrop.setEditor(this); mImageCrop.syncLocalToMasterGeometry(); @@ -56,4 +63,17 @@ public class EditorCrop extends Editor implements EditorInfo { public boolean getOverlayOnly() { return true; } + + public void setExtras(CropExtras cropExtras) { + mCropExtras = cropExtras; + } + + public void setAspectString(String s) { + mAspectString = s; + } + + public void setCropActionFlag(boolean b) { + mCropActionFlag = b; + } + } diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index 4ca74300c..8a505fd4e 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -17,6 +17,8 @@ package com.android.gallery3d.filtershow.imageshow; import android.graphics.*; +import android.os.Handler; +import android.os.Message; import android.util.Log; import com.android.gallery3d.filtershow.FilterShowActivity; @@ -64,6 +66,20 @@ public class MasterImage implements RenderingRequestCaller { private Point mImageShowSize = new Point(); + final private static int NEW_GEOMETRY = 1; + + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case NEW_GEOMETRY: { + hasNewGeometry(); + break; + } + } + } + }; + private MasterImage() { } @@ -183,6 +199,16 @@ public class MasterImage implements RenderingRequestCaller { return mFilteredPreview; } + public void setOriginalGeometry(Bitmap originalBitmapLarge) { + GeometryMetadata geo = getPreset().mGeoData; + float w = originalBitmapLarge.getWidth(); + float h = originalBitmapLarge.getHeight(); + RectF r = new RectF(0, 0, w, h); + geo.setPhotoBounds(r); + geo.setCropBounds(r); + getPreset().setGeometry(geo); + } + public Bitmap getFilteredImage() { return mFilteredPreview.getConsumer(); } @@ -333,6 +359,10 @@ public class MasterImage implements RenderingRequestCaller { } public void notifyGeometryChange() { + mHandler.sendEmptyMessage(NEW_GEOMETRY); + } + + public void hasNewGeometry() { updatePresets(true); for (GeometryListener listener : mGeometryListeners) { listener.geometryChanged(); -- cgit v1.2.3