Skip to content

Commit a9df670

Browse files
committed
Add leading margin option to headers.
1 parent 1b36b60 commit a9df670

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

aztec/src/main/kotlin/org/wordpress/aztec/AztecText.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -467,27 +467,33 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
467467
headerStyle = BlockFormatter.HeaderStyles(verticalHeadingMargin, mapOf(
468468
AztecHeadingSpan.Heading.H1 to BlockFormatter.HeaderStyles.HeadingStyle(
469469
styles.getDimensionPixelSize(R.styleable.AztecText_headingOneFontSize, 0),
470-
styles.getColor(R.styleable.AztecText_headingOneFontColor, 0)
470+
styles.getColor(R.styleable.AztecText_headingOneFontColor, 0),
471+
styles.getDimensionPixelSize(R.styleable.AztecText_headingOneLeadingMargin, 0)
471472
),
472473
AztecHeadingSpan.Heading.H2 to BlockFormatter.HeaderStyles.HeadingStyle(
473474
styles.getDimensionPixelSize(R.styleable.AztecText_headingTwoFontSize, 0),
474-
styles.getColor(R.styleable.AztecText_headingTwoFontColor, 0)
475+
styles.getColor(R.styleable.AztecText_headingTwoFontColor, 0),
476+
styles.getDimensionPixelSize(R.styleable.AztecText_headingTwoLeadingMargin, 0)
475477
),
476478
AztecHeadingSpan.Heading.H3 to BlockFormatter.HeaderStyles.HeadingStyle(
477479
styles.getDimensionPixelSize(R.styleable.AztecText_headingThreeFontSize, 0),
478-
styles.getColor(R.styleable.AztecText_headingThreeFontColor, 0)
480+
styles.getColor(R.styleable.AztecText_headingThreeFontColor, 0),
481+
styles.getDimensionPixelSize(R.styleable.AztecText_headingThreeLeadingMargin, 0)
479482
),
480483
AztecHeadingSpan.Heading.H4 to BlockFormatter.HeaderStyles.HeadingStyle(
481484
styles.getDimensionPixelSize(R.styleable.AztecText_headingFourFontSize, 0),
482-
styles.getColor(R.styleable.AztecText_headingFourFontColor, 0)
485+
styles.getColor(R.styleable.AztecText_headingFourFontColor, 0),
486+
styles.getDimensionPixelSize(R.styleable.AztecText_headingFourLeadingMargin, 0)
483487
),
484488
AztecHeadingSpan.Heading.H5 to BlockFormatter.HeaderStyles.HeadingStyle(
485489
styles.getDimensionPixelSize(R.styleable.AztecText_headingFiveFontSize, 0),
486-
styles.getColor(R.styleable.AztecText_headingFiveFontColor, 0)
490+
styles.getColor(R.styleable.AztecText_headingFiveFontColor, 0),
491+
styles.getDimensionPixelSize(R.styleable.AztecText_headingFiveLeadingMargin, 0)
487492
),
488493
AztecHeadingSpan.Heading.H6 to BlockFormatter.HeaderStyles.HeadingStyle(
489494
styles.getDimensionPixelSize(R.styleable.AztecText_headingSixFontSize, 0),
490-
styles.getColor(R.styleable.AztecText_headingSixFontColor, 0)
495+
styles.getColor(R.styleable.AztecText_headingSixFontColor, 0),
496+
styles.getDimensionPixelSize(R.styleable.AztecText_headingSixLeadingMargin, 0)
491497
)
492498
)),
493499
preformatStyle = BlockFormatter.PreformatStyle(

aztec/src/main/kotlin/org/wordpress/aztec/formatting/BlockFormatter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class BlockFormatter(editor: AztecText,
6363
data class QuoteStyle(val quoteBackground: Int, val quoteColor: Int, val quoteTextColor: Int, val quoteBackgroundAlpha: Float, val quoteMargin: Int, val quotePadding: Int, val quoteWidth: Int, val verticalPadding: Int)
6464
data class PreformatStyle(val preformatBackground: Int, val preformatBackgroundAlpha: Float, val preformatColor: Int, val verticalPadding: Int, val leadingMargin: Int, val preformatBorderColor: Int, val preformatBorderRadius: Int, val preformatBorderThickness: Int, val preformatTextSize: Int)
6565
data class HeaderStyles(val verticalPadding: Int, val styles: Map<AztecHeadingSpan.Heading, HeadingStyle>) {
66-
data class HeadingStyle(val fontSize: Int, val fontColor: Int)
66+
data class HeadingStyle(val fontSize: Int, val fontColor: Int, val leadingMargin: Int)
6767
}
6868
data class ExclusiveBlockStyles(val enabled: Boolean = false, val verticalParagraphMargin: Int)
6969
data class ParagraphStyle(val verticalMargin: Int)

aztec/src/main/kotlin/org/wordpress/aztec/spans/AztecHeadingSpan.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.wordpress.aztec.spans
22

3+
import android.graphics.Canvas
34
import android.graphics.Paint
45
import android.text.Layout
56
import android.text.Spanned
67
import android.text.TextPaint
8+
import android.text.style.LeadingMarginSpan
79
import android.text.style.LineHeightSpan
810
import android.text.style.MetricAffectingSpan
911
import android.text.style.UpdateLayout
@@ -64,7 +66,7 @@ open class AztecHeadingSpan(
6466
textFormat: ITextFormat,
6567
override var attributes: AztecAttributes,
6668
open var headerStyle: BlockFormatter.HeaderStyles
67-
) : MetricAffectingSpan(), IAztecLineBlockSpan, LineHeightSpan, UpdateLayout {
69+
) : MetricAffectingSpan(), IAztecLineBlockSpan, LineHeightSpan, LeadingMarginSpan, UpdateLayout {
6870
override val TAG: String
6971
get() = heading.tag
7072

@@ -184,6 +186,7 @@ open class AztecHeadingSpan(
184186
}
185187
previousHeadingSize = headingSize
186188
previousSpacing = paint.fontSpacing
189+
paint.fontFeatureSettings
187190
when (headingSize) {
188191
is HeadingSize.Scale -> {
189192
paint.textSize *= heading.scale
@@ -197,6 +200,13 @@ open class AztecHeadingSpan(
197200
}
198201
}
199202

203+
override fun getLeadingMargin(first: Boolean): Int {
204+
return headerStyle.styles[heading]?.leadingMargin?.takeIf { it != 0 } ?:0
205+
}
206+
207+
override fun drawLeadingMargin(c: Canvas?, p: Paint?, x: Int, dir: Int, top: Int, baseline: Int, bottom: Int,
208+
text: CharSequence?, start: Int, end: Int, first: Boolean, layout: Layout?) = Unit
209+
200210
private fun getHeadingSize(): HeadingSize {
201211
return headerStyle.styles[heading]?.fontSize?.takeIf { it > 0 }?.let { HeadingSize.Size(it) }
202212
?: HeadingSize.Scale(heading.scale)

aztec/src/main/res/values/attrs.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,17 @@
4545
<attr name="textColorHint" format="reference|color" />
4646
<attr name="exclusiveBlocks" format="reference|boolean" />
4747
<attr name="headingOneFontSize" format="reference|dimension" />
48+
<attr name="headingOneLeadingMargin" format="reference|dimension" />
4849
<attr name="headingTwoFontSize" format="reference|dimension" />
50+
<attr name="headingTwoLeadingMargin" format="reference|dimension" />
4951
<attr name="headingThreeFontSize" format="reference|dimension" />
52+
<attr name="headingThreeLeadingMargin" format="reference|dimension" />
5053
<attr name="headingFourFontSize" format="reference|dimension" />
54+
<attr name="headingFourLeadingMargin" format="reference|dimension" />
5155
<attr name="headingFiveFontSize" format="reference|dimension" />
56+
<attr name="headingFiveLeadingMargin" format="reference|dimension" />
5257
<attr name="headingSixFontSize" format="reference|dimension" />
58+
<attr name="headingSixLeadingMargin" format="reference|dimension" />
5359
<attr name="headingOneFontColor" format="reference|color" />
5460
<attr name="headingTwoFontColor" format="reference|color" />
5561
<attr name="headingThreeFontColor" format="reference|color" />

0 commit comments

Comments
 (0)