Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(682)

Unified Diff: third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp

Issue 2920373003: [ActiveSuggestionMarker #4] Refactor InlineTextBoxPainter to avoid using CompositionUnderline (Closed)
Patch Set: Rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/paint/InlineTextBoxPainter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
diff --git a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
index 3cfe7ca8ce956f77cfe217d10e59a15935f941ac..91c57c6d336e4a3235838c0411ae294501bb87d2 100644
--- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
@@ -4,7 +4,6 @@
#include "core/paint/InlineTextBoxPainter.h"
-#include "core/editing/CompositionUnderline.h"
#include "core/editing/Editor.h"
#include "core/editing/markers/CompositionMarker.h"
#include "core/editing/markers/DocumentMarkerController.h"
@@ -539,15 +538,14 @@ bool InlineTextBoxPainter::ShouldPaintTextBox(const PaintInfo& paint_info) {
return true;
}
-unsigned InlineTextBoxPainter::UnderlinePaintStart(
- const CompositionUnderline& underline) {
+unsigned InlineTextBoxPainter::MarkerPaintStart(const DocumentMarker& marker) {
DCHECK(inline_text_box_.Truncation() != kCFullTruncation);
DCHECK(inline_text_box_.Len());
// Start painting at the beginning of the text or the specified underline
// start offset, whichever is higher.
unsigned paint_start =
- std::max(inline_text_box_.Start(), underline.StartOffset());
+ std::max(inline_text_box_.Start(), marker.StartOffset());
// Cap the maximum paint start to (if no truncation) the last character,
// else the last character before the truncation ellipsis.
return std::min(paint_start, (inline_text_box_.Truncation() == kCNoTruncation)
@@ -556,8 +554,7 @@ unsigned InlineTextBoxPainter::UnderlinePaintStart(
inline_text_box_.Truncation() - 1);
}
-unsigned InlineTextBoxPainter::UnderlinePaintEnd(
- const CompositionUnderline& underline) {
+unsigned InlineTextBoxPainter::MarkerPaintEnd(const DocumentMarker& marker) {
DCHECK(inline_text_box_.Truncation() != kCFullTruncation);
DCHECK(inline_text_box_.Len());
@@ -565,7 +562,7 @@ unsigned InlineTextBoxPainter::UnderlinePaintEnd(
// offset, whichever is lower.
unsigned paint_end = std::min(
inline_text_box_.end() + 1,
- underline.EndOffset()); // end() points at the last char, not past it.
+ marker.EndOffset()); // end() points at the last char, not past it.
// Cap the maximum paint end to (if no truncation) one past the last
// character, else one past the last character before the truncation
// ellipsis.
@@ -575,7 +572,7 @@ unsigned InlineTextBoxPainter::UnderlinePaintEnd(
inline_text_box_.Truncation());
}
-void InlineTextBoxPainter::PaintSingleCompositionBackgroundRun(
+void InlineTextBoxPainter::PaintSingleMarkerBackgroundRun(
GraphicsContext& context,
const LayoutPoint& box_origin,
const ComputedStyle& style,
@@ -679,17 +676,16 @@ void InlineTextBoxPainter::PaintDocumentMarkers(
case DocumentMarker::kComposition:
case DocumentMarker::kActiveSuggestion: {
const StyleableMarker& styleable_marker = ToStyleableMarker(marker);
- CompositionUnderline underline(
- styleable_marker.StartOffset(), styleable_marker.EndOffset(),
- styleable_marker.UnderlineColor(), styleable_marker.IsThick(),
- styleable_marker.BackgroundColor());
- if (marker_paint_phase == DocumentMarkerPaintPhase::kBackground)
- PaintSingleCompositionBackgroundRun(
- paint_info.context, box_origin, style, font,
- underline.BackgroundColor(), UnderlinePaintStart(underline),
- UnderlinePaintEnd(underline));
- else
- PaintCompositionUnderline(paint_info.context, box_origin, underline);
+ if (marker_paint_phase == DocumentMarkerPaintPhase::kBackground) {
+ PaintSingleMarkerBackgroundRun(paint_info.context, box_origin, style,
+ font,
+ styleable_marker.BackgroundColor(),
+ MarkerPaintStart(styleable_marker),
+ MarkerPaintEnd(styleable_marker));
+ } else {
+ PaintStyleableMarkerUnderline(paint_info.context, box_origin,
+ styleable_marker);
+ }
} break;
default:
NOTREACHED();
@@ -1034,18 +1030,18 @@ void InlineTextBoxPainter::ExpandToIncludeNewlineForSelection(
rect.Expand(outsets);
}
-void InlineTextBoxPainter::PaintCompositionUnderline(
+void InlineTextBoxPainter::PaintStyleableMarkerUnderline(
GraphicsContext& context,
const LayoutPoint& box_origin,
- const CompositionUnderline& underline) {
- if (underline.GetColor() == Color::kTransparent)
+ const StyleableMarker& marker) {
+ if (marker.UnderlineColor() == Color::kTransparent)
return;
if (inline_text_box_.Truncation() == kCFullTruncation)
return;
- unsigned paint_start = UnderlinePaintStart(underline);
- unsigned paint_end = UnderlinePaintEnd(underline);
+ unsigned paint_start = MarkerPaintStart(marker);
+ unsigned paint_end = MarkerPaintEnd(marker);
DCHECK_LT(paint_start, paint_end);
// start of line to draw
@@ -1098,7 +1094,7 @@ void InlineTextBoxPainter::PaintCompositionUnderline(
.PrimaryFont();
DCHECK(font_data);
int baseline = font_data ? font_data->GetFontMetrics().Ascent() : 0;
- if (underline.Thick() && inline_text_box_.LogicalHeight() - baseline >= 2)
+ if (marker.IsThick() && inline_text_box_.LogicalHeight() - baseline >= 2)
line_thickness = 2;
// We need to have some space between underlines of subsequent clauses,
@@ -1108,7 +1104,7 @@ void InlineTextBoxPainter::PaintCompositionUnderline(
start += 1;
width -= 2;
- context.SetStrokeColor(underline.GetColor());
+ context.SetStrokeColor(marker.UnderlineColor());
context.SetStrokeThickness(line_thickness);
context.DrawLineForText(
FloatPoint(
« no previous file with comments | « third_party/WebKit/Source/core/paint/InlineTextBoxPainter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698