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 8b6925bc2d5d9971948b5becc75219e255cde858..83a42eecc02a4f4c41dd621161a7c034ac7bae10 100644 |
--- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
@@ -89,14 +89,14 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
// which is already within a LayoutObjectDrawingRecorder. |
Optional<DrawingRecorder> drawingRecorder; |
if (paintInfo.phase != PaintPhaseTextClip) { |
- if (DrawingRecorder::useCachedDrawingIfPossible(*paintInfo.context, m_inlineTextBox, DisplayItem::paintPhaseToDrawingType(paintInfo.phase))) |
+ if (DrawingRecorder::useCachedDrawingIfPossible(paintInfo.context, m_inlineTextBox, DisplayItem::paintPhaseToDrawingType(paintInfo.phase))) |
return; |
LayoutRect paintRect(logicalVisualOverflow); |
m_inlineTextBox.logicalRectToPhysicalRect(paintRect); |
if (paintInfo.phase != PaintPhaseSelection && (haveSelection || paintsMarkerHighlights(*LineLayoutPaintShim::layoutObjectFrom(m_inlineTextBox.lineLayoutItem())))) |
paintRect.unite(m_inlineTextBox.localSelectionRect(m_inlineTextBox.start(), m_inlineTextBox.start() + m_inlineTextBox.len())); |
paintRect.moveBy(adjustedPaintOffset); |
- drawingRecorder.emplace(*paintInfo.context, m_inlineTextBox, DisplayItem::paintPhaseToDrawingType(paintInfo.phase), FloatRect(paintRect)); |
+ drawingRecorder.emplace(paintInfo.context, m_inlineTextBox, DisplayItem::paintPhaseToDrawingType(paintInfo.phase), FloatRect(paintRect)); |
} |
if (m_inlineTextBox.truncation() != cNoTruncation) { |
@@ -117,7 +117,7 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
} |
} |
- GraphicsContext* context = paintInfo.context; |
+ GraphicsContext& context = paintInfo.context; |
const ComputedStyle& styleToUse = m_inlineTextBox.lineLayoutItem().styleRef(m_inlineTextBox.isFirstLineStyle()); |
LayoutPoint boxOrigin(m_inlineTextBox.locationIncludingFlipping()); |
@@ -137,7 +137,7 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
boxRect.setWidth(combinedText->inlineWidthForLayout()); |
} else { |
shouldRotate = true; |
- context->concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockwise)); |
+ context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockwise)); |
} |
} |
@@ -233,20 +233,20 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
// Paint decorations |
TextDecoration textDecorations = styleToUse.textDecorationsInEffect(); |
if (textDecorations != TextDecorationNone && !paintSelectedTextOnly) { |
- GraphicsContextStateSaver stateSaver(*context, false); |
+ GraphicsContextStateSaver stateSaver(context, false); |
TextPainter::updateGraphicsContext(context, textStyle, m_inlineTextBox.isHorizontal(), stateSaver); |
if (combinedText) |
- context->concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockwise)); |
+ context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockwise)); |
paintDecoration(paintInfo, boxOrigin, textDecorations); |
if (combinedText) |
- context->concatCTM(TextPainter::rotation(boxRect, TextPainter::Counterclockwise)); |
+ context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Counterclockwise)); |
} |
if (paintInfo.phase == PaintPhaseForeground) |
paintDocumentMarkers(context, boxOrigin, styleToUse, font, false); |
if (shouldRotate) |
- context->concatCTM(TextPainter::rotation(boxRect, TextPainter::Counterclockwise)); |
+ context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Counterclockwise)); |
} |
bool InlineTextBoxPainter::shouldPaintTextBox(const PaintInfo& paintInfo) |
@@ -282,7 +282,7 @@ unsigned InlineTextBoxPainter::underlinePaintEnd(const CompositionUnderline& und |
return paintEnd; |
} |
-void InlineTextBoxPainter::paintSingleCompositionBackgroundRun(GraphicsContext* context, const LayoutPoint& boxOrigin, const ComputedStyle& style, const Font& font, Color backgroundColor, int startPos, int endPos) |
+void InlineTextBoxPainter::paintSingleCompositionBackgroundRun(GraphicsContext& context, const LayoutPoint& boxOrigin, const ComputedStyle& style, const Font& font, Color backgroundColor, int startPos, int endPos) |
{ |
if (backgroundColor == Color::transparent) |
return; |
@@ -295,10 +295,10 @@ void InlineTextBoxPainter::paintSingleCompositionBackgroundRun(GraphicsContext* |
int deltaY = m_inlineTextBox.lineLayoutItem().style()->isFlippedLinesWritingMode() ? m_inlineTextBox.root().selectionBottom() - m_inlineTextBox.logicalBottom() : m_inlineTextBox.logicalTop() - m_inlineTextBox.root().selectionTop(); |
int selHeight = m_inlineTextBox.root().selectionHeight(); |
FloatPoint localOrigin(boxOrigin.x().toFloat(), boxOrigin.y().toFloat() - deltaY); |
- context->drawHighlightForText(font, m_inlineTextBox.constructTextRun(style, font), localOrigin, selHeight, backgroundColor, sPos, ePos); |
+ context.drawHighlightForText(font, m_inlineTextBox.constructTextRun(style, font), localOrigin, selHeight, backgroundColor, sPos, ePos); |
} |
-void InlineTextBoxPainter::paintDocumentMarkers(GraphicsContext* pt, const LayoutPoint& boxOrigin, const ComputedStyle& style, const Font& font, bool background) |
+void InlineTextBoxPainter::paintDocumentMarkers(GraphicsContext& context, const LayoutPoint& boxOrigin, const ComputedStyle& style, const Font& font, bool background) |
{ |
if (!m_inlineTextBox.lineLayoutItem().node()) |
return; |
@@ -341,21 +341,21 @@ void InlineTextBoxPainter::paintDocumentMarkers(GraphicsContext* pt, const Layou |
// marker intersects this run. Paint it. |
switch (marker->type()) { |
case DocumentMarker::Spelling: |
- m_inlineTextBox.paintDocumentMarker(pt, boxOrigin, marker, style, font, false); |
+ m_inlineTextBox.paintDocumentMarker(context, boxOrigin, marker, style, font, false); |
break; |
case DocumentMarker::Grammar: |
- m_inlineTextBox.paintDocumentMarker(pt, boxOrigin, marker, style, font, true); |
+ m_inlineTextBox.paintDocumentMarker(context, boxOrigin, marker, style, font, true); |
break; |
case DocumentMarker::TextMatch: |
- m_inlineTextBox.paintTextMatchMarker(pt, boxOrigin, marker, style, font); |
+ m_inlineTextBox.paintTextMatchMarker(context, boxOrigin, marker, style, font); |
break; |
case DocumentMarker::Composition: |
{ |
CompositionUnderline underline(marker->startOffset(), marker->endOffset(), marker->underlineColor(), marker->thick(), marker->backgroundColor()); |
if (background) |
- paintSingleCompositionBackgroundRun(pt, boxOrigin, style, font, underline.backgroundColor, underlinePaintStart(underline), underlinePaintEnd(underline)); |
+ paintSingleCompositionBackgroundRun(context, boxOrigin, style, font, underline.backgroundColor, underlinePaintStart(underline), underlinePaintEnd(underline)); |
else |
- paintCompositionUnderline(pt, boxOrigin, underline); |
+ paintCompositionUnderline(context, boxOrigin, underline); |
} |
break; |
default: |
@@ -377,7 +377,7 @@ static GraphicsContext::DocumentMarkerLineStyle lineStyleForMarkerType(DocumentM |
} |
} |
-void InlineTextBoxPainter::paintDocumentMarker(GraphicsContext* pt, const LayoutPoint& boxOrigin, DocumentMarker* marker, const ComputedStyle& style, const Font& font, bool grammar) |
+void InlineTextBoxPainter::paintDocumentMarker(GraphicsContext& context, const LayoutPoint& boxOrigin, DocumentMarker* marker, const ComputedStyle& style, const Font& font, bool grammar) |
{ |
// Never print spelling/grammar markers (5327887) |
if (m_inlineTextBox.lineLayoutItem().document().printing()) |
@@ -434,11 +434,11 @@ void InlineTextBoxPainter::paintDocumentMarker(GraphicsContext* pt, const Layout |
// In larger fonts, though, place the underline up near the baseline to prevent a big gap. |
underlineOffset = baseline + 2; |
} |
- pt->drawLineForDocumentMarker(FloatPoint((boxOrigin.x() + start).toFloat(), (boxOrigin.y() + underlineOffset).toFloat()), width.toFloat(), lineStyleForMarkerType(marker->type())); |
+ context.drawLineForDocumentMarker(FloatPoint((boxOrigin.x() + start).toFloat(), (boxOrigin.y() + underlineOffset).toFloat()), width.toFloat(), lineStyleForMarkerType(marker->type())); |
} |
template <InlineTextBoxPainter::PaintOptions options> |
-void InlineTextBoxPainter::paintSelection(GraphicsContext* context, const LayoutRect& boxRect, const ComputedStyle& style, const Font& font, Color textColor, LayoutTextCombine* combinedText) |
+void InlineTextBoxPainter::paintSelection(GraphicsContext& context, const LayoutRect& boxRect, const ComputedStyle& style, const Font& font, Color textColor, LayoutTextCombine* combinedText) |
{ |
// See if we have a selection to paint at all. |
int sPos, ePos; |
@@ -469,16 +469,16 @@ void InlineTextBoxPainter::paintSelection(GraphicsContext* context, const Layout |
if (respectHyphen) |
ePos = textRun.length(); |
- GraphicsContextStateSaver stateSaver(*context); |
+ GraphicsContextStateSaver stateSaver(context); |
if (options == InlineTextBoxPainter::PaintOptions::CombinedText) { |
ASSERT(combinedText); |
// We can't use the height of m_inlineTextBox because LayoutTextCombine's inlineTextBox is horizontal within vertical flow |
LayoutRect clipRect(boxRect); |
combinedText->transformLayoutRect(clipRect); |
- context->clip(FloatRect(clipRect)); |
- combinedText->transformToInlineCoordinates(*context, boxRect); |
- context->drawHighlightForText(font, textRun, FloatPoint(boxRect.location()), boxRect.height(), c, sPos, ePos); |
+ context.clip(FloatRect(clipRect)); |
+ combinedText->transformToInlineCoordinates(context, boxRect); |
+ context.drawHighlightForText(font, textRun, FloatPoint(boxRect.location()), boxRect.height(), c, sPos, ePos); |
return; |
} |
@@ -502,7 +502,7 @@ void InlineTextBoxPainter::paintSelection(GraphicsContext* context, const Layout |
if (!m_inlineTextBox.isLeftToRightDirection() && m_inlineTextBox.isLineBreak()) |
selectionRect.move(-selectionRect.width(), 0); |
- context->fillRect(FloatRect(selectionRect), c); |
+ context.fillRect(FloatRect(selectionRect), c); |
} |
void InlineTextBoxPainter::expandToIncludeNewlineForSelection(LayoutRect& rect) |
@@ -629,9 +629,9 @@ static void adjustStepToDecorationLength(float& step, float& controlPointDistanc |
* |-----------| |
* step |
*/ |
-static void strokeWavyTextDecoration(GraphicsContext* context, FloatPoint p1, FloatPoint p2, float strokeThickness) |
+static void strokeWavyTextDecoration(GraphicsContext& context, FloatPoint p1, FloatPoint p2, float strokeThickness) |
{ |
- context->adjustLineToPixelBoundaries(p1, p2, strokeThickness, context->strokeStyle()); |
+ context.adjustLineToPixelBoundaries(p1, p2, strokeThickness, context.strokeStyle()); |
Path path; |
path.moveTo(p1); |
@@ -702,15 +702,15 @@ static void strokeWavyTextDecoration(GraphicsContext* context, FloatPoint p1, Fl |
} |
} |
- context->setShouldAntialias(true); |
- context->strokePath(path); |
+ context.setShouldAntialias(true); |
+ context.strokePath(path); |
} |
-static void paintAppliedDecoration(GraphicsContext* context, FloatPoint start, float width, float doubleOffset, int wavyOffsetFactor, |
+static void paintAppliedDecoration(GraphicsContext& context, FloatPoint start, float width, float doubleOffset, int wavyOffsetFactor, |
LayoutObject::AppliedTextDecoration decoration, float thickness, bool antialiasDecoration, bool isPrinting) |
{ |
- context->setStrokeStyle(textDecorationStyleToStrokeStyle(decoration.style)); |
- context->setStrokeColor(decoration.color); |
+ context.setStrokeStyle(textDecorationStyleToStrokeStyle(decoration.style)); |
+ context.setStrokeColor(decoration.color); |
switch (decoration.style) { |
case TextDecorationStyleWavy: |
@@ -718,13 +718,13 @@ static void paintAppliedDecoration(GraphicsContext* context, FloatPoint start, f |
break; |
case TextDecorationStyleDotted: |
case TextDecorationStyleDashed: |
- context->setShouldAntialias(antialiasDecoration); |
+ context.setShouldAntialias(antialiasDecoration); |
// Fall through |
default: |
- context->drawLineForText(FloatPoint(start), width, isPrinting); |
+ context.drawLineForText(FloatPoint(start), width, isPrinting); |
if (decoration.style == TextDecorationStyleDouble) |
- context->drawLineForText(start + FloatPoint(0, doubleOffset), width, isPrinting); |
+ context.drawLineForText(start + FloatPoint(0, doubleOffset), width, isPrinting); |
} |
} |
@@ -733,8 +733,8 @@ void InlineTextBoxPainter::paintDecoration(const PaintInfo& paintInfo, const Lay |
if (m_inlineTextBox.truncation() == cFullTruncation) |
return; |
- GraphicsContext* context = paintInfo.context; |
- GraphicsContextStateSaver stateSaver(*context); |
+ GraphicsContext& context = paintInfo.context; |
+ GraphicsContextStateSaver stateSaver(context); |
LayoutPoint localOrigin(boxOrigin); |
@@ -767,7 +767,7 @@ void InlineTextBoxPainter::paintDecoration(const PaintInfo& paintInfo, const Lay |
if ((textDecorationThickness == 0.f) || (textDecorationThickness >= (fontHeightInt >> 1))) |
textDecorationThickness = std::max(1.f, styleToUse.computedFontSize() / 10.f); |
- context->setStrokeThickness(textDecorationThickness); |
+ context.setStrokeThickness(textDecorationThickness); |
bool antialiasDecoration = shouldSetDecorationAntialias(overline.style, underline.style, linethrough.style); |
@@ -787,7 +787,7 @@ void InlineTextBoxPainter::paintDecoration(const PaintInfo& paintInfo, const Lay |
} |
} |
-void InlineTextBoxPainter::paintCompositionUnderline(GraphicsContext* ctx, const LayoutPoint& boxOrigin, const CompositionUnderline& underline) |
+void InlineTextBoxPainter::paintCompositionUnderline(GraphicsContext& context, const LayoutPoint& boxOrigin, const CompositionUnderline& underline) |
{ |
if (underline.color == Color::transparent) |
return; |
@@ -825,12 +825,12 @@ void InlineTextBoxPainter::paintCompositionUnderline(GraphicsContext* ctx, const |
start += 1; |
width -= 2; |
- ctx->setStrokeColor(underline.color); |
- ctx->setStrokeThickness(lineThickness); |
- ctx->drawLineForText(FloatPoint(boxOrigin.x() + start, (boxOrigin.y() + m_inlineTextBox.logicalHeight() - lineThickness).toFloat()), width, m_inlineTextBox.lineLayoutItem().document().printing()); |
+ context.setStrokeColor(underline.color); |
+ context.setStrokeThickness(lineThickness); |
+ context.drawLineForText(FloatPoint(boxOrigin.x() + start, (boxOrigin.y() + m_inlineTextBox.logicalHeight() - lineThickness).toFloat()), width, m_inlineTextBox.lineLayoutItem().document().printing()); |
} |
-void InlineTextBoxPainter::paintTextMatchMarker(GraphicsContext* pt, const LayoutPoint& boxOrigin, DocumentMarker* marker, const ComputedStyle& style, const Font& font) |
+void InlineTextBoxPainter::paintTextMatchMarker(GraphicsContext& context, const LayoutPoint& boxOrigin, DocumentMarker* marker, const ComputedStyle& style, const Font& font) |
{ |
// Use same y positioning and height as for selection, so that when the selection and this highlight are on |
// the same word there are no pieces sticking out. |
@@ -846,9 +846,9 @@ void InlineTextBoxPainter::paintTextMatchMarker(GraphicsContext* pt, const Layou |
Color color = marker->activeMatch() ? |
LayoutTheme::theme().platformActiveTextSearchHighlightColor() : |
LayoutTheme::theme().platformInactiveTextSearchHighlightColor(); |
- GraphicsContextStateSaver stateSaver(*pt); |
- pt->clip(FloatRect(boxOrigin.x().toFloat(), (boxOrigin.y() - deltaY).toFloat(), m_inlineTextBox.logicalWidth().toFloat(), selHeight)); |
- pt->drawHighlightForText(font, run, FloatPoint(boxOrigin.x().toFloat(), (boxOrigin.y() - deltaY).toFloat()), selHeight, color, sPos, ePos); |
+ GraphicsContextStateSaver stateSaver(context); |
+ context.clip(FloatRect(boxOrigin.x().toFloat(), (boxOrigin.y() - deltaY).toFloat(), m_inlineTextBox.logicalWidth().toFloat(), selHeight)); |
+ context.drawHighlightForText(font, run, FloatPoint(boxOrigin.x().toFloat(), (boxOrigin.y() - deltaY).toFloat()), selHeight, color, sPos, ePos); |
// Also Highlight the text with color:transparent |
if (style.visitedDependentColor(CSSPropertyColor) == Color::transparent) { |
@@ -861,7 +861,7 @@ void InlineTextBoxPainter::paintTextMatchMarker(GraphicsContext* pt, const Layou |
LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), m_inlineTextBox.logicalHeight())); |
LayoutPoint textOrigin(boxOrigin.x(), boxOrigin.y() + font.fontMetrics().ascent()); |
- TextPainter textPainter(pt, font, run, textOrigin, boxRect, m_inlineTextBox.isHorizontal()); |
+ TextPainter textPainter(context, font, run, textOrigin, boxRect, m_inlineTextBox.isHorizontal()); |
textPainter.paint(sPos, ePos, length, textStyle, 0); |
} |