From 54d7c425668098acc9688e41b835b3069f37db0d Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Wed, 2 Jan 2019 16:22:05 -0500 Subject: [PATCH] Paint all backgrounds first to prevent overlap (#7287) --- third_party/txt/src/txt/paragraph.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/third_party/txt/src/txt/paragraph.cc b/third_party/txt/src/txt/paragraph.cc index 3e15ecec0f..94633bd230 100644 --- a/third_party/txt/src/txt/paragraph.cc +++ b/third_party/txt/src/txt/paragraph.cc @@ -923,6 +923,11 @@ sk_sp Paragraph::GetDefaultSkiaTypeface(const TextStyle& style) { void Paragraph::Paint(SkCanvas* canvas, double x, double y) { SkPoint base_offset = SkPoint::Make(x, y); SkPaint paint; + // Paint the background first before painting any text to prevent + // potential overlap. + for (const PaintRecord& record : records_) { + PaintBackground(canvas, record, base_offset); + } for (const PaintRecord& record : records_) { if (record.style().has_foreground) { paint = record.style().foreground; @@ -931,7 +936,6 @@ void Paragraph::Paint(SkCanvas* canvas, double x, double y) { paint.setColor(record.style().color); } SkPoint offset = base_offset + record.offset(); - PaintBackground(canvas, record, base_offset); PaintShadow(canvas, record, offset); canvas->drawTextBlob(record.text(), offset.x(), offset.y(), paint); PaintDecorations(canvas, record, base_offset); -- GitLab