Image, apply bounds for result drawable if empty
This commit is contained in:
parent
a3ebae3b87
commit
5c78f1d515
@ -1,7 +1,6 @@
|
|||||||
package io.noties.markwon.app;
|
package io.noties.markwon.app;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
@ -10,8 +9,6 @@ import android.text.Spanned;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
@ -26,10 +23,7 @@ import io.noties.markwon.ext.strikethrough.StrikethroughPlugin;
|
|||||||
import io.noties.markwon.ext.tables.TablePlugin;
|
import io.noties.markwon.ext.tables.TablePlugin;
|
||||||
import io.noties.markwon.ext.tasklist.TaskListPlugin;
|
import io.noties.markwon.ext.tasklist.TaskListPlugin;
|
||||||
import io.noties.markwon.html.HtmlPlugin;
|
import io.noties.markwon.html.HtmlPlugin;
|
||||||
import io.noties.markwon.image.ImageItem;
|
|
||||||
import io.noties.markwon.image.ImagesPlugin;
|
import io.noties.markwon.image.ImagesPlugin;
|
||||||
import io.noties.markwon.image.MediaDecoder;
|
|
||||||
import io.noties.markwon.image.SchemeHandler;
|
|
||||||
import io.noties.markwon.image.file.FileSchemeHandler;
|
import io.noties.markwon.image.file.FileSchemeHandler;
|
||||||
import io.noties.markwon.image.network.OkHttpNetworkSchemeHandler;
|
import io.noties.markwon.image.network.OkHttpNetworkSchemeHandler;
|
||||||
import io.noties.markwon.syntax.Prism4jTheme;
|
import io.noties.markwon.syntax.Prism4jTheme;
|
||||||
@ -126,29 +120,6 @@ public class MarkdownRenderer {
|
|||||||
builder.urlProcessor(urlProcessor);
|
builder.urlProcessor(urlProcessor);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.usePlugin(new AbstractMarkwonPlugin() {
|
|
||||||
@Override
|
|
||||||
public void configure(@NonNull Registry registry) {
|
|
||||||
registry.require(ImagesPlugin.class, new Action<ImagesPlugin>() {
|
|
||||||
@Override
|
|
||||||
public void apply(@NonNull ImagesPlugin imagesPlugin) {
|
|
||||||
imagesPlugin.addMediaDecoder(new MediaDecoder() {
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public Drawable decode(@Nullable String contentType, @NonNull InputStream inputStream) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public Collection<String> supportedTypes() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
final long start = SystemClock.uptimeMillis();
|
final long start = SystemClock.uptimeMillis();
|
||||||
|
@ -145,9 +145,6 @@ final Markwon markwon = Markwon.builder(context)
|
|||||||
// it's fine if it throws, async-image-loader will catch exception
|
// it's fine if it throws, async-image-loader will catch exception
|
||||||
final Drawable drawable = context.getDrawable(resourceId);
|
final Drawable drawable = context.getDrawable(resourceId);
|
||||||
|
|
||||||
// it's important to apply bounds to resulting drawable
|
|
||||||
DrawableUtils.applyIntrinsicBounds(drawable);
|
|
||||||
|
|
||||||
return ImageItem.withResult(drawable);
|
return ImageItem.withResult(drawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
# Migration 3.x.x -> 4.x.x
|
# Migration 3.x.x -> 4.x.x
|
||||||
|
|
||||||
|
* maven group-id is changed: `io.noties.markwon` (was `ru.noties.markwon`)
|
||||||
|
* root package-name is changed: `io.noties.markwon` (was `ru.noties.markwon`)
|
||||||
|
|
||||||
todo
|
todo
|
@ -15,7 +15,7 @@ textView.setSpannableFactory(NoCopySpannableFactory.getInstance());
|
|||||||
## Autolink
|
## Autolink
|
||||||
|
|
||||||
Do not use `autolink` XML attribute on your `TextView` as it will remove all links except autolinked ones.
|
Do not use `autolink` XML attribute on your `TextView` as it will remove all links except autolinked ones.
|
||||||
Consider using [linkify plugin](/docs/v4/linkify.md) or commonmark-java [autolink extension](https://github.com/atlassian/commonmark-java)
|
Consider using [linkify plugin](/docs/v4/linkify/) or commonmark-java [autolink extension](https://github.com/atlassian/commonmark-java)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,6 +143,12 @@ class AsyncDrawableLoaderImpl extends AsyncDrawableLoader {
|
|||||||
|
|
||||||
final Drawable out = drawable;
|
final Drawable out = drawable;
|
||||||
|
|
||||||
|
// @since 4.0.0-SNAPSHOT apply intrinsic bounds (but only if they are empty)
|
||||||
|
if (out != null
|
||||||
|
&& out.getBounds().isEmpty()) {
|
||||||
|
DrawableUtils.applyIntrinsicBounds(out);
|
||||||
|
}
|
||||||
|
|
||||||
handler.postAtTime(new Runnable() {
|
handler.postAtTime(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
@ -50,9 +50,7 @@ public class DefaultMediaDecoder extends MediaDecoder {
|
|||||||
throw new IllegalStateException("Exception decoding input-stream", t);
|
throw new IllegalStateException("Exception decoding input-stream", t);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Drawable drawable = new BitmapDrawable(resources, bitmap);
|
return new BitmapDrawable(resources, bitmap);
|
||||||
DrawableUtils.applyIntrinsicBounds(drawable);
|
|
||||||
return drawable;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -65,8 +65,6 @@ public class GifMediaDecoder extends MediaDecoder {
|
|||||||
throw new IllegalStateException("Exception creating GifDrawable", e);
|
throw new IllegalStateException("Exception creating GifDrawable", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawableUtils.applyIntrinsicBounds(drawable);
|
|
||||||
|
|
||||||
if (!autoPlayGif) {
|
if (!autoPlayGif) {
|
||||||
drawable.pause();
|
drawable.pause();
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ import java.io.InputStream;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
import io.noties.markwon.image.DrawableUtils;
|
|
||||||
import io.noties.markwon.image.MediaDecoder;
|
import io.noties.markwon.image.MediaDecoder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -73,9 +72,7 @@ public class SvgMediaDecoder extends MediaDecoder {
|
|||||||
canvas.scale(density, density);
|
canvas.scale(density, density);
|
||||||
svg.renderToCanvas(canvas);
|
svg.renderToCanvas(canvas);
|
||||||
|
|
||||||
final Drawable drawable = new BitmapDrawable(resources, bitmap);
|
return new BitmapDrawable(resources, bitmap);
|
||||||
DrawableUtils.applyIntrinsicBounds(drawable);
|
|
||||||
return drawable;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
Loading…
x
Reference in New Issue
Block a user