diff --git a/gradle.properties b/gradle.properties index a98b01b9..6a624106 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.configureondemand=true android.enableBuildCache=true android.buildCacheDir=build/pre-dex-cache -VERSION_NAME=1.0.1 +VERSION_NAME=1.0.2 GROUP=ru.noties POM_DESCRIPTION=Markwon diff --git a/library/src/main/java/ru/noties/markwon/SpannableBuilder.java b/library/src/main/java/ru/noties/markwon/SpannableBuilder.java index 9e25dbe8..95570900 100644 --- a/library/src/main/java/ru/noties/markwon/SpannableBuilder.java +++ b/library/src/main/java/ru/noties/markwon/SpannableBuilder.java @@ -160,6 +160,24 @@ public class SpannableBuilder { impl.setSpan(span.what, span.start, span.end, span.flags); } + // now, let's remove trailing newLines (so small amounts of text are displayed correctly) + // @since 1.0.2 + + final int length = impl.length(); + if (length > 0) { + int amount = 0; + for (int i = length - 1; i >=0 ; i--) { + if (Character.isWhitespace(impl.charAt(i))) { + amount += 1; + } else { + break; + } + } + if (amount > 0) { + impl.replace(length - amount, length, ""); + } + } + return impl; } diff --git a/library/src/main/java/ru/noties/markwon/spans/HeadingSpan.java b/library/src/main/java/ru/noties/markwon/spans/HeadingSpan.java index 0931170e..6293d554 100644 --- a/library/src/main/java/ru/noties/markwon/spans/HeadingSpan.java +++ b/library/src/main/java/ru/noties/markwon/spans/HeadingSpan.java @@ -53,20 +53,24 @@ public class HeadingSpan extends MetricAffectingSpan implements LeadingMarginSpa theme.applyHeadingBreakStyle(paint); final float height = paint.getStrokeWidth(); - final int b = (int) (bottom - height + .5F); - final int left; - final int right; - if (dir > 0) { - left = x; - right = c.getWidth(); - } else { - left = x - c.getWidth(); - right = x; + if (height > .0F) { + + final int b = (int) (bottom - height + .5F); + + final int left; + final int right; + if (dir > 0) { + left = x; + right = c.getWidth(); + } else { + left = x - c.getWidth(); + right = x; + } + + rect.set(left, b, right, bottom); + c.drawRect(rect, paint); } - - rect.set(left, b, right, bottom); - c.drawRect(rect, paint); } } } diff --git a/library/src/main/java/ru/noties/markwon/spans/SpannableTheme.java b/library/src/main/java/ru/noties/markwon/spans/SpannableTheme.java index eb174673..c402e24f 100644 --- a/library/src/main/java/ru/noties/markwon/spans/SpannableTheme.java +++ b/library/src/main/java/ru/noties/markwon/spans/SpannableTheme.java @@ -336,7 +336,7 @@ public class SpannableTheme { } paint.setColor(color); paint.setStyle(Paint.Style.FILL); - if (headingBreakHeight != 0) { + if (headingBreakHeight >= 0) { //noinspection SuspiciousNameCombination paint.setStrokeWidth(headingBreakHeight); } @@ -374,7 +374,7 @@ public class SpannableTheme { paint.setColor(color); paint.setStyle(Paint.Style.FILL); - if (thematicBreakHeight != 0) { + if (thematicBreakHeight >= 0) { //noinspection SuspiciousNameCombination paint.setStrokeWidth(thematicBreakHeight); } @@ -384,6 +384,16 @@ public class SpannableTheme { return tableCellPadding; } + public int tableBorderWidth(@NonNull Paint paint) { + final int out; + if (tableBorderWidth == -1) { + out = (int) (paint.getStrokeWidth() + .5F); + } else { + out = tableBorderWidth; + } + return out; + } + public void applyTableBorderStyle(@NonNull Paint paint) { final int color; @@ -393,10 +403,6 @@ public class SpannableTheme { color = tableBorderColor; } - if (tableBorderWidth != 0) { - paint.setStrokeWidth(tableBorderWidth); - } - paint.setColor(color); paint.setStyle(Paint.Style.STROKE); } @@ -435,14 +441,14 @@ public class SpannableTheme { private int codeMultilineMargin; private Typeface codeTypeface; private int codeTextSize; - private int headingBreakHeight; + private int headingBreakHeight = -1; private int headingBreakColor; private float scriptTextSizeRatio; private int thematicBreakColor; - private int thematicBreakHeight; + private int thematicBreakHeight = -1; private int tableCellPadding; private int tableBorderColor; - private int tableBorderWidth; + private int tableBorderWidth = -1; private int tableOddRowBackgroundColor; private Drawable taskListDrawable; diff --git a/library/src/main/java/ru/noties/markwon/spans/TableRowSpan.java b/library/src/main/java/ru/noties/markwon/spans/TableRowSpan.java index c0dcb8c8..552af486 100644 --- a/library/src/main/java/ru/noties/markwon/spans/TableRowSpan.java +++ b/library/src/main/java/ru/noties/markwon/spans/TableRowSpan.java @@ -169,10 +169,14 @@ public class TableRowSpan extends ReplacementSpan { } } - rect.set(0, 0, w, bottom - top); - theme.applyTableBorderStyle(this.paint); + final int borderWidth = theme.tableBorderWidth(paint); + final boolean drawBorder = borderWidth > 0; + if (drawBorder) { + rect.set(0, 0, w, bottom - top); + } + StaticLayout layout; for (int i = 0; i < size; i++) { layout = layouts.get(i); @@ -180,7 +184,10 @@ public class TableRowSpan extends ReplacementSpan { try { canvas.translate(x + (i * w), top - heightDiff); - canvas.drawRect(rect, this.paint); + + if (drawBorder) { + canvas.drawRect(rect, this.paint); + } canvas.translate(padding, padding + heightDiff); layout.draw(canvas);