From a94090a7464b0f2fe33e8f85d92161f2bc50100d Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Sun, 8 Mar 2020 13:03:40 +0300 Subject: [PATCH] latex, expose text color customization --- CHANGELOG.md | 2 + .../markwon/ext/latex/JLatexMathPlugin.java | 10 ++++ .../markwon/ext/latex/JLatexMathTheme.java | 51 +++++++++++++++++++ .../markwon/sample/latex/LatexActivity.java | 12 ++--- 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b86d8953..dc89ffae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,10 +18,12 @@ * `LinkResolverDef` defaults to `https` when a link does not have scheme information ([#75]) * add `option` abstraction for `sample` module allowing switching of multiple cases in runtime via menu * non-empty bounds for `AsyncDrawable` when no dimensions are not yet available ([#189]) +* `JLatexMathPlugin` add text color customization ([#207]) [#189]: https://github.com/noties/Markwon/issues/189 [#75]: https://github.com/noties/Markwon/issues/75 [#204]: https://github.com/noties/Markwon/issues/204 +[#207]: https://github.com/noties/Markwon/issues/207 # 4.2.2 diff --git a/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java b/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java index 02bb618e..1403edb9 100644 --- a/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java +++ b/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java @@ -454,6 +454,7 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { final JLatexMathTheme.BackgroundProvider backgroundProvider = theme.blockBackgroundProvider(); final JLatexMathTheme.Padding padding = theme.blockPadding(); + final int color = theme.blockTextColor(); final JLatexMathDrawable.Builder builder = JLatexMathDrawable.builder(latex) .textSize(theme.blockTextSize()) @@ -468,6 +469,10 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { builder.padding(padding.left, padding.top, padding.right, padding.bottom); } + if (color != 0) { + builder.color(color); + } + return builder.build(); } @@ -479,6 +484,7 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { final JLatexMathTheme.BackgroundProvider backgroundProvider = theme.inlineBackgroundProvider(); final JLatexMathTheme.Padding padding = theme.inlinePadding(); + final int color = theme.inlineTextColor(); final JLatexMathDrawable.Builder builder = JLatexMathDrawable.builder(latex) .textSize(theme.inlineTextSize()) @@ -492,6 +498,10 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { builder.padding(padding.left, padding.top, padding.right, padding.bottom); } + if (color != 0) { + builder.color(color); + } + return builder.build(); } diff --git a/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathTheme.java b/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathTheme.java index 8a1d8801..4f8ede7b 100644 --- a/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathTheme.java +++ b/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathTheme.java @@ -2,6 +2,7 @@ package io.noties.markwon.ext.latex; import android.graphics.drawable.Drawable; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.Px; @@ -118,6 +119,11 @@ public abstract class JLatexMathTheme { @Nullable public abstract Padding blockPadding(); + @ColorInt + public abstract int inlineTextColor(); + + @ColorInt + public abstract int blockTextColor(); public static class Builder { private final float textSize; @@ -136,6 +142,10 @@ public abstract class JLatexMathTheme { private Padding inlinePadding; private Padding blockPadding; + private int textColor = 0xFF000000; + private int inlineTextColor; + private int blockTextColor; + Builder(float textSize, float inlineTextSize, float blockTextSize) { this.textSize = textSize; this.inlineTextSize = inlineTextSize; @@ -194,6 +204,24 @@ public abstract class JLatexMathTheme { return this; } + @NonNull + public Builder textColor(@ColorInt int textColor) { + this.textColor = textColor; + return this; + } + + @NonNull + public Builder inlineTextColor(@ColorInt int inlineTextColor) { + this.inlineTextColor = inlineTextColor; + return this; + } + + @NonNull + public Builder blockTextColor(@ColorInt int blockTextColor) { + this.blockTextColor = blockTextColor; + return this; + } + @NonNull public JLatexMathTheme build() { return new Impl(this); @@ -218,6 +246,10 @@ public abstract class JLatexMathTheme { private final Padding inlinePadding; private final Padding blockPadding; + private final int textColor; + private final int inlineTextColor; + private final int blockTextColor; + Impl(@NonNull Builder builder) { this.textSize = builder.textSize; this.inlineTextSize = builder.inlineTextSize; @@ -230,6 +262,9 @@ public abstract class JLatexMathTheme { this.padding = builder.padding; this.inlinePadding = builder.inlinePadding; this.blockPadding = builder.blockPadding; + this.textColor = builder.textColor; + this.inlineTextColor = builder.inlineTextColor; + this.blockTextColor = builder.blockTextColor; } @Override @@ -293,5 +328,21 @@ public abstract class JLatexMathTheme { } return padding; } + + @Override + public int inlineTextColor() { + if (inlineTextColor != 0) { + return inlineTextColor; + } + return textColor; + } + + @Override + public int blockTextColor() { + if (blockTextColor != 0) { + return blockTextColor; + } + return textColor; + } } } diff --git a/sample/src/main/java/io/noties/markwon/sample/latex/LatexActivity.java b/sample/src/main/java/io/noties/markwon/sample/latex/LatexActivity.java index 8a55a8ec..9816b0a1 100644 --- a/sample/src/main/java/io/noties/markwon/sample/latex/LatexActivity.java +++ b/sample/src/main/java/io/noties/markwon/sample/latex/LatexActivity.java @@ -1,6 +1,7 @@ package io.noties.markwon.sample.latex; import android.content.res.Resources; +import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -141,12 +142,11 @@ public class LatexActivity extends ActivityWithMenuOptions { final String md = wrapLatexInSampleMarkdown(LATEX_LONG_DIVISION); final Markwon markwon = Markwon.builder(this) .usePlugin(MarkwonInlineParserPlugin.create()) - .usePlugin(JLatexMathPlugin.create(textView.getTextSize(), new JLatexMathPlugin.BuilderConfigure() { - @Override - public void configureBuilder(@NonNull JLatexMathPlugin.Builder builder) { - - } - })) + .usePlugin(JLatexMathPlugin.create(textView.getTextSize(), builder -> builder.theme() + .inlineTextColor(Color.RED) + .blockTextColor(Color.GREEN) + .inlineBackgroundProvider(() -> new ColorDrawable(Color.YELLOW)) + .blockBackgroundProvider(() -> new ColorDrawable(Color.GRAY)))) .build(); markwon.setMarkdown(textView, md); }