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

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

Issue 1512803004: Use refs for GraphicsContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ScrollbarTheme
Patch Set: Created 5 years 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
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);
}

Powered by Google App Engine
This is Rietveld 408576698