diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-07-08 18:11:49 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-07-10 19:37:03 -0700 |
commit | 3ea8558300780ca5269d75230f78eadf4100876c (patch) | |
tree | 9f73f4592b276650ff7b631a40047d23e050eec6 /src/com/android/gallery3d/filtershow/imageshow/MasterImage.java | |
parent | 9bba45787308782a8e4c2edae4b754f9537605d0 (diff) | |
download | android_packages_apps_Snap-3ea8558300780ca5269d75230f78eadf4100876c.tar.gz android_packages_apps_Snap-3ea8558300780ca5269d75230f78eadf4100876c.tar.bz2 android_packages_apps_Snap-3ea8558300780ca5269d75230f78eadf4100876c.zip |
Refactoring ImageLoader.
- Moves state (history, loadlisteners, bitmaps, etc.)
from ImageLoader to MasterImage.
- Makes ImageLoader into a utility class.
Change-Id: I7a8a988c61848694a86a4b2919bf8f30bfd2be8c
Diffstat (limited to 'src/com/android/gallery3d/filtershow/imageshow/MasterImage.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/imageshow/MasterImage.java | 121 |
1 files changed, 100 insertions, 21 deletions
diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java index 0890b7cd0..7b11cf35e 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java @@ -21,6 +21,7 @@ import android.graphics.Matrix; import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; +import android.net.Uri; import android.os.Handler; import android.os.Message; @@ -43,6 +44,8 @@ import java.util.Vector; public class MasterImage implements RenderingRequestCaller { + + private static final String LOGTAG = "MasterImage"; private boolean DEBUG = false; private static final boolean DISABLEZOOM = false; @@ -59,12 +62,20 @@ public class MasterImage implements RenderingRequestCaller { private SharedBuffer mPreviewBuffer = new SharedBuffer(); private SharedPreset mPreviewPreset = new SharedPreset(); + private Bitmap mOriginalBitmapSmall = null; + private Bitmap mOriginalBitmapLarge = null; + private Bitmap mOriginalBitmapHighres = null; + private int mOrientation; + private Rect mOriginalBounds; + private final Vector<ImageShow> mLoadListeners = new Vector<ImageShow>(); + private Uri mUri = null; + private int mZoomOrientation = ImageLoader.ORI_NORMAL; + private Bitmap mGeometryOnlyBitmap = null; private Bitmap mFiltersOnlyBitmap = null; private Bitmap mPartialBitmap = null; private Bitmap mHighresBitmap = null; - private ImageLoader mLoader = null; private HistoryManager mHistory = null; private StateAdapter mState = null; @@ -114,6 +125,84 @@ public class MasterImage implements RenderingRequestCaller { return sMasterImage; } + public Bitmap getOriginalBitmapSmall() { + return mOriginalBitmapSmall; + } + + public Bitmap getOriginalBitmapLarge() { + return mOriginalBitmapLarge; + } + + public Bitmap getOriginalBitmapHighres() { + return mOriginalBitmapHighres; + } + + public void setOriginalBitmapHighres(Bitmap mOriginalBitmapHighres) { + this.mOriginalBitmapHighres = mOriginalBitmapHighres; + } + + public int getOrientation() { + return mOrientation; + } + + public Rect getOriginalBounds() { + return mOriginalBounds; + } + + public void setOriginalBounds(Rect r) { + mOriginalBounds = r; + } + + public Uri getUri() { + return mUri; + } + + public void setUri(Uri uri) { + mUri = uri; + } + + public int getZoomOrientation() { + return mZoomOrientation; + } + + public void addListener(ImageShow imageShow) { + if (!mLoadListeners.contains(imageShow)) { + mLoadListeners.add(imageShow); + } + } + + public void warnListeners() { + mActivity.runOnUiThread(mWarnListenersRunnable); + } + + private Runnable mWarnListenersRunnable = new Runnable() { + @Override + public void run() { + for (int i = 0; i < mLoadListeners.size(); i++) { + ImageShow imageShow = mLoadListeners.elementAt(i); + imageShow.imageLoaded(); + } + invalidatePreview(); + } + }; + + public boolean loadBitmap(Uri uri, int size) { + setUri(uri); + mOrientation = ImageLoader.getOrientation(mActivity, uri); + mOriginalBitmapLarge = ImageLoader.loadOrientedScaledBitmap(this, mActivity, uri, size, + true, mOrientation); + if (mOriginalBitmapLarge == null) { + return false; + } + int sw = ImageLoader.SMALL_BITMAP_DIM; + int sh = (int) (sw * (float) mOriginalBitmapLarge.getHeight() / (float) mOriginalBitmapLarge + .getWidth()); + mOriginalBitmapSmall = Bitmap.createScaledBitmap(mOriginalBitmapLarge, sw, sh, true); + mZoomOrientation = mOrientation; + warnListeners(); + return true; + } + public void setSupportsHighRes(boolean value) { mSupportsHighRes = value; } @@ -129,8 +218,8 @@ public class MasterImage implements RenderingRequestCaller { mActivity = activity; } - public ImageLoader getLoader() { - return mLoader; + public FilterShowActivity getActivity() { + return mActivity; } public synchronized ImagePreset getPreset() { @@ -152,7 +241,6 @@ public class MasterImage implements RenderingRequestCaller { preset.showFilters(); } mPreset = preset; - mPreset.setImageLoader(mLoader); setGeometry(); mPreset.fillImageStateAdapter(mState); if (addToHistory) { @@ -169,7 +257,7 @@ public class MasterImage implements RenderingRequestCaller { } private void setGeometry() { - Bitmap image = mLoader.getOriginalBitmapLarge(); + Bitmap image = getOriginalBitmapLarge(); if (image == null) { return; } @@ -211,14 +299,6 @@ public class MasterImage implements RenderingRequestCaller { mState = adapter; } - public void setImageLoader(ImageLoader loader) { - mLoader = loader; - } - - public ImageLoader getImageLoader() { - return mLoader; - } - public void setCurrentFilter(ImageFilter filter) { mCurrentFilter = filter; } @@ -304,7 +384,7 @@ public class MasterImage implements RenderingRequestCaller { if (force || mGeometryOnlyPreset == null || !newPreset.same(mGeometryOnlyPreset)) { mGeometryOnlyPreset = newPreset; - RenderingRequest.post(mLoader.getOriginalBitmapLarge(), + RenderingRequest.post(getOriginalBitmapLarge(), mGeometryOnlyPreset, RenderingRequest.GEOMETRY_RENDERING, this); } } @@ -315,7 +395,7 @@ public class MasterImage implements RenderingRequestCaller { if (force || mFiltersOnlyPreset == null || !newPreset.same(mFiltersOnlyPreset)) { mFiltersOnlyPreset = newPreset; - RenderingRequest.post(mLoader.getOriginalBitmapLarge(), + RenderingRequest.post(MasterImage.getImage().getOriginalBitmapLarge(), mFiltersOnlyPreset, RenderingRequest.FILTERS_RENDERING, this); } } @@ -369,14 +449,13 @@ public class MasterImage implements RenderingRequestCaller { private Matrix getImageToScreenMatrix(boolean reflectRotation) { GeometryMetadata geo = mPreset.getGeometry(); - if (geo == null || mLoader == null - || mLoader.getOriginalBounds() == null + if (geo == null || getOriginalBounds() == null || mImageShowSize.x == 0) { return new Matrix(); } Matrix m = geo.getOriginalToScreen(reflectRotation, - mLoader.getOriginalBounds().width(), - mLoader.getOriginalBounds().height(), mImageShowSize.x, mImageShowSize.y); + getOriginalBounds().width(), + getOriginalBounds().height(), mImageShowSize.x, mImageShowSize.y); Point translate = getTranslation(); float scaleFactor = getScaleFactor(); m.postTranslate(translate.x, translate.y); @@ -518,11 +597,11 @@ public class MasterImage implements RenderingRequestCaller { } public Bitmap getThumbnailBitmap() { - return mLoader.getOriginalBitmapSmall(); + return getOriginalBitmapSmall(); } public Bitmap getLargeThumbnailBitmap() { - return mLoader.getOriginalBitmapLarge(); + return getOriginalBitmapLarge(); } public float getMaxScaleFactor() { |