diff options
author | nicolasroard <nicolasroard@google.com> | 2013-03-04 21:43:49 -0800 |
---|---|---|
committer | nicolasroard <nicolasroard@google.com> | 2013-03-05 00:16:17 -0800 |
commit | 6aa73e7615a165c185778c238a7d6c73b6b56eff (patch) | |
tree | 6d359d4b945359e5d11afea5d3c7d9d215210ff1 | |
parent | 72db7ea0c18e5cc2f465252b53d9b6d2a8dcc6a0 (diff) | |
download | android_packages_apps_Snap-6aa73e7615a165c185778c238a7d6c73b6b56eff.tar.gz android_packages_apps_Snap-6aa73e7615a165c185778c238a7d6c73b6b56eff.tar.bz2 android_packages_apps_Snap-6aa73e7615a165c185778c238a7d6c73b6b56eff.zip |
Visual History
Change-Id: I3397c44b8c47985c97de5b82456c03469b2fb8db
5 files changed, 59 insertions, 24 deletions
diff --git a/src/com/android/gallery3d/filtershow/HistoryAdapter.java b/src/com/android/gallery3d/filtershow/HistoryAdapter.java index c94a0075b..a10e66ba4 100644 --- a/src/com/android/gallery3d/filtershow/HistoryAdapter.java +++ b/src/com/android/gallery3d/filtershow/HistoryAdapter.java @@ -17,6 +17,8 @@ package com.android.gallery3d.filtershow; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Color; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -195,30 +197,15 @@ public class HistoryAdapter extends ArrayAdapter<ImagePreset> { if (itemView != null) { itemView.setText(item.historyName()); } - ImageView markView = (ImageView) view.findViewById(R.id.selectedMark); - if (position == mCurrentPresetPosition) { - markView.setVisibility(View.VISIBLE); - } else { - markView.setVisibility(View.INVISIBLE); + ImageView preview = (ImageView) view.findViewById(R.id.preview); + Bitmap bmp = item.getPreviewImage(); + if (bmp != null) { + preview.setImageBitmap(bmp); } - ImageView typeView = (ImageView) view.findViewById(R.id.typeMark); - // TODO: use type of last filter, not a string, to discriminate. - if (position == getCount() - 1) { - typeView.setImageResource(R.drawable.ic_photoeditor_effects); - } else if (item.historyName().equalsIgnoreCase(mBorders)) { - typeView.setImageResource(R.drawable.ic_photoeditor_border); - } else if (item.historyName().equalsIgnoreCase(mStraighten)) { - typeView.setImageResource(R.drawable.ic_photoeditor_fix); - } else if (item.historyName().equalsIgnoreCase(mCrop)) { - typeView.setImageResource(R.drawable.ic_photoeditor_fix); - } else if (item.historyName().equalsIgnoreCase(mRotate)) { - typeView.setImageResource(R.drawable.ic_photoeditor_fix); - } else if (item.historyName().equalsIgnoreCase(mMirror)) { - typeView.setImageResource(R.drawable.ic_photoeditor_fix); - } else if (item.isFx()) { - typeView.setImageResource(R.drawable.ic_photoeditor_effects); + if (position == mCurrentPresetPosition) { + view.setBackgroundColor(Color.WHITE); } else { - typeView.setImageResource(R.drawable.ic_photoeditor_color); + view.setBackgroundResource(R.drawable.filtershow_button_background); } } diff --git a/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java b/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java index 3ec74e266..e81f47fe1 100644 --- a/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java +++ b/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java @@ -27,6 +27,7 @@ public class RenderingRequest { private boolean mIsDirect = false; private Bitmap mBitmap = null; private ImagePreset mImagePreset = null; + private ImagePreset mOriginalImagePreset = null; private RenderingRequestCaller mCaller = null; private Rect mBounds = null; private Rect mDestination = null; @@ -61,6 +62,7 @@ public class RenderingRequest { request.setBitmap(bitmap); ImagePreset passedPreset = new ImagePreset(preset); passedPreset.setImageLoader(MasterImage.getImage().getImageLoader()); + request.setOriginalImagePreset(preset); if (type == PARTIAL_RENDERING) { request.setBounds(bounds); @@ -137,4 +139,12 @@ public class RenderingRequest { public void setDestination(Rect destination) { mDestination = destination; } + + public ImagePreset getOriginalImagePreset() { + return mOriginalImagePreset; + } + + public void setOriginalImagePreset(ImagePreset originalImagePreset) { + mOriginalImagePreset = originalImagePreset; + } } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java index 926f14ac0..1edfd79a1 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java @@ -572,6 +572,7 @@ public class ImageShow extends View implements OnGestureListener, translation.y = (int) (originalTranslation.y + translateY); MasterImage.getImage().setTranslation(translation); } + mTouchShowOriginal = false; } else if (!mOriginalDisabled && !mActivity.isShowingHistoryPanel() && (System.currentTimeMillis() - mTouchShowOriginalDate > mTouchShowOriginalDelayMin) @@ -629,14 +630,16 @@ public class ImageShow extends View implements OnGestureListener, if (mActivity == null) { return false; } + if (endEvent.getPointerCount() == 2) { + return false; + } if ((!mActivity.isShowingHistoryPanel() && startEvent.getX() > endEvent.getX()) || (mActivity.isShowingHistoryPanel() && endEvent.getX() > startEvent.getX())) { if (!mTouchShowOriginal || (mTouchShowOriginal && (System.currentTimeMillis() - mTouchShowOriginalDate < mTouchShowOriginalDelayMax))) { - // TODO fix gesture. - // mActivity.toggleHistoryPanel(); + mActivity.toggleHistoryPanel(); } } return true; diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index e93c3713f..209c3bdb9 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -39,6 +39,7 @@ public class MasterImage implements RenderingRequestCaller { private static MasterImage sMasterImage = null; private static int sIconSeedSize = 128; + private static float sHistoryPreviewSize = 128.0f; private Bitmap mThumbnailBitmap; private ImageFilter mCurrentFilter = null; @@ -132,6 +133,7 @@ public class MasterImage implements RenderingRequestCaller { mPreset.fillImageStateAdapter(mState); if (addToHistory) { mHistory.addHistoryItem(mPreset); + renderHistoryPreview(); } updatePresets(true); GeometryMetadata geo = mPreset.mGeoData; @@ -141,6 +143,23 @@ 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) { @@ -292,6 +311,7 @@ public class MasterImage implements RenderingRequestCaller { invalidatePartialPreview(); needsUpdateFullResPreview(); FilteringPipeline.getPipeline().updatePreviewBuffer(); + renderHistoryPreview(); } public void setImageShowSize(int w, int h) { @@ -356,6 +376,12 @@ public class MasterImage implements RenderingRequestCaller { mPartialBitmap = 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 82592a0f7..ca74a8729 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -54,6 +54,7 @@ public class ImagePreset { public final GeometryMetadata mGeoData = new GeometryMetadata(); private boolean mPartialRendering = false; private Rect mPartialRenderingBounds; + private Bitmap mPreviewImage; public ImagePreset() { setup(); @@ -522,4 +523,12 @@ public class ImagePreset { return mPartialRenderingBounds; } + public Bitmap getPreviewImage() { + return mPreviewImage; + } + + public void setPreviewImage(Bitmap previewImage) { + mPreviewImage = previewImage; + } + } |