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

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

Issue 2650113004: [WIP] Add support for Android SuggestionSpans when editing text (Closed)
Patch Set: Uploading the latest version from my repo so I can reference it Created 3 years, 7 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/CompositionMarker.h" 9 #include "core/editing/markers/CompositionMarker.h"
10 #include "core/editing/markers/DocumentMarkerController.h" 10 #include "core/editing/markers/DocumentMarkerController.h"
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 bool InlineTextBoxPainter::paintsMarkerHighlights( 454 bool InlineTextBoxPainter::paintsMarkerHighlights(
455 const LayoutObject& layoutObject) { 455 const LayoutObject& layoutObject) {
456 return layoutObject.node() && 456 return layoutObject.node() &&
457 layoutObject.document().markers().hasMarkers(layoutObject.node()); 457 layoutObject.document().markers().hasMarkers(layoutObject.node());
458 } 458 }
459 459
460 static bool paintsCompositionMarkers(const LayoutObject& layoutObject) { 460 static bool paintsCompositionMarkers(const LayoutObject& layoutObject) {
461 return layoutObject.node() && 461 return layoutObject.node() &&
462 layoutObject.document() 462 layoutObject.document()
463 .markers() 463 .markers()
464 .markersFor(layoutObject.node(), DocumentMarker::Composition) 464 .markersFor(layoutObject.node(),
465 DocumentMarker::Composition |
466 DocumentMarker::Suggestion |
467 DocumentMarker::SuggestionHighlight)
465 .size() > 0; 468 .size() > 0;
466 } 469 }
467 470
468 void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, 471 void InlineTextBoxPainter::paint(const PaintInfo& paintInfo,
469 const LayoutPoint& paintOffset) { 472 const LayoutPoint& paintOffset) {
470 if (!shouldPaintTextBox(paintInfo)) 473 if (!shouldPaintTextBox(paintInfo))
471 return; 474 return;
472 475
473 DCHECK(!shouldPaintSelfOutline(paintInfo.phase) && 476 DCHECK(!shouldPaintSelfOutline(paintInfo.phase) &&
474 !shouldPaintDescendantOutlines(paintInfo.phase)); 477 !shouldPaintDescendantOutlines(paintInfo.phase));
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 // Paint either the background markers or the foreground markers, but not 827 // Paint either the background markers or the foreground markers, but not
825 // both. 828 // both.
826 switch (marker.type()) { 829 switch (marker.type()) {
827 case DocumentMarker::Grammar: 830 case DocumentMarker::Grammar:
828 case DocumentMarker::Spelling: 831 case DocumentMarker::Spelling:
829 if (markerPaintPhase == DocumentMarkerPaintPhase::Background) 832 if (markerPaintPhase == DocumentMarkerPaintPhase::Background)
830 continue; 833 continue;
831 break; 834 break;
832 case DocumentMarker::TextMatch: 835 case DocumentMarker::TextMatch:
833 case DocumentMarker::Composition: 836 case DocumentMarker::Composition:
837 case DocumentMarker::Suggestion:
838 case DocumentMarker::SuggestionHighlight:
834 break; 839 break;
835 default: 840 default:
836 continue; 841 continue;
837 } 842 }
838 843
839 if (marker.endOffset() <= m_inlineTextBox.start()) { 844 if (marker.endOffset() <= m_inlineTextBox.start()) {
840 // marker is completely before this run. This might be a marker that sits 845 // marker is completely before this run. This might be a marker that sits
841 // before the first run we draw, or markers that were within runs we 846 // before the first run we draw, or markers that were within runs we
842 // skipped due to truncation. 847 // skipped due to truncation.
843 continue; 848 continue;
(...skipping 15 matching lines...) Expand all
859 break; 864 break;
860 case DocumentMarker::TextMatch: 865 case DocumentMarker::TextMatch:
861 if (markerPaintPhase == DocumentMarkerPaintPhase::Background) { 866 if (markerPaintPhase == DocumentMarkerPaintPhase::Background) {
862 m_inlineTextBox.paintTextMatchMarkerBackground( 867 m_inlineTextBox.paintTextMatchMarkerBackground(
863 paintInfo, boxOrigin, toTextMatchMarker(marker), style, font); 868 paintInfo, boxOrigin, toTextMatchMarker(marker), style, font);
864 } else { 869 } else {
865 m_inlineTextBox.paintTextMatchMarkerForeground( 870 m_inlineTextBox.paintTextMatchMarkerForeground(
866 paintInfo, boxOrigin, toTextMatchMarker(marker), style, font); 871 paintInfo, boxOrigin, toTextMatchMarker(marker), style, font);
867 } 872 }
868 break; 873 break;
869 case DocumentMarker::Composition: { 874 case DocumentMarker::Composition:
870 const CompositionMarker& compositionMarker = 875 case DocumentMarker::Suggestion:
871 toCompositionMarker(marker); 876 case DocumentMarker::SuggestionHighlight: {
872 CompositionUnderline underline( 877 const MarkerWithFormatting& markerWithFormatting = toMarkerWithFormattin g(marker);
873 compositionMarker.startOffset(), compositionMarker.endOffset(), 878 CompositionUnderline underline(markerWithFormatting.startOffset(), marke rWithFormatting.endOffset(),
874 compositionMarker.underlineColor(), compositionMarker.thick(), 879 markerWithFormatting.underlineColor(), ma rkerWithFormatting.thick(),
875 compositionMarker.backgroundColor()); 880 markerWithFormatting.backgroundColor());
876 if (markerPaintPhase == DocumentMarkerPaintPhase::Background) 881 if (markerPaintPhase == DocumentMarkerPaintPhase::Background)
877 paintSingleCompositionBackgroundRun( 882 paintSingleCompositionBackgroundRun(
878 paintInfo.context, boxOrigin, style, font, 883 paintInfo.context, boxOrigin, style, font,
879 underline.backgroundColor(), underlinePaintStart(underline), 884 underline.backgroundColor(), underlinePaintStart(underline),
880 underlinePaintEnd(underline)); 885 underlinePaintEnd(underline));
881 else 886 else
882 paintCompositionUnderline(paintInfo.context, boxOrigin, underline); 887 paintCompositionUnderline(paintInfo.context, boxOrigin, underline);
883 } break; 888 } break;
884 default: 889 default:
885 ASSERT_NOT_REACHED(); 890 ASSERT_NOT_REACHED();
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 1372
1368 LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), 1373 LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(),
1369 m_inlineTextBox.logicalHeight())); 1374 m_inlineTextBox.logicalHeight()));
1370 context.clip(FloatRect(boxRect)); 1375 context.clip(FloatRect(boxRect));
1371 context.drawHighlightForText(font, run, FloatPoint(boxOrigin), 1376 context.drawHighlightForText(font, run, FloatPoint(boxOrigin),
1372 boxRect.height().toInt(), color, 1377 boxRect.height().toInt(), color,
1373 paintOffsets.first, paintOffsets.second); 1378 paintOffsets.first, paintOffsets.second);
1374 } 1379 }
1375 1380
1376 } // namespace blink 1381 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/page/ChromeClient.h ('k') | third_party/WebKit/Source/modules/ModulesInitializer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698