summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/imageshow/ImageShow.java')
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageShow.java139
1 files changed, 102 insertions, 37 deletions
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
index c009b99dd..5e007b1eb 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
@@ -59,6 +59,9 @@ public class ImageShow extends View implements OnGestureListener,
protected static int mTextPadding = 20;
protected ImagePreset mImagePreset = null;
+ protected ImagePreset mImageGeometryOnlyPreset = null;
+ protected ImagePreset mImageFiltersOnlyPreset = null;
+
protected ImageLoader mImageLoader = null;
private ImageFilter mCurrentFilter = null;
private boolean mDirtyGeometry = true;
@@ -67,9 +70,9 @@ public class ImageShow extends View implements OnGestureListener,
private final boolean USE_BACKGROUND_IMAGE = false;
private static int mBackgroundColor = Color.RED;
- // TODO: remove protected here, it should be private
- protected Bitmap mForegroundImage = null;
- protected Bitmap mFilteredImage = null;
+ private Bitmap mGeometryOnlyImage = null;
+ private Bitmap mFiltersOnlyImage = null;
+ private Bitmap mFilteredImage = null;
private final boolean USE_SLIDER_GESTURE = false; // set to true to have
// slider gesture
@@ -324,13 +327,6 @@ public class ImageShow extends View implements OnGestureListener,
return mImagePreset;
}
- protected Bitmap getOriginalFrontBitmap() {
- if (mImageLoader != null) {
- return mImageLoader.getOriginalBitmapLarge();
- }
- return null;
- }
-
public void drawToast(Canvas canvas) {
if (mShowToast && mToast != null) {
Paint paint = new Paint();
@@ -355,12 +351,16 @@ public class ImageShow extends View implements OnGestureListener,
}
}
+ public void defaultDrawImage(Canvas canvas) {
+ drawImage(canvas, getFilteredImage());
+ drawPartialImage(canvas, getGeometryOnlyImage());
+ }
+
@Override
public void onDraw(Canvas canvas) {
drawBackground(canvas);
- getFilteredImage();
- drawImage(canvas, mFilteredImage);
- drawPartialImage(canvas, mForegroundImage);
+ requestFilteredImages();
+ defaultDrawImage(canvas);
if (showTitle() && getImagePreset() != null) {
mPaint.setARGB(200, 0, 0, 0);
@@ -382,25 +382,78 @@ public class ImageShow extends View implements OnGestureListener,
drawToast(canvas);
}
- public void getFilteredImage() {
- Bitmap filteredImage = null;
+ public void resetImageCaches(ImageShow caller) {
+ if (mImageLoader == null) {
+ return;
+ }
+ if (getImagePreset() != null) {
+ mImageLoader.resetImageForPreset(getImagePreset(), caller);
+ }
+ mImageGeometryOnlyPreset = null;
+ mImageFiltersOnlyPreset = null;
+ invalidate();
+ }
+
+ public void updateImagePresets(boolean force) {
+ ImagePreset preset = getImagePreset();
+ if (preset == null) {
+ return;
+ }
+ if (force) {
+ mImageLoader.resetImageForPreset(getImagePreset(), this);
+ }
+ if (force || mImageGeometryOnlyPreset == null) {
+ mImageGeometryOnlyPreset = new ImagePreset(preset);
+ mImageGeometryOnlyPreset.setDoApplyFilters(false);
+ mGeometryOnlyImage = null;
+ }
+ if (force || mImageFiltersOnlyPreset == null) {
+ mImageFiltersOnlyPreset = new ImagePreset(preset);
+ mImageFiltersOnlyPreset.setDoApplyGeometry(false);
+ mFiltersOnlyImage = null;
+ }
+ }
+
+ public void requestFilteredImages() {
if (mImageLoader != null) {
- filteredImage = mImageLoader.getImageForPreset(this,
+ Bitmap bitmap = mImageLoader.getImageForPreset(this,
getImagePreset(), showHires());
- }
- if (filteredImage == null) {
- // if no image for the current preset, use the previous one
- filteredImage = mFilteredImage;
- } else {
- mFilteredImage = filteredImage;
+ if (bitmap != null) {
+ if (mFilteredImage == null) {
+ invalidate();
+ }
+ mFilteredImage = bitmap;
+ }
+
+ updateImagePresets(false);
+ if (mImageGeometryOnlyPreset != null) {
+ mGeometryOnlyImage = mImageLoader.getImageForPreset(this, mImageGeometryOnlyPreset,
+ showHires());
+ }
+ if (mImageFiltersOnlyPreset != null) {
+ mFiltersOnlyImage = mImageLoader.getImageForPreset(this, mImageFiltersOnlyPreset,
+ showHires());
+ }
}
- if (mShowOriginal || mFilteredImage == null) {
- mFilteredImage = mForegroundImage;
+ if (mShowOriginal) {
+ mFilteredImage = mGeometryOnlyImage;
}
}
+ public Bitmap getFiltersOnlyImage() {
+ return mFiltersOnlyImage;
+ }
+
+ public Bitmap getGeometryOnlyImage() {
+ return mGeometryOnlyImage;
+ }
+
+ public Bitmap getFilteredImage() {
+ return mFilteredImage;
+ }
+
public void drawImage(Canvas canvas, Bitmap image) {
if (image != null) {
Rect s = new Rect(0, 0, image.getWidth(),
@@ -522,15 +575,17 @@ public class ImageShow extends View implements OnGestureListener,
}
public void setImagePreset(ImagePreset preset, boolean addToHistory) {
+ if (preset == null) {
+ return;
+ }
mImagePreset = preset;
- if (getImagePreset() != null) {
- getImagePreset().setImageLoader(mImageLoader);
- if (addToHistory) {
- mHistoryAdapter.addHistoryItem(getImagePreset());
- }
- getImagePreset().setEndpoint(this);
- updateImage();
+ getImagePreset().setImageLoader(mImageLoader);
+ updateImagePresets(true);
+ if (addToHistory) {
+ mHistoryAdapter.addHistoryItem(getImagePreset());
}
+ getImagePreset().setEndpoint(this);
+ updateImage();
mImagePreset.fillImageStateAdapter(mImageStateAdapter);
invalidate();
}
@@ -573,10 +628,19 @@ public class ImageShow extends View implements OnGestureListener,
setDirtyGeometryFlag();
}
+ public boolean updateGeometryFlags() {
+ return true;
+ }
+
public void updateImage() {
- mForegroundImage = getOriginalFrontBitmap();
- imageSizeChanged(mForegroundImage); // TODO: should change to filtered
- setDirtyGeometryFlag();
+ if (!updateGeometryFlags()) {
+ return;
+ }
+ Bitmap bitmap = mImageLoader.getOriginalBitmapLarge();
+ if (bitmap != null) {
+ imageSizeChanged(bitmap);
+ invalidate();
+ }
}
public void updateFilteredImage(Bitmap bitmap) {
@@ -609,7 +673,7 @@ public class ImageShow extends View implements OnGestureListener,
mTouchY = ey;
if (!mActivity.isShowingHistoryPanel()
&& (System.currentTimeMillis() - mTouchShowOriginalDate
- > mTouchShowOriginalDelayMin)) {
+ > mTouchShowOriginalDelayMin)) {
mTouchShowOriginal = true;
}
}
@@ -725,8 +789,8 @@ public class ImageShow extends View implements OnGestureListener,
|| (mActivity.isShowingHistoryPanel() && endEvent.getX() > startEvent.getX())) {
if (!mTouchShowOriginal
|| (mTouchShowOriginal &&
- (System.currentTimeMillis() - mTouchShowOriginalDate
- < mTouchShowOriginalDelayMax))) {
+ (System.currentTimeMillis() - mTouchShowOriginalDate
+ < mTouchShowOriginalDelayMax))) {
mActivity.toggleHistoryPanel();
}
}
@@ -756,4 +820,5 @@ public class ImageShow extends View implements OnGestureListener,
// TODO Auto-generated method stub
return false;
}
+
}