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

Side by Side Diff: third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp

Issue 2701993002: DO NOT COMMIT: Results of running new (proposed) clang-format on Blink (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/paint/InlineTextBoxPainter.h" 5 #include "core/paint/InlineTextBoxPainter.h"
6 6
7 #include "core/editing/CompositionUnderline.h" 7 #include "core/editing/CompositionUnderline.h"
8 #include "core/editing/Editor.h" 8 #include "core/editing/Editor.h"
9 #include "core/editing/markers/DocumentMarkerController.h" 9 #include "core/editing/markers/DocumentMarkerController.h"
10 #include "core/frame/LocalFrame.h" 10 #include "core/frame/LocalFrame.h"
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 FloatRect(paintRect)); 540 FloatRect(paintRect));
541 } 541 }
542 542
543 GraphicsContext& context = paintInfo.context; 543 GraphicsContext& context = paintInfo.context;
544 const ComputedStyle& styleToUse = 544 const ComputedStyle& styleToUse =
545 m_inlineTextBox.getLineLayoutItem().styleRef( 545 m_inlineTextBox.getLineLayoutItem().styleRef(
546 m_inlineTextBox.isFirstLineStyle()); 546 m_inlineTextBox.isFirstLineStyle());
547 547
548 LayoutPoint boxOrigin(m_inlineTextBox.physicalLocation()); 548 LayoutPoint boxOrigin(m_inlineTextBox.physicalLocation());
549 boxOrigin.move(adjustedPaintOffset.x(), adjustedPaintOffset.y()); 549 boxOrigin.move(adjustedPaintOffset.x(), adjustedPaintOffset.y());
550 LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), 550 LayoutRect boxRect(boxOrigin,
551 m_inlineTextBox.logicalHeight())); 551 LayoutSize(m_inlineTextBox.logicalWidth(),
552 m_inlineTextBox.logicalHeight()));
552 553
553 int length = m_inlineTextBox.len(); 554 int length = m_inlineTextBox.len();
554 StringView string = StringView(m_inlineTextBox.getLineLayoutItem().text(), 555 StringView string = StringView(m_inlineTextBox.getLineLayoutItem().text(),
555 m_inlineTextBox.start(), length); 556 m_inlineTextBox.start(), length);
556 int maximumLength = m_inlineTextBox.getLineLayoutItem().textLength() - 557 int maximumLength = m_inlineTextBox.getLineLayoutItem().textLength() -
557 m_inlineTextBox.start(); 558 m_inlineTextBox.start();
558 559
559 StringBuilder charactersWithHyphen; 560 StringBuilder charactersWithHyphen;
560 TextRun textRun = m_inlineTextBox.constructTextRun( 561 TextRun textRun = m_inlineTextBox.constructTextRun(
561 styleToUse, string, maximumLength, 562 styleToUse, string, maximumLength,
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 const CompositionUnderline& underline) { 761 const CompositionUnderline& underline) {
761 DCHECK(m_inlineTextBox.truncation() != cFullTruncation); 762 DCHECK(m_inlineTextBox.truncation() != cFullTruncation);
762 DCHECK(m_inlineTextBox.len()); 763 DCHECK(m_inlineTextBox.len());
763 764
764 // Start painting at the beginning of the text or the specified underline 765 // Start painting at the beginning of the text or the specified underline
765 // start offset, whichever is higher. 766 // start offset, whichever is higher.
766 unsigned paintStart = 767 unsigned paintStart =
767 std::max(m_inlineTextBox.start(), underline.startOffset()); 768 std::max(m_inlineTextBox.start(), underline.startOffset());
768 // Cap the maximum paint start to (if no truncation) the last character, 769 // Cap the maximum paint start to (if no truncation) the last character,
769 // else the last character before the truncation ellipsis. 770 // else the last character before the truncation ellipsis.
770 return std::min(paintStart, (m_inlineTextBox.truncation() == cNoTruncation) 771 return std::min(
771 ? m_inlineTextBox.end() 772 paintStart,
772 : m_inlineTextBox.start() + 773 (m_inlineTextBox.truncation() == cNoTruncation)
773 m_inlineTextBox.truncation() - 1); 774 ? m_inlineTextBox.end()
775 : m_inlineTextBox.start() + m_inlineTextBox.truncation() - 1);
774 } 776 }
775 777
776 unsigned InlineTextBoxPainter::underlinePaintEnd( 778 unsigned InlineTextBoxPainter::underlinePaintEnd(
777 const CompositionUnderline& underline) { 779 const CompositionUnderline& underline) {
778 DCHECK(m_inlineTextBox.truncation() != cFullTruncation); 780 DCHECK(m_inlineTextBox.truncation() != cFullTruncation);
779 DCHECK(m_inlineTextBox.len()); 781 DCHECK(m_inlineTextBox.len());
780 782
781 // End painting just past the end of the text or the specified underline end 783 // End painting just past the end of the text or the specified underline end
782 // offset, whichever is lower. 784 // offset, whichever is lower.
783 unsigned paintEnd = std::min( 785 unsigned paintEnd = std::min(
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 sPos = std::max<int>(sPos, m_inlineTextBox.truncation()); 1052 sPos = std::max<int>(sPos, m_inlineTextBox.truncation());
1051 else 1053 else
1052 length = m_inlineTextBox.truncation(); 1054 length = m_inlineTextBox.truncation();
1053 } 1055 }
1054 StringView string(m_inlineTextBox.getLineLayoutItem().text(), start, 1056 StringView string(m_inlineTextBox.getLineLayoutItem().text(), start,
1055 static_cast<unsigned>(length)); 1057 static_cast<unsigned>(length));
1056 1058
1057 StringBuilder charactersWithHyphen; 1059 StringBuilder charactersWithHyphen;
1058 bool respectHyphen = ePos == length && m_inlineTextBox.hasHyphen(); 1060 bool respectHyphen = ePos == length && m_inlineTextBox.hasHyphen();
1059 TextRun textRun = m_inlineTextBox.constructTextRun( 1061 TextRun textRun = m_inlineTextBox.constructTextRun(
1060 style, string, m_inlineTextBox.getLineLayoutItem().textLength() - 1062 style, string,
1061 m_inlineTextBox.start(), 1063 m_inlineTextBox.getLineLayoutItem().textLength() -
1064 m_inlineTextBox.start(),
1062 respectHyphen ? &charactersWithHyphen : 0); 1065 respectHyphen ? &charactersWithHyphen : 0);
1063 if (respectHyphen) 1066 if (respectHyphen)
1064 ePos = textRun.length(); 1067 ePos = textRun.length();
1065 1068
1066 GraphicsContextStateSaver stateSaver(context); 1069 GraphicsContextStateSaver stateSaver(context);
1067 1070
1068 if (options == InlineTextBoxPainter::PaintOptions::CombinedText) { 1071 if (options == InlineTextBoxPainter::PaintOptions::CombinedText) {
1069 DCHECK(combinedText); 1072 DCHECK(combinedText);
1070 // We can't use the height of m_inlineTextBox because LayoutTextCombine's 1073 // We can't use the height of m_inlineTextBox because LayoutTextCombine's
1071 // inlineTextBox is horizontal within vertical flow 1074 // inlineTextBox is horizontal within vertical flow
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 DCHECK(fontData); 1353 DCHECK(fontData);
1351 if (!fontData) 1354 if (!fontData)
1352 return; 1355 return;
1353 1356
1354 TextPainter::Style textStyle; 1357 TextPainter::Style textStyle;
1355 textStyle.currentColor = textStyle.fillColor = textStyle.strokeColor = 1358 textStyle.currentColor = textStyle.fillColor = textStyle.strokeColor =
1356 textStyle.emphasisMarkColor = textColor; 1359 textStyle.emphasisMarkColor = textColor;
1357 textStyle.strokeWidth = style.textStrokeWidth(); 1360 textStyle.strokeWidth = style.textStrokeWidth();
1358 textStyle.shadow = 0; 1361 textStyle.shadow = 0;
1359 1362
1360 LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), 1363 LayoutRect boxRect(boxOrigin,
1361 m_inlineTextBox.logicalHeight())); 1364 LayoutSize(m_inlineTextBox.logicalWidth(),
1365 m_inlineTextBox.logicalHeight()));
1362 LayoutPoint textOrigin(boxOrigin.x(), 1366 LayoutPoint textOrigin(boxOrigin.x(),
1363 boxOrigin.y() + fontData->getFontMetrics().ascent()); 1367 boxOrigin.y() + fontData->getFontMetrics().ascent());
1364 TextPainter textPainter(paintInfo.context, font, run, textOrigin, boxRect, 1368 TextPainter textPainter(paintInfo.context, font, run, textOrigin, boxRect,
1365 m_inlineTextBox.isHorizontal()); 1369 m_inlineTextBox.isHorizontal());
1366 1370
1367 textPainter.paint(paintOffsets.first, paintOffsets.second, 1371 textPainter.paint(paintOffsets.first, paintOffsets.second,
1368 m_inlineTextBox.len(), textStyle, 0); 1372 m_inlineTextBox.len(), textStyle, 0);
1369 } 1373 }
1370 1374
1371 void InlineTextBoxPainter::paintTextMatchMarkerBackground( 1375 void InlineTextBoxPainter::paintTextMatchMarkerBackground(
1372 const PaintInfo& paintInfo, 1376 const PaintInfo& paintInfo,
1373 const LayoutPoint& boxOrigin, 1377 const LayoutPoint& boxOrigin,
1374 const DocumentMarker& marker, 1378 const DocumentMarker& marker,
1375 const ComputedStyle& style, 1379 const ComputedStyle& style,
1376 const Font& font) { 1380 const Font& font) {
1377 if (!LineLayoutAPIShim::layoutObjectFrom(m_inlineTextBox.getLineLayoutItem()) 1381 if (!LineLayoutAPIShim::layoutObjectFrom(m_inlineTextBox.getLineLayoutItem())
1378 ->frame() 1382 ->frame()
1379 ->editor() 1383 ->editor()
1380 .markedTextMatchesAreHighlighted()) 1384 .markedTextMatchesAreHighlighted())
1381 return; 1385 return;
1382 1386
1383 const auto paintOffsets = GetMarkerPaintOffsets(marker, m_inlineTextBox); 1387 const auto paintOffsets = GetMarkerPaintOffsets(marker, m_inlineTextBox);
1384 TextRun run = m_inlineTextBox.constructTextRun(style); 1388 TextRun run = m_inlineTextBox.constructTextRun(style);
1385 1389
1386 Color color = LayoutTheme::theme().platformTextSearchHighlightColor( 1390 Color color = LayoutTheme::theme().platformTextSearchHighlightColor(
1387 marker.activeMatch()); 1391 marker.activeMatch());
1388 GraphicsContext& context = paintInfo.context; 1392 GraphicsContext& context = paintInfo.context;
1389 GraphicsContextStateSaver stateSaver(context); 1393 GraphicsContextStateSaver stateSaver(context);
1390 1394
1391 LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), 1395 LayoutRect boxRect(boxOrigin,
1392 m_inlineTextBox.logicalHeight())); 1396 LayoutSize(m_inlineTextBox.logicalWidth(),
1397 m_inlineTextBox.logicalHeight()));
1393 context.clip(FloatRect(boxRect)); 1398 context.clip(FloatRect(boxRect));
1394 context.drawHighlightForText(font, run, FloatPoint(boxOrigin), 1399 context.drawHighlightForText(font, run, FloatPoint(boxOrigin),
1395 boxRect.height().toInt(), color, 1400 boxRect.height().toInt(), color,
1396 paintOffsets.first, paintOffsets.second); 1401 paintOffsets.first, paintOffsets.second);
1397 } 1402 }
1398 1403
1399 } // namespace blink 1404 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698