@@ -92,7 +92,10 @@ public class HtmlSpanner {
9292
9393 private float textSize ;
9494
95- private boolean textAlignCenter ;
95+ /**
96+ * This parameter is used to modify table header text centering, by default is true
97+ */
98+ private Boolean tableHeaderCenter = null ;
9699
97100 /**
98101 * Switch to determine if CSS is used
@@ -177,18 +180,35 @@ public HtmlSpanner(int textColor,float textSize) {
177180 * @param cleaner
178181 */
179182 public HtmlSpanner (HtmlCleaner cleaner , FontResolver fontResolver ,int textColor , float textSize ) {
183+ initBaseComponents (cleaner , fontResolver );
184+ setTextColor (textColor );
185+ setTextSize (textSize );
186+ calculateBaseDimensions (textSize );
187+ registerBuiltInHandlers ();
188+ }
189+
190+ private HtmlSpanner (Builder builder ) {
191+ initBaseComponents (createHtmlCleaner (), new SystemFontResolver ());
192+ setTextColor (builder .textColor );
193+ setTextSize (builder .textSize );
194+ setBackgroundColor (builder .backgroundColor );
195+ this .tableHeaderCenter = builder .tableHeaderCenter ;
196+ calculateBaseDimensions (textSize );
197+ registerBuiltInHandlers ();
198+ }
199+
200+ private void initBaseComponents (HtmlCleaner cleaner , FontResolver fontResolver ) {
201+ this .handlers = new HashMap <>();
180202 this .htmlCleaner = cleaner ;
181203 this .fontResolver = fontResolver ;
182- this . handlers = new HashMap <>();
183- this . textColor = textColor ;
184- this . textSize = textSize ;
204+ }
205+
206+ private void calculateBaseDimensions ( float textSize ) {
185207 Paint paint = new Paint ();
186208 paint .setTextSize (textSize );
187209 NUMBER_WIDTH = Math .round (paint .measureText ("4." ));
188- if (NUMBER_WIDTH <= 0 )
189210 BULLET_WIDTH = Math .round (paint .measureText ("\u2022 " ));
190211 BLANK_WIDTH = Math .round (paint .measureText (" " ));
191- registerBuiltInHandlers ();
192212 }
193213
194214 public FontResolver getFontResolver () {
@@ -219,6 +239,10 @@ public float getTextSize() {
219239 return textSize ;
220240 }
221241
242+ public void setTableHeaderCentered (boolean tableHeaderCenter ) {
243+ this .tableHeaderCenter = tableHeaderCenter ;
244+ }
245+
222246 /**
223247 * Switch to specify whether excess whitespace should be stripped from the
224248 * input.
@@ -543,6 +567,9 @@ private void registerBuiltInHandlers() {
543567 TableHandler tableHandler =new TableHandler ();
544568 tableHandler .setTextSize (textSize * 0.83f );
545569 tableHandler .setTextColor (textColor );
570+ if (tableHeaderCenter != null ){
571+ tableHandler .setHeaderCentered (tableHeaderCenter );
572+ }
546573 registerHandler ("table" ,tableHandler );
547574
548575 registerHandler ("h1" , wrap (new HeaderHandler (2f , 0.5f )));
@@ -602,4 +629,60 @@ public static interface CancellationCallback {
602629 boolean isCancelled ();
603630 }
604631
632+ /**
633+ * Builder class for {@link HtmlSpanner}
634+ */
635+ public static final class Builder {
636+ private int backgroundColor ;
637+ private int textColor ;
638+ private float textSize ;
639+ private Boolean tableHeaderCenter = null ;
640+
641+ public Builder () {
642+ }
643+
644+ /**
645+ * Set the background color, used for paragraphs and div
646+ * @param value the backgournd color as int
647+ * @return
648+ */
649+ public Builder backgroundColor (int value ) {
650+ backgroundColor = value ;
651+ return this ;
652+ }
653+
654+ /**
655+ * Set the text color
656+ * @param value the text color as int
657+ * @return
658+ */
659+ public Builder textColor (int value ) {
660+ textColor = value ;
661+ return this ;
662+ }
663+
664+ /**
665+ * Set the text size
666+ * @param value the text size
667+ * @return
668+ */
669+ public Builder textSize (float value ) {
670+ textSize = value ;
671+ return this ;
672+ }
673+
674+ /**
675+ * use this method if you want to manage the table header text centering, by default is set to true
676+ * @param value
677+ * @return
678+ */
679+ public Builder tableHeaderCenter (boolean value ) {
680+ tableHeaderCenter = value ;
681+ return this ;
682+ }
683+
684+ public HtmlSpanner build () {
685+ return new HtmlSpanner (this );
686+ }
687+ }
605688}
0 commit comments