1ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdonpackage com.android.ex.photo.loaders;
2ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon
34f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerianimport android.content.res.Resources;
4ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdonimport android.graphics.Bitmap;
54f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerianimport android.graphics.drawable.BitmapDrawable;
64f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerianimport android.graphics.drawable.Drawable;
7ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon
8ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdonpublic interface PhotoBitmapLoaderInterface {
9ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon
10ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon    public void setPhotoUri(String photoUri);
11ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon
12ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon    public void forceLoad();
13ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon
14ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon    public static class BitmapResult {
15ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon        public static final int STATUS_SUCCESS = 0;
16ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon        public static final int STATUS_EXCEPTION = 1;
17ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon
184f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian        public Drawable drawable;
19ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon        public Bitmap bitmap;
20ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon        public int status;
214f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian
227887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein        /**
237887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein         * Returns a drawable to be used in the {@link com.android.ex.photo.views.PhotoView}.
247887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein         * Should return null if the drawable is not ready to be shown (for instance, if
257887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein         * the underlying bitmap is null).
267887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein         */
274f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian        public Drawable getDrawable(Resources resources) {
284f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian            if (resources == null) {
294f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian                throw new IllegalArgumentException("resources can not be null!");
304f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian            }
314f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian
324f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian            if (drawable != null) {
337887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein                return drawable;
344f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian            }
354f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian
367887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein            // Don't create a new drawable if there's no bitmap. PhotoViewFragment regards
377887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein            // a null drawable as a signal to keep showing the loading stuff.
387887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein            // b/12348405.
397887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein            if (bitmap == null) {
407887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein                return null;
417887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein            }
427887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein
437887d9694aef23e4a0165b338726e6a9690a709aAndrew Sapperstein            return new BitmapDrawable(resources, bitmap);
444f49ea6da326194dffa0348a83d8110ac30d92e4Matt Keoshkerian        }
45ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon    }
46ca8fdcd23fcc53e0429abf8d4ef80e8d6d8fe6faMartin Hibdon}
47