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 "config.h" | 5 #include "config.h" |
6 #include "core/paint/TextPainter.h" | 6 #include "core/paint/TextPainter.h" |
7 | 7 |
8 #include "core/CSSPropertyNames.h" | 8 #include "core/CSSPropertyNames.h" |
9 #include "core/frame/Settings.h" | 9 #include "core/frame/Settings.h" |
10 #include "core/layout/LayoutObject.h" | 10 #include "core/layout/LayoutObject.h" |
11 #include "core/layout/LayoutTextCombine.h" | 11 #include "core/layout/LayoutTextCombine.h" |
12 #include "core/layout/line/InlineTextBox.h" | 12 #include "core/layout/line/InlineTextBox.h" |
13 #include "core/layout/style/LayoutStyle.h" | 13 #include "core/layout/style/ComputedStyle.h" |
14 #include "core/layout/style/ShadowList.h" | 14 #include "core/layout/style/ShadowList.h" |
15 #include "platform/fonts/Font.h" | 15 #include "platform/fonts/Font.h" |
16 #include "platform/graphics/GraphicsContext.h" | 16 #include "platform/graphics/GraphicsContext.h" |
17 #include "platform/graphics/GraphicsContextStateSaver.h" | 17 #include "platform/graphics/GraphicsContextStateSaver.h" |
18 #include "platform/text/TextRun.h" | 18 #include "platform/text/TextRun.h" |
19 #include "wtf/Assertions.h" | 19 #include "wtf/Assertions.h" |
20 #include "wtf/unicode/CharacterNames.h" | 20 #include "wtf/unicode/CharacterNames.h" |
21 | 21 |
22 namespace blink { | 22 namespace blink { |
23 | 23 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 } | 108 } |
109 | 109 |
110 static Color textColorForWhiteBackground(Color textColor) | 110 static Color textColorForWhiteBackground(Color textColor) |
111 { | 111 { |
112 int distanceFromWhite = differenceSquared(textColor, Color::white); | 112 int distanceFromWhite = differenceSquared(textColor, Color::white); |
113 // semi-arbitrarily chose 65025 (255^2) value here after a few tests; | 113 // semi-arbitrarily chose 65025 (255^2) value here after a few tests; |
114 return distanceFromWhite > 65025 ? textColor : textColor.dark(); | 114 return distanceFromWhite > 65025 ? textColor : textColor.dark(); |
115 } | 115 } |
116 | 116 |
117 // static | 117 // static |
118 TextPainter::Style TextPainter::textPaintingStyle(LayoutObject& renderer, const
LayoutStyle& style, bool forceBlackText, bool isPrinting) | 118 TextPainter::Style TextPainter::textPaintingStyle(LayoutObject& renderer, const
ComputedStyle& style, bool forceBlackText, bool isPrinting) |
119 { | 119 { |
120 TextPainter::Style textStyle; | 120 TextPainter::Style textStyle; |
121 | 121 |
122 if (forceBlackText) { | 122 if (forceBlackText) { |
123 textStyle.fillColor = Color::black; | 123 textStyle.fillColor = Color::black; |
124 textStyle.strokeColor = Color::black; | 124 textStyle.strokeColor = Color::black; |
125 textStyle.emphasisMarkColor = Color::black; | 125 textStyle.emphasisMarkColor = Color::black; |
126 textStyle.strokeWidth = style.textStrokeWidth(); | 126 textStyle.strokeWidth = style.textStrokeWidth(); |
127 textStyle.shadow = 0; | 127 textStyle.shadow = 0; |
128 } else { | 128 } else { |
(...skipping 28 matching lines...) Expand all Loading... |
157 TextPainter::Style TextPainter::selectionPaintingStyle(LayoutObject& renderer, b
ool haveSelection, bool forceBlackText, bool isPrinting, const TextPainter::Styl
e& textStyle) | 157 TextPainter::Style TextPainter::selectionPaintingStyle(LayoutObject& renderer, b
ool haveSelection, bool forceBlackText, bool isPrinting, const TextPainter::Styl
e& textStyle) |
158 { | 158 { |
159 TextPainter::Style selectionStyle = textStyle; | 159 TextPainter::Style selectionStyle = textStyle; |
160 | 160 |
161 if (haveSelection) { | 161 if (haveSelection) { |
162 if (!forceBlackText) { | 162 if (!forceBlackText) { |
163 selectionStyle.fillColor = renderer.selectionForegroundColor(); | 163 selectionStyle.fillColor = renderer.selectionForegroundColor(); |
164 selectionStyle.emphasisMarkColor = renderer.selectionEmphasisMarkCol
or(); | 164 selectionStyle.emphasisMarkColor = renderer.selectionEmphasisMarkCol
or(); |
165 } | 165 } |
166 | 166 |
167 if (const LayoutStyle* pseudoStyle = renderer.getCachedPseudoStyle(SELEC
TION)) { | 167 if (const ComputedStyle* pseudoStyle = renderer.getCachedPseudoStyle(SEL
ECTION)) { |
168 selectionStyle.strokeColor = forceBlackText ? Color::black : rendere
r.resolveColor(*pseudoStyle, CSSPropertyWebkitTextStrokeColor); | 168 selectionStyle.strokeColor = forceBlackText ? Color::black : rendere
r.resolveColor(*pseudoStyle, CSSPropertyWebkitTextStrokeColor); |
169 selectionStyle.strokeWidth = pseudoStyle->textStrokeWidth(); | 169 selectionStyle.strokeWidth = pseudoStyle->textStrokeWidth(); |
170 selectionStyle.shadow = forceBlackText ? 0 : pseudoStyle->textShadow
(); | 170 selectionStyle.shadow = forceBlackText ? 0 : pseudoStyle->textShadow
(); |
171 } | 171 } |
172 | 172 |
173 // Text shadows are disabled when printing. http://crbug.com/258321 | 173 // Text shadows are disabled when printing. http://crbug.com/258321 |
174 if (isPrinting) | 174 if (isPrinting) |
175 selectionStyle.shadow = 0; | 175 selectionStyle.shadow = 0; |
176 } | 176 } |
177 | 177 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 DEFINE_STATIC_LOCAL(TextRun, placeholderTextRun, (&ideographicFullStop, 1)); | 219 DEFINE_STATIC_LOCAL(TextRun, placeholderTextRun, (&ideographicFullStop, 1)); |
220 FloatPoint emphasisMarkTextOrigin(m_textBounds.x(), m_textBounds.y() + m_fon
t.fontMetrics().ascent() + m_emphasisMarkOffset); | 220 FloatPoint emphasisMarkTextOrigin(m_textBounds.x(), m_textBounds.y() + m_fon
t.fontMetrics().ascent() + m_emphasisMarkOffset); |
221 TextRunPaintInfo textRunPaintInfo(placeholderTextRun); | 221 TextRunPaintInfo textRunPaintInfo(placeholderTextRun); |
222 textRunPaintInfo.bounds = m_textBounds; | 222 textRunPaintInfo.bounds = m_textBounds; |
223 m_graphicsContext->concatCTM(rotation(m_textBounds, Clockwise)); | 223 m_graphicsContext->concatCTM(rotation(m_textBounds, Clockwise)); |
224 m_graphicsContext->drawEmphasisMarks(m_combinedText->originalFont(), textRun
PaintInfo, m_emphasisMark, emphasisMarkTextOrigin); | 224 m_graphicsContext->drawEmphasisMarks(m_combinedText->originalFont(), textRun
PaintInfo, m_emphasisMark, emphasisMarkTextOrigin); |
225 m_graphicsContext->concatCTM(rotation(m_textBounds, Counterclockwise)); | 225 m_graphicsContext->concatCTM(rotation(m_textBounds, Counterclockwise)); |
226 } | 226 } |
227 | 227 |
228 } // namespace blink | 228 } // namespace blink |
OLD | NEW |