OLD | NEW |
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/editing/markers/RenderedDocumentMarker.h" | 10 #include "core/editing/markers/RenderedDocumentMarker.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 if (combinedText) { | 134 if (combinedText) { |
135 combinedText->updateFont(); | 135 combinedText->updateFont(); |
136 boxRect.setWidth(combinedText->inlineWidthForLayout()); | 136 boxRect.setWidth(combinedText->inlineWidthForLayout()); |
137 } else { | 137 } else { |
138 shouldRotate = true; | 138 shouldRotate = true; |
139 context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockw
ise)); | 139 context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockw
ise)); |
140 } | 140 } |
141 } | 141 } |
142 | 142 |
143 // Determine text colors. | 143 // Determine text colors. |
144 const LayoutObject& textBoxLayoutObject = *LineLayoutAPIShim::layoutObjectFr
om(m_inlineTextBox.lineLayoutItem()); | 144 TextPainter::Style textStyle = TextPainter::textPaintingStyle(m_inlineTextBo
x.lineLayoutItem(), styleToUse, paintInfo); |
145 TextPainter::Style textStyle = TextPainter::textPaintingStyle(textBoxLayoutO
bject, styleToUse, paintInfo); | 145 TextPainter::Style selectionStyle = TextPainter::selectionPaintingStyle(m_in
lineTextBox.lineLayoutItem(), haveSelection, paintInfo, textStyle); |
146 TextPainter::Style selectionStyle = TextPainter::selectionPaintingStyle(text
BoxLayoutObject, haveSelection, paintInfo, textStyle); | |
147 bool paintSelectedTextOnly = (paintInfo.phase == PaintPhaseSelection); | 146 bool paintSelectedTextOnly = (paintInfo.phase == PaintPhaseSelection); |
148 bool paintSelectedTextSeparately = !paintSelectedTextOnly && textStyle != se
lectionStyle; | 147 bool paintSelectedTextSeparately = !paintSelectedTextOnly && textStyle != se
lectionStyle; |
149 | 148 |
150 // Set our font. | 149 // Set our font. |
151 const Font& font = styleToUse.font(); | 150 const Font& font = styleToUse.font(); |
152 | 151 |
153 LayoutPoint textOrigin(boxOrigin.x(), boxOrigin.y() + font.fontMetrics().asc
ent()); | 152 LayoutPoint textOrigin(boxOrigin.x(), boxOrigin.y() + font.fontMetrics().asc
ent()); |
154 | 153 |
155 // 1. Paint backgrounds behind text if needed. Examples of such backgrounds
include selection | 154 // 1. Paint backgrounds behind text if needed. Examples of such backgrounds
include selection |
156 // and composition highlights. | 155 // and composition highlights. |
157 if (paintInfo.phase != PaintPhaseSelection && paintInfo.phase != PaintPhaseT
extClip && !isPrinting) { | 156 if (paintInfo.phase != PaintPhaseSelection && paintInfo.phase != PaintPhaseT
extClip && !isPrinting) { |
158 paintDocumentMarkers(paintInfo, boxOrigin, styleToUse, font, DocumentMar
kerPaintPhase::Background); | 157 paintDocumentMarkers(paintInfo, boxOrigin, styleToUse, font, DocumentMar
kerPaintPhase::Background); |
159 | 158 |
| 159 const LayoutObject& textBoxLayoutObject = *LineLayoutAPIShim::layoutObje
ctFrom(m_inlineTextBox.lineLayoutItem()); |
160 if (haveSelection && !paintsCompositionMarkers(textBoxLayoutObject)) { | 160 if (haveSelection && !paintsCompositionMarkers(textBoxLayoutObject)) { |
161 if (combinedText) | 161 if (combinedText) |
162 paintSelection<InlineTextBoxPainter::PaintOptions::CombinedText>
(context, boxRect, styleToUse, font, selectionStyle.fillColor, combinedText); | 162 paintSelection<InlineTextBoxPainter::PaintOptions::CombinedText>
(context, boxRect, styleToUse, font, selectionStyle.fillColor, combinedText); |
163 else | 163 else |
164 paintSelection<InlineTextBoxPainter::PaintOptions::Normal>(conte
xt, boxRect, styleToUse, font, selectionStyle.fillColor); | 164 paintSelection<InlineTextBoxPainter::PaintOptions::Normal>(conte
xt, boxRect, styleToUse, font, selectionStyle.fillColor); |
165 } | 165 } |
166 } | 166 } |
167 | 167 |
168 // 2. Now paint the foreground, including text and decorations like underlin
e/overline (in quirks mode only). | 168 // 2. Now paint the foreground, including text and decorations like underlin
e/overline (in quirks mode only). |
169 int length = m_inlineTextBox.len(); | 169 int length = m_inlineTextBox.len(); |
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 | 869 |
870 Color color = LayoutTheme::theme().platformTextSearchHighlightColor(marker->
activeMatch()); | 870 Color color = LayoutTheme::theme().platformTextSearchHighlightColor(marker->
activeMatch()); |
871 GraphicsContext& context = paintInfo.context; | 871 GraphicsContext& context = paintInfo.context; |
872 GraphicsContextStateSaver stateSaver(context); | 872 GraphicsContextStateSaver stateSaver(context); |
873 context.clip(FloatRect(boxOrigin.x().toFloat(), (boxOrigin.y() - deltaY).toF
loat(), m_inlineTextBox.logicalWidth().toFloat(), selHeight)); | 873 context.clip(FloatRect(boxOrigin.x().toFloat(), (boxOrigin.y() - deltaY).toF
loat(), m_inlineTextBox.logicalWidth().toFloat(), selHeight)); |
874 context.drawHighlightForText(font, run, FloatPoint(boxOrigin.x().toFloat(),
(boxOrigin.y() - deltaY).toFloat()), selHeight, color, sPos, ePos); | 874 context.drawHighlightForText(font, run, FloatPoint(boxOrigin.x().toFloat(),
(boxOrigin.y() - deltaY).toFloat()), selHeight, color, sPos, ePos); |
875 } | 875 } |
876 | 876 |
877 | 877 |
878 } // namespace blink | 878 } // namespace blink |
OLD | NEW |