MCPcopy Create free account
hub / github.com/M66B/FairEmail / fromDocument

Method fromDocument

app/src/main/java/eu/faircode/email/HtmlHelper.java:3447–4229  ·  view source on GitHub ↗
(
            Context context, @NonNull Document document,
            @Nullable ImageGetterEx imageGetter, @Nullable Html.TagHandler tagHandler)

Source from the content-addressed store, hash-verified

3445 }
3446
3447 static SpannableStringBuilder fromDocument(
3448 Context context, @NonNull Document document,
3449 @Nullable ImageGetterEx imageGetter, @Nullable Html.TagHandler tagHandler) {
3450 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
3451 boolean debug = prefs.getBoolean("debug", false);
3452 boolean monospaced_pre = prefs.getBoolean("monospaced_pre", false);
3453
3454 final int colorPrimary = Helper.resolveColor(context, androidx.appcompat.R.attr.colorPrimary);
3455 final int colorAccent = Helper.resolveColor(context, androidx.appcompat.R.attr.colorAccent);
3456 final int colorBlockquote = Helper.resolveColor(context, R.attr.colorBlockquote, colorPrimary);
3457 final int colorSeparator = Helper.resolveColor(context, R.attr.colorSeparator);
3458 int bulletGap = context.getResources().getDimensionPixelSize(R.dimen.bullet_gap_size);
3459 int bulletRadius = context.getResources().getDimensionPixelSize(R.dimen.bullet_radius_size);
3460 int bulletIndent = context.getResources().getDimensionPixelSize(R.dimen.bullet_indent_size);
3461 int intentSize = context.getResources().getDimensionPixelSize(R.dimen.indent_size);
3462 int quoteGap = context.getResources().getDimensionPixelSize(R.dimen.quote_gap_size);
3463 int quoteStripe = context.getResources().getDimensionPixelSize(R.dimen.quote_stripe_width);
3464 int line_dash_length = context.getResources().getDimensionPixelSize(R.dimen.line_dash_length);
3465
3466 int message_zoom = prefs.getInt("message_zoom", 100);
3467 float textSize = Helper.getTextSize(context, 0) * message_zoom / 100f;
3468
3469 // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
3470 NodeTraversor.traverse(new NodeVisitor() {
3471 private Element element;
3472 private int plain = 0;
3473 private List<TextNode> block = new ArrayList<>();
3474
3475 private final Pattern FOLD_WHITESPACE = Pattern.compile("[ \t\f\r\n]+");
3476
3477 // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
3478
3479 @Override
3480 public void head(Node node, int depth) {
3481 if (node instanceof TextNode) {
3482 if (plain == 0)
3483 block.add((TextNode) node);
3484 } else if (node instanceof Element) {
3485 element = (Element) node;
3486 if ("true".equals(element.attr("x-plain")))
3487 plain++;
3488 if (element.isBlock() /* x-block is never false */ ||
3489 "true".equals(element.attr("x-block"))) {
3490 normalizeText(block);
3491 block.clear();
3492 }
3493 }
3494 }
3495
3496 @Override
3497 public void tail(Node node, int depth) {
3498 if (node instanceof Element) {
3499 element = (Element) node;
3500 if ("true".equals(element.attr("x-plain")))
3501 plain--;
3502 if (element.isBlock() /* x-block is never false */ ||
3503 "true".equals(element.attr("x-block")) ||
3504 "br".equals(element.tagName())) {

Callers 15

getSpannedMethod · 0.95
processMessageMethod · 0.95
onExecuteMethod · 0.95
onExecuteMethod · 0.95
onExecuteMethod · 0.95
getTextMethod · 0.95
fromHtmlMethod · 0.95
onClickMethod · 0.95
onExecuteMethod · 0.95
onItemSelectedMethod · 0.95
onExecuteMethod · 0.95
loadMethod · 0.95

Calls 15

resolveColorMethod · 0.95
getTextSizeMethod · 0.95
getSpansMethod · 0.95
replaceMethod · 0.95
isPrintableCharMethod · 0.95
setSpanMethod · 0.95
getBooleanMethod · 0.80
bodyMethod · 0.80
charAtMethod · 0.80
sizeMethod · 0.65
getResourcesMethod · 0.45
getIntMethod · 0.45

Tested by

no test coverage detected