Markdown images size is also resolved via ImageSizeResolver

This commit is contained in:
Dimitry Ivanov 2018-06-17 16:18:12 +02:00
parent b1587f9a46
commit 062a1251cb
9 changed files with 40 additions and 18 deletions

View File

@ -299,9 +299,8 @@ Underscores (`_`)
## Applications using Markwon ## Applications using Markwon
<a href="https://play.google.com/store/apps/details?id=com.rgiskard.fairnote"> * [FairNote Notepad](https://play.google.com/store/apps/details?id=com.rgiskard.fairnote)
<img src="https://lh3.googleusercontent.com/9IGNiS66dweMOEm7F5JzzKpF8ggys5h7kxYRlbXWZIbbA5T1Vqp7xrLdW90V1VTMPw=s360" width="128px"><br>
FairNote Notepad</a>
## License ## License

View File

@ -3,8 +3,8 @@ package ru.noties.markwon;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import ru.noties.markwon.renderer.html.ImageSizeResolver; import ru.noties.markwon.renderer.ImageSizeResolver;
import ru.noties.markwon.renderer.html.ImageSizeResolverDef; import ru.noties.markwon.renderer.ImageSizeResolverDef;
import ru.noties.markwon.renderer.html.SpannableHtmlParser; import ru.noties.markwon.renderer.html.SpannableHtmlParser;
import ru.noties.markwon.spans.AsyncDrawable; import ru.noties.markwon.spans.AsyncDrawable;
import ru.noties.markwon.spans.LinkSpan; import ru.noties.markwon.spans.LinkSpan;
@ -30,6 +30,7 @@ public class SpannableConfiguration {
private final LinkSpan.Resolver linkResolver; private final LinkSpan.Resolver linkResolver;
private final UrlProcessor urlProcessor; private final UrlProcessor urlProcessor;
private final SpannableHtmlParser htmlParser; private final SpannableHtmlParser htmlParser;
private final ImageSizeResolver imageSizeResolver;
private SpannableConfiguration(@NonNull Builder builder) { private SpannableConfiguration(@NonNull Builder builder) {
this.theme = builder.theme; this.theme = builder.theme;
@ -38,6 +39,7 @@ public class SpannableConfiguration {
this.linkResolver = builder.linkResolver; this.linkResolver = builder.linkResolver;
this.urlProcessor = builder.urlProcessor; this.urlProcessor = builder.urlProcessor;
this.htmlParser = builder.htmlParser; this.htmlParser = builder.htmlParser;
this.imageSizeResolver = builder.imageSizeResolver;
} }
@NonNull @NonNull
@ -70,6 +72,11 @@ public class SpannableConfiguration {
return htmlParser; return htmlParser;
} }
@NonNull
public ImageSizeResolver imageSizeResolver() {
return imageSizeResolver;
}
@SuppressWarnings("unused") @SuppressWarnings("unused")
public static class Builder { public static class Builder {
@ -154,12 +161,11 @@ public class SpannableConfiguration {
urlProcessor = new UrlProcessorNoOp(); urlProcessor = new UrlProcessorNoOp();
} }
if (htmlParser == null) {
if (imageSizeResolver == null) { if (imageSizeResolver == null) {
imageSizeResolver = new ImageSizeResolverDef(); imageSizeResolver = new ImageSizeResolverDef();
} }
if (htmlParser == null) {
htmlParser = SpannableHtmlParser.create(theme, asyncDrawableLoader, urlProcessor, linkResolver, imageSizeResolver); htmlParser = SpannableHtmlParser.create(theme, asyncDrawableLoader, urlProcessor, linkResolver, imageSizeResolver);
} }

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.renderer.html; package ru.noties.markwon.renderer;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -34,4 +34,12 @@ public class ImageSize {
this.width = width; this.width = width;
this.height = height; this.height = height;
} }
@Override
public String toString() {
return "ImageSize{" +
"width=" + width +
", height=" + height +
'}';
}
} }

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.renderer.html; package ru.noties.markwon.renderer;
import android.graphics.Rect; import android.graphics.Rect;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.renderer.html; package ru.noties.markwon.renderer;
import android.graphics.Rect; import android.graphics.Rect;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;

View File

@ -438,7 +438,9 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
configuration.theme(), configuration.theme(),
new AsyncDrawable( new AsyncDrawable(
destination, destination,
configuration.asyncDrawableLoader() configuration.asyncDrawableLoader(),
configuration.imageSizeResolver(),
null
), ),
AsyncDrawableSpan.ALIGN_BOTTOM, AsyncDrawableSpan.ALIGN_BOTTOM,
link link

View File

@ -11,6 +11,8 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import ru.noties.markwon.UrlProcessor; import ru.noties.markwon.UrlProcessor;
import ru.noties.markwon.renderer.ImageSize;
import ru.noties.markwon.renderer.ImageSizeResolver;
import ru.noties.markwon.spans.AsyncDrawable; import ru.noties.markwon.spans.AsyncDrawable;
import ru.noties.markwon.spans.AsyncDrawableSpan; import ru.noties.markwon.spans.AsyncDrawableSpan;
import ru.noties.markwon.spans.SpannableTheme; import ru.noties.markwon.spans.SpannableTheme;

View File

@ -13,6 +13,8 @@ import java.util.Map;
import ru.noties.markwon.LinkResolverDef; import ru.noties.markwon.LinkResolverDef;
import ru.noties.markwon.UrlProcessor; import ru.noties.markwon.UrlProcessor;
import ru.noties.markwon.UrlProcessorNoOp; import ru.noties.markwon.UrlProcessorNoOp;
import ru.noties.markwon.renderer.ImageSizeResolver;
import ru.noties.markwon.renderer.ImageSizeResolverDef;
import ru.noties.markwon.spans.AsyncDrawable; import ru.noties.markwon.spans.AsyncDrawable;
import ru.noties.markwon.spans.LinkSpan; import ru.noties.markwon.spans.LinkSpan;
import ru.noties.markwon.spans.SpannableTheme; import ru.noties.markwon.spans.SpannableTheme;

View File

@ -10,8 +10,8 @@ import android.support.annotation.IntRange;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import ru.noties.markwon.renderer.html.ImageSize; import ru.noties.markwon.renderer.ImageSize;
import ru.noties.markwon.renderer.html.ImageSizeResolver; import ru.noties.markwon.renderer.ImageSizeResolver;
public class AsyncDrawable extends Drawable { public class AsyncDrawable extends Drawable {
@ -33,6 +33,10 @@ public class AsyncDrawable extends Drawable {
private int canvasWidth; private int canvasWidth;
private float textSize; private float textSize;
/**
* @deprecated 1.0.6 markdown images are also processed with {@link ImageSizeResolver}
*/
@Deprecated
public AsyncDrawable(@NonNull String destination, @NonNull Loader loader) { public AsyncDrawable(@NonNull String destination, @NonNull Loader loader) {
this(destination, loader, null, null); this(destination, loader, null, null);
} }
@ -176,8 +180,7 @@ public class AsyncDrawable extends Drawable {
final Rect rect; final Rect rect;
if (imageSizeResolver == null if (imageSizeResolver == null) {
|| imageSize == null) {
// @since 1.0.5 // @since 1.0.5
final Rect bounds = result.getBounds(); final Rect bounds = result.getBounds();