From 062a1251cb7611ef50c12d4560c5b64bfe6416db Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Sun, 17 Jun 2018 16:18:12 +0200 Subject: [PATCH] Markdown images size is also resolved via ImageSizeResolver --- README.md | 5 ++--- .../markwon/SpannableConfiguration.java | 20 ++++++++++++------- .../renderer/{html => }/ImageSize.java | 10 +++++++++- .../{html => }/ImageSizeResolver.java | 2 +- .../{html => }/ImageSizeResolverDef.java | 2 +- .../renderer/SpannableMarkdownVisitor.java | 4 +++- .../renderer/html/ImageProviderImpl.java | 2 ++ .../renderer/html/SpannableHtmlParser.java | 2 ++ .../noties/markwon/spans/AsyncDrawable.java | 11 ++++++---- 9 files changed, 40 insertions(+), 18 deletions(-) rename library/src/main/java/ru/noties/markwon/renderer/{html => }/ImageSize.java (78%) rename library/src/main/java/ru/noties/markwon/renderer/{html => }/ImageSizeResolver.java (95%) rename library/src/main/java/ru/noties/markwon/renderer/{html => }/ImageSizeResolverDef.java (98%) diff --git a/README.md b/README.md index d9406ab6..49938317 100644 --- a/README.md +++ b/README.md @@ -299,9 +299,8 @@ Underscores (`_`) ## Applications using Markwon - -
-FairNote Notepad
+* [FairNote Notepad](https://play.google.com/store/apps/details?id=com.rgiskard.fairnote) + ## License diff --git a/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java b/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java index 3b9332bd..3aa18cb1 100644 --- a/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java +++ b/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java @@ -3,8 +3,8 @@ package ru.noties.markwon; import android.content.Context; import android.support.annotation.NonNull; -import ru.noties.markwon.renderer.html.ImageSizeResolver; -import ru.noties.markwon.renderer.html.ImageSizeResolverDef; +import ru.noties.markwon.renderer.ImageSizeResolver; +import ru.noties.markwon.renderer.ImageSizeResolverDef; import ru.noties.markwon.renderer.html.SpannableHtmlParser; import ru.noties.markwon.spans.AsyncDrawable; import ru.noties.markwon.spans.LinkSpan; @@ -30,6 +30,7 @@ public class SpannableConfiguration { private final LinkSpan.Resolver linkResolver; private final UrlProcessor urlProcessor; private final SpannableHtmlParser htmlParser; + private final ImageSizeResolver imageSizeResolver; private SpannableConfiguration(@NonNull Builder builder) { this.theme = builder.theme; @@ -38,6 +39,7 @@ public class SpannableConfiguration { this.linkResolver = builder.linkResolver; this.urlProcessor = builder.urlProcessor; this.htmlParser = builder.htmlParser; + this.imageSizeResolver = builder.imageSizeResolver; } @NonNull @@ -70,6 +72,11 @@ public class SpannableConfiguration { return htmlParser; } + @NonNull + public ImageSizeResolver imageSizeResolver() { + return imageSizeResolver; + } + @SuppressWarnings("unused") public static class Builder { @@ -154,12 +161,11 @@ public class SpannableConfiguration { urlProcessor = new UrlProcessorNoOp(); } + if (imageSizeResolver == null) { + imageSizeResolver = new ImageSizeResolverDef(); + } + if (htmlParser == null) { - - if (imageSizeResolver == null) { - imageSizeResolver = new ImageSizeResolverDef(); - } - htmlParser = SpannableHtmlParser.create(theme, asyncDrawableLoader, urlProcessor, linkResolver, imageSizeResolver); } diff --git a/library/src/main/java/ru/noties/markwon/renderer/html/ImageSize.java b/library/src/main/java/ru/noties/markwon/renderer/ImageSize.java similarity index 78% rename from library/src/main/java/ru/noties/markwon/renderer/html/ImageSize.java rename to library/src/main/java/ru/noties/markwon/renderer/ImageSize.java index f65144ab..074ce880 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/html/ImageSize.java +++ b/library/src/main/java/ru/noties/markwon/renderer/ImageSize.java @@ -1,4 +1,4 @@ -package ru.noties.markwon.renderer.html; +package ru.noties.markwon.renderer; import android.support.annotation.Nullable; @@ -34,4 +34,12 @@ public class ImageSize { this.width = width; this.height = height; } + + @Override + public String toString() { + return "ImageSize{" + + "width=" + width + + ", height=" + height + + '}'; + } } diff --git a/library/src/main/java/ru/noties/markwon/renderer/html/ImageSizeResolver.java b/library/src/main/java/ru/noties/markwon/renderer/ImageSizeResolver.java similarity index 95% rename from library/src/main/java/ru/noties/markwon/renderer/html/ImageSizeResolver.java rename to library/src/main/java/ru/noties/markwon/renderer/ImageSizeResolver.java index 41574bb7..a7241914 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/html/ImageSizeResolver.java +++ b/library/src/main/java/ru/noties/markwon/renderer/ImageSizeResolver.java @@ -1,4 +1,4 @@ -package ru.noties.markwon.renderer.html; +package ru.noties.markwon.renderer; import android.graphics.Rect; import android.support.annotation.NonNull; diff --git a/library/src/main/java/ru/noties/markwon/renderer/html/ImageSizeResolverDef.java b/library/src/main/java/ru/noties/markwon/renderer/ImageSizeResolverDef.java similarity index 98% rename from library/src/main/java/ru/noties/markwon/renderer/html/ImageSizeResolverDef.java rename to library/src/main/java/ru/noties/markwon/renderer/ImageSizeResolverDef.java index b7eb1fc9..60710f71 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/html/ImageSizeResolverDef.java +++ b/library/src/main/java/ru/noties/markwon/renderer/ImageSizeResolverDef.java @@ -1,4 +1,4 @@ -package ru.noties.markwon.renderer.html; +package ru.noties.markwon.renderer; import android.graphics.Rect; import android.support.annotation.NonNull; diff --git a/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java b/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java index 31195a4c..ceb22ef0 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java +++ b/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java @@ -438,7 +438,9 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { configuration.theme(), new AsyncDrawable( destination, - configuration.asyncDrawableLoader() + configuration.asyncDrawableLoader(), + configuration.imageSizeResolver(), + null ), AsyncDrawableSpan.ALIGN_BOTTOM, link diff --git a/library/src/main/java/ru/noties/markwon/renderer/html/ImageProviderImpl.java b/library/src/main/java/ru/noties/markwon/renderer/html/ImageProviderImpl.java index 54a5086f..1d5968b7 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/html/ImageProviderImpl.java +++ b/library/src/main/java/ru/noties/markwon/renderer/html/ImageProviderImpl.java @@ -11,6 +11,8 @@ import java.util.HashMap; import java.util.Map; 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.AsyncDrawableSpan; import ru.noties.markwon.spans.SpannableTheme; diff --git a/library/src/main/java/ru/noties/markwon/renderer/html/SpannableHtmlParser.java b/library/src/main/java/ru/noties/markwon/renderer/html/SpannableHtmlParser.java index 6423e1f9..3d7236a9 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/html/SpannableHtmlParser.java +++ b/library/src/main/java/ru/noties/markwon/renderer/html/SpannableHtmlParser.java @@ -13,6 +13,8 @@ import java.util.Map; import ru.noties.markwon.LinkResolverDef; import ru.noties.markwon.UrlProcessor; 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.LinkSpan; import ru.noties.markwon.spans.SpannableTheme; diff --git a/library/src/main/java/ru/noties/markwon/spans/AsyncDrawable.java b/library/src/main/java/ru/noties/markwon/spans/AsyncDrawable.java index 705b666f..15ae4483 100644 --- a/library/src/main/java/ru/noties/markwon/spans/AsyncDrawable.java +++ b/library/src/main/java/ru/noties/markwon/spans/AsyncDrawable.java @@ -10,8 +10,8 @@ import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import ru.noties.markwon.renderer.html.ImageSize; -import ru.noties.markwon.renderer.html.ImageSizeResolver; +import ru.noties.markwon.renderer.ImageSize; +import ru.noties.markwon.renderer.ImageSizeResolver; public class AsyncDrawable extends Drawable { @@ -33,6 +33,10 @@ public class AsyncDrawable extends Drawable { private int canvasWidth; private float textSize; + /** + * @deprecated 1.0.6 markdown images are also processed with {@link ImageSizeResolver} + */ + @Deprecated public AsyncDrawable(@NonNull String destination, @NonNull Loader loader) { this(destination, loader, null, null); } @@ -176,8 +180,7 @@ public class AsyncDrawable extends Drawable { final Rect rect; - if (imageSizeResolver == null - || imageSize == null) { + if (imageSizeResolver == null) { // @since 1.0.5 final Rect bounds = result.getBounds();