aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/network/HtmlImage.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/network/HtmlImage.java')
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java30
1 files changed, 19 insertions, 11 deletions
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index 31edc9f..ab902d2 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -89,7 +89,7 @@ public class HtmlImage implements Html.ImageGetter {
final private int maxWidth;
final private int maxHeight;
final private Resources resources;
- final private TextView view;
+ protected final TextView view;
// Background loading
final private PublishSubject<Observable<String>> loading = PublishSubject.create();
@@ -154,6 +154,10 @@ public class HtmlImage implements Html.ImageGetter {
if (view == null) {
return drawable.toBlocking().lastOrDefault(null);
}
+ return getContainerDrawable(drawable);
+ }
+
+ protected BitmapDrawable getContainerDrawable(final Observable<BitmapDrawable> drawable) {
return new ContainerDrawable(view, drawable);
}
@@ -162,17 +166,17 @@ public class HtmlImage implements Html.ImageGetter {
public Observable<BitmapDrawable> fetchDrawable(final String url) {
if (StringUtils.isBlank(url) || ImageUtils.containsPattern(url, BLOCKED)) {
- return Observable.from(ImageUtils.getTransparent1x1Drawable(resources));
+ return Observable.just(ImageUtils.getTransparent1x1Drawable(resources));
}
// Explicit local file URLs are loaded from the filesystem regardless of their age. The IO part is short
// enough to make the whole operation on the computation scheduler.
if (FileUtils.isFileUrl(url)) {
- return Observable.defer(new Func0<Observable<? extends BitmapDrawable>>() {
+ return Observable.defer(new Func0<Observable<BitmapDrawable>>() {
@Override
- public Observable<? extends BitmapDrawable> call() {
+ public Observable<BitmapDrawable> call() {
final Bitmap bitmap = loadCachedImage(FileUtils.urlToFile(url), true).getLeft();
- return bitmap != null ? Observable.from(ImageUtils.scaleBitmapToFitDisplay(bitmap)) : Observable.<BitmapDrawable>empty();
+ return bitmap != null ? Observable.just(ImageUtils.scaleBitmapToFitDisplay(bitmap)) : Observable.<BitmapDrawable>empty();
}
}).subscribeOn(RxUtils.computationScheduler);
}
@@ -208,12 +212,7 @@ public class HtmlImage implements Html.ImageGetter {
private Pair<BitmapDrawable, Boolean> loadFromDisk() {
final Pair<Bitmap, Boolean> loadResult = loadImageFromStorage(url, pseudoGeocode, shared);
- final Bitmap bitmap = loadResult.getLeft();
- return new ImmutablePair<>(bitmap != null ?
- ImageUtils.scaleBitmapToFitDisplay(bitmap) :
- null,
- loadResult.getRight()
- );
+ return scaleImage(loadResult);
}
private void downloadAndSave(final Subscriber<? super BitmapDrawable> subscriber) {
@@ -254,6 +253,15 @@ public class HtmlImage implements Html.ImageGetter {
});
}
+ @SuppressWarnings("static-method")
+ protected Pair<BitmapDrawable, Boolean> scaleImage(final Pair<Bitmap, Boolean> loadResult) {
+ final Bitmap bitmap = loadResult.getLeft();
+ return new ImmutablePair<>(bitmap != null ?
+ ImageUtils.scaleBitmapToFitDisplay(bitmap) :
+ null,
+ loadResult.getRight());
+ }
+
public Observable<String> waitForEndObservable(@Nullable final CancellableHandler handler) {
if (handler != null) {
handler.unsubscribeIfCancelled(subscription);