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

Side by Side Diff: Source/core/paint/SVGInlineTextBoxPainter.cpp

Issue 977113003: Rename renderer() to layoutObject(). (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 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 | Annotate | Revision Log
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 "config.h" 5 #include "config.h"
6 #include "core/paint/SVGInlineTextBoxPainter.h" 6 #include "core/paint/SVGInlineTextBoxPainter.h"
7 7
8 #include "core/dom/DocumentMarkerController.h" 8 #include "core/dom/DocumentMarkerController.h"
9 #include "core/dom/RenderedDocumentMarker.h" 9 #include "core/dom/RenderedDocumentMarker.h"
10 #include "core/editing/Editor.h" 10 #include "core/editing/Editor.h"
(...skipping 14 matching lines...) Expand all
25 25
26 static inline bool textShouldBePainted(LayoutSVGInlineText& textRenderer) 26 static inline bool textShouldBePainted(LayoutSVGInlineText& textRenderer)
27 { 27 {
28 // Font::pixelSize(), returns FontDescription::computedPixelSize(), which re turns "int(x + 0.5)". 28 // Font::pixelSize(), returns FontDescription::computedPixelSize(), which re turns "int(x + 0.5)".
29 // If the absolute font size on screen is below x=0.5, don't render anything . 29 // If the absolute font size on screen is below x=0.5, don't render anything .
30 return textRenderer.scaledFont().fontDescription().computedPixelSize(); 30 return textRenderer.scaledFont().fontDescription().computedPixelSize();
31 } 31 }
32 32
33 bool SVGInlineTextBoxPainter::shouldPaintSelection() const 33 bool SVGInlineTextBoxPainter::shouldPaintSelection() const
34 { 34 {
35 bool isPrinting = m_svgInlineTextBox.renderer().document().printing(); 35 bool isPrinting = m_svgInlineTextBox.layoutObject().document().printing();
36 return !isPrinting && m_svgInlineTextBox.selectionState() != LayoutObject::S electionNone; 36 return !isPrinting && m_svgInlineTextBox.selectionState() != LayoutObject::S electionNone;
37 } 37 }
38 38
39 void SVGInlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoin t& paintOffset) 39 void SVGInlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoin t& paintOffset)
40 { 40 {
41 ASSERT(paintInfo.shouldPaintWithinRoot(&m_svgInlineTextBox.renderer())); 41 ASSERT(paintInfo.shouldPaintWithinRoot(&m_svgInlineTextBox.layoutObject()));
42 ASSERT(paintInfo.phase == PaintPhaseForeground || paintInfo.phase == PaintPh aseSelection); 42 ASSERT(paintInfo.phase == PaintPhaseForeground || paintInfo.phase == PaintPh aseSelection);
43 ASSERT(m_svgInlineTextBox.truncation() == cNoTruncation); 43 ASSERT(m_svgInlineTextBox.truncation() == cNoTruncation);
44 44
45 if (m_svgInlineTextBox.renderer().style()->visibility() != VISIBLE) 45 if (m_svgInlineTextBox.layoutObject().style()->visibility() != VISIBLE)
46 return; 46 return;
47 47
48 // We're explicitly not supporting composition & custom underlines and custo m highlighters -- unlike InlineTextBox. 48 // We're explicitly not supporting composition & custom underlines and custo m highlighters -- unlike InlineTextBox.
49 // If we ever need that for SVG, it's very easy to refactor and reuse the co de. 49 // If we ever need that for SVG, it's very easy to refactor and reuse the co de.
50 50
51 if (paintInfo.phase == PaintPhaseSelection && !shouldPaintSelection()) 51 if (paintInfo.phase == PaintPhaseSelection && !shouldPaintSelection())
52 return; 52 return;
53 53
54 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .renderer()); 54 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .layoutObject());
55 if (!textShouldBePainted(textRenderer)) 55 if (!textShouldBePainted(textRenderer))
56 return; 56 return;
57 57
58 LayoutObject& parentRenderer = m_svgInlineTextBox.parent()->renderer(); 58 LayoutObject& parentRenderer = m_svgInlineTextBox.parent()->layoutObject();
59 const LayoutStyle& style = parentRenderer.styleRef(); 59 const LayoutStyle& style = parentRenderer.styleRef();
60 60
61 InlineTextBoxPainter(m_svgInlineTextBox).paintDocumentMarkers( 61 InlineTextBoxPainter(m_svgInlineTextBox).paintDocumentMarkers(
62 paintInfo.context, FloatPoint(paintOffset), style, 62 paintInfo.context, FloatPoint(paintOffset), style,
63 textRenderer.scaledFont(), true); 63 textRenderer.scaledFont(), true);
64 64
65 if (!m_svgInlineTextBox.textFragments().isEmpty()) { 65 if (!m_svgInlineTextBox.textFragments().isEmpty()) {
66 DrawingRecorder recorder(paintInfo.context, m_svgInlineTextBox.displayIt emClient(), DisplayItem::paintPhaseToDrawingType(paintInfo.phase), paintInfo.rec t); 66 DrawingRecorder recorder(paintInfo.context, m_svgInlineTextBox.displayIt emClient(), DisplayItem::paintPhaseToDrawingType(paintInfo.phase), paintInfo.rec t);
67 if (!recorder.canUseCachedDrawing()) 67 if (!recorder.canUseCachedDrawing())
68 paintTextFragments(paintInfo, parentRenderer); 68 paintTextFragments(paintInfo, parentRenderer);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 } 140 }
141 141
142 // Spec: Line-through should be drawn after the text is filled and strok ed; thus, the line-through is rendered on top of the text. 142 // Spec: Line-through should be drawn after the text is filled and strok ed; thus, the line-through is rendered on top of the text.
143 if (decorations & TextDecorationLineThrough) 143 if (decorations & TextDecorationLineThrough)
144 paintDecoration(paintInfo, TextDecorationLineThrough, fragment); 144 paintDecoration(paintInfo, TextDecorationLineThrough, fragment);
145 } 145 }
146 } 146 }
147 147
148 void SVGInlineTextBoxPainter::paintSelectionBackground(const PaintInfo& paintInf o) 148 void SVGInlineTextBoxPainter::paintSelectionBackground(const PaintInfo& paintInf o)
149 { 149 {
150 if (m_svgInlineTextBox.renderer().style()->visibility() != VISIBLE) 150 if (m_svgInlineTextBox.layoutObject().style()->visibility() != VISIBLE)
151 return; 151 return;
152 152
153 ASSERT(!m_svgInlineTextBox.renderer().document().printing()); 153 ASSERT(!m_svgInlineTextBox.layoutObject().document().printing());
154 154
155 if (paintInfo.phase == PaintPhaseSelection || !shouldPaintSelection()) 155 if (paintInfo.phase == PaintPhaseSelection || !shouldPaintSelection())
156 return; 156 return;
157 157
158 Color backgroundColor = m_svgInlineTextBox.renderer().selectionBackgroundCol or(); 158 Color backgroundColor = m_svgInlineTextBox.layoutObject().selectionBackgroun dColor();
159 if (!backgroundColor.alpha()) 159 if (!backgroundColor.alpha())
160 return; 160 return;
161 161
162 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .renderer()); 162 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .layoutObject());
163 if (!textShouldBePainted(textRenderer)) 163 if (!textShouldBePainted(textRenderer))
164 return; 164 return;
165 165
166 const LayoutStyle& style = m_svgInlineTextBox.parent()->renderer().styleRef( ); 166 const LayoutStyle& style = m_svgInlineTextBox.parent()->layoutObject().style Ref();
167 167
168 int startPosition, endPosition; 168 int startPosition, endPosition;
169 m_svgInlineTextBox.selectionStartEnd(startPosition, endPosition); 169 m_svgInlineTextBox.selectionStartEnd(startPosition, endPosition);
170 170
171 int fragmentStartPosition = 0; 171 int fragmentStartPosition = 0;
172 int fragmentEndPosition = 0; 172 int fragmentEndPosition = 0;
173 AffineTransform fragmentTransform; 173 AffineTransform fragmentTransform;
174 unsigned textFragmentsSize = m_svgInlineTextBox.textFragments().size(); 174 unsigned textFragmentsSize = m_svgInlineTextBox.textFragments().size();
175 for (unsigned i = 0; i < textFragmentsSize; ++i) { 175 for (unsigned i = 0; i < textFragmentsSize; ++i) {
176 SVGTextFragment& fragment = m_svgInlineTextBox.textFragments().at(i); 176 SVGTextFragment& fragment = m_svgInlineTextBox.textFragments().at(i);
(...skipping 11 matching lines...) Expand all
188 paintInfo.context->setFillColor(backgroundColor); 188 paintInfo.context->setFillColor(backgroundColor);
189 paintInfo.context->fillRect(m_svgInlineTextBox.selectionRectForTextFragm ent(fragment, fragmentStartPosition, fragmentEndPosition, style).toFloatRect(), backgroundColor); 189 paintInfo.context->fillRect(m_svgInlineTextBox.selectionRectForTextFragm ent(fragment, fragmentStartPosition, fragmentEndPosition, style).toFloatRect(), backgroundColor);
190 } 190 }
191 } 191 }
192 192
193 static inline LayoutObject* findLayoutObjectDefininingTextDecoration(InlineFlowB ox* parentBox) 193 static inline LayoutObject* findLayoutObjectDefininingTextDecoration(InlineFlowB ox* parentBox)
194 { 194 {
195 // Lookup first render object in parent hierarchy which has text-decoration set. 195 // Lookup first render object in parent hierarchy which has text-decoration set.
196 LayoutObject* renderer = 0; 196 LayoutObject* renderer = 0;
197 while (parentBox) { 197 while (parentBox) {
198 renderer = &parentBox->renderer(); 198 renderer = &parentBox->layoutObject();
199 199
200 if (renderer->style() && renderer->style()->textDecoration() != TextDeco rationNone) 200 if (renderer->style() && renderer->style()->textDecoration() != TextDeco rationNone)
201 break; 201 break;
202 202
203 parentBox = parentBox->parent(); 203 parentBox = parentBox->parent();
204 } 204 }
205 205
206 ASSERT(renderer); 206 ASSERT(renderer);
207 return renderer; 207 return renderer;
208 } 208 }
(...skipping 16 matching lines...) Expand all
225 225
226 static inline float thicknessForDecoration(TextDecoration, const Font& font) 226 static inline float thicknessForDecoration(TextDecoration, const Font& font)
227 { 227 {
228 // FIXME: For SVG Fonts we need to use the attributes defined in the <font-f ace> if specified. 228 // FIXME: For SVG Fonts we need to use the attributes defined in the <font-f ace> if specified.
229 // Compatible with Batik/Presto 229 // Compatible with Batik/Presto
230 return font.fontDescription().computedSize() / 20.0f; 230 return font.fontDescription().computedSize() / 20.0f;
231 } 231 }
232 232
233 void SVGInlineTextBoxPainter::paintDecoration(const PaintInfo& paintInfo, TextDe coration decoration, const SVGTextFragment& fragment) 233 void SVGInlineTextBoxPainter::paintDecoration(const PaintInfo& paintInfo, TextDe coration decoration, const SVGTextFragment& fragment)
234 { 234 {
235 if (m_svgInlineTextBox.renderer().style()->textDecorationsInEffect() == Text DecorationNone) 235 if (m_svgInlineTextBox.layoutObject().style()->textDecorationsInEffect() == TextDecorationNone)
236 return; 236 return;
237 237
238 if (fragment.width <= 0) 238 if (fragment.width <= 0)
239 return; 239 return;
240 240
241 // Find out which render style defined the text-decoration, as its fill/stro ke properties have to be used for drawing instead of ours. 241 // Find out which render style defined the text-decoration, as its fill/stro ke properties have to be used for drawing instead of ours.
242 LayoutObject* decorationRenderer = findLayoutObjectDefininingTextDecoration( m_svgInlineTextBox.parent()); 242 LayoutObject* decorationRenderer = findLayoutObjectDefininingTextDecoration( m_svgInlineTextBox.parent());
243 const LayoutStyle& decorationStyle = decorationRenderer->styleRef(); 243 const LayoutStyle& decorationStyle = decorationRenderer->styleRef();
244 244
245 if (decorationStyle.visibility() == HIDDEN) 245 if (decorationStyle.visibility() == HIDDEN)
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 default: 286 default:
287 ASSERT_NOT_REACHED(); 287 ASSERT_NOT_REACHED();
288 } 288 }
289 } 289 }
290 } 290 }
291 291
292 void SVGInlineTextBoxPainter::paintTextWithShadows(const PaintInfo& paintInfo, c onst LayoutStyle& style, 292 void SVGInlineTextBoxPainter::paintTextWithShadows(const PaintInfo& paintInfo, c onst LayoutStyle& style,
293 TextRun& textRun, const SVGTextFragment& fragment, int startPosition, int en dPosition, 293 TextRun& textRun, const SVGTextFragment& fragment, int startPosition, int en dPosition,
294 LayoutSVGResourceMode resourceMode) 294 LayoutSVGResourceMode resourceMode)
295 { 295 {
296 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .renderer()); 296 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .layoutObject());
297 297
298 float scalingFactor = textRenderer.scalingFactor(); 298 float scalingFactor = textRenderer.scalingFactor();
299 ASSERT(scalingFactor); 299 ASSERT(scalingFactor);
300 300
301 const Font& scaledFont = textRenderer.scaledFont(); 301 const Font& scaledFont = textRenderer.scaledFont();
302 const ShadowList* shadowList = style.textShadow(); 302 const ShadowList* shadowList = style.textShadow();
303 GraphicsContext* context = paintInfo.context; 303 GraphicsContext* context = paintInfo.context;
304 304
305 // Text shadows are disabled when printing. http://crbug.com/258321 305 // Text shadows are disabled when printing. http://crbug.com/258321
306 bool hasShadow = shadowList && !context->printing(); 306 bool hasShadow = shadowList && !context->printing();
307 307
308 FloatPoint textOrigin(fragment.x, fragment.y); 308 FloatPoint textOrigin(fragment.x, fragment.y);
309 FloatSize textSize(fragment.width, fragment.height); 309 FloatSize textSize(fragment.width, fragment.height);
310 AffineTransform paintServerTransform; 310 AffineTransform paintServerTransform;
311 const AffineTransform* additionalPaintServerTransform = 0; 311 const AffineTransform* additionalPaintServerTransform = 0;
312 312
313 GraphicsContextStateSaver stateSaver(*context, false); 313 GraphicsContextStateSaver stateSaver(*context, false);
314 if (scalingFactor != 1) { 314 if (scalingFactor != 1) {
315 textOrigin.scale(scalingFactor, scalingFactor); 315 textOrigin.scale(scalingFactor, scalingFactor);
316 textSize.scale(scalingFactor); 316 textSize.scale(scalingFactor);
317 stateSaver.save(); 317 stateSaver.save();
318 context->scale(1 / scalingFactor, 1 / scalingFactor); 318 context->scale(1 / scalingFactor, 1 / scalingFactor);
319 // Adjust the paint-server coordinate space. 319 // Adjust the paint-server coordinate space.
320 paintServerTransform.scale(scalingFactor); 320 paintServerTransform.scale(scalingFactor);
321 additionalPaintServerTransform = &paintServerTransform; 321 additionalPaintServerTransform = &paintServerTransform;
322 } 322 }
323 323
324 // FIXME: Non-scaling stroke is not applied here. 324 // FIXME: Non-scaling stroke is not applied here.
325 325
326 if (!SVGLayoutSupport::updateGraphicsContext(paintInfo, stateSaver, style, m _svgInlineTextBox.parent()->renderer(), resourceMode, additionalPaintServerTrans form)) 326 if (!SVGLayoutSupport::updateGraphicsContext(paintInfo, stateSaver, style, m _svgInlineTextBox.parent()->layoutObject(), resourceMode, additionalPaintServerT ransform))
327 return; 327 return;
328 328
329 if (hasShadow) { 329 if (hasShadow) {
330 stateSaver.saveIfNeeded(); 330 stateSaver.saveIfNeeded();
331 context->setDrawLooper(shadowList->createDrawLooper(DrawLooperBuilder::S hadowRespectsAlpha)); 331 context->setDrawLooper(shadowList->createDrawLooper(DrawLooperBuilder::S hadowRespectsAlpha));
332 } 332 }
333 333
334 context->setTextDrawingMode(resourceMode == ApplyToFillMode ? TextModeFill : TextModeStroke); 334 context->setTextDrawingMode(resourceMode == ApplyToFillMode ? TextModeFill : TextModeStroke);
335 335
336 if (scalingFactor != 1 && resourceMode == ApplyToStrokeMode) 336 if (scalingFactor != 1 && resourceMode == ApplyToStrokeMode)
(...skipping 30 matching lines...) Expand all
367 367
368 // Eventually draw text using regular style until the start position of the selection 368 // Eventually draw text using regular style until the start position of the selection
369 bool paintSelectedTextOnly = paintInfo.phase == PaintPhaseSelection; 369 bool paintSelectedTextOnly = paintInfo.phase == PaintPhaseSelection;
370 if (startPosition > 0 && !paintSelectedTextOnly) 370 if (startPosition > 0 && !paintSelectedTextOnly)
371 paintTextWithShadows(paintInfo, style, textRun, fragment, 0, startPositi on, resourceMode); 371 paintTextWithShadows(paintInfo, style, textRun, fragment, 0, startPositi on, resourceMode);
372 372
373 // Draw text using selection style from the start to the end position of the selection 373 // Draw text using selection style from the start to the end position of the selection
374 if (style != selectionStyle) { 374 if (style != selectionStyle) {
375 StyleDifference diff; 375 StyleDifference diff;
376 diff.setNeedsPaintInvalidationObject(); 376 diff.setNeedsPaintInvalidationObject();
377 SVGResourcesCache::clientStyleChanged(&m_svgInlineTextBox.parent()->rend erer(), diff, selectionStyle); 377 SVGResourcesCache::clientStyleChanged(&m_svgInlineTextBox.parent()->layo utObject(), diff, selectionStyle);
378 } 378 }
379 379
380 paintTextWithShadows(paintInfo, selectionStyle, textRun, fragment, startPosi tion, endPosition, resourceMode); 380 paintTextWithShadows(paintInfo, selectionStyle, textRun, fragment, startPosi tion, endPosition, resourceMode);
381 381
382 if (style != selectionStyle) { 382 if (style != selectionStyle) {
383 StyleDifference diff; 383 StyleDifference diff;
384 diff.setNeedsPaintInvalidationObject(); 384 diff.setNeedsPaintInvalidationObject();
385 SVGResourcesCache::clientStyleChanged(&m_svgInlineTextBox.parent()->rend erer(), diff, style); 385 SVGResourcesCache::clientStyleChanged(&m_svgInlineTextBox.parent()->layo utObject(), diff, style);
386 } 386 }
387 387
388 // Eventually draw text using regular style from the end position of the sel ection to the end of the current chunk part 388 // Eventually draw text using regular style from the end position of the sel ection to the end of the current chunk part
389 if (endPosition < static_cast<int>(fragment.length) && !paintSelectedTextOnl y) 389 if (endPosition < static_cast<int>(fragment.length) && !paintSelectedTextOnl y)
390 paintTextWithShadows(paintInfo, style, textRun, fragment, endPosition, f ragment.length, resourceMode); 390 paintTextWithShadows(paintInfo, style, textRun, fragment, endPosition, f ragment.length, resourceMode);
391 } 391 }
392 392
393 void SVGInlineTextBoxPainter::paintTextMatchMarker(GraphicsContext* context, con st FloatPoint&, DocumentMarker* marker, const LayoutStyle& style, const Font& fo nt) 393 void SVGInlineTextBoxPainter::paintTextMatchMarker(GraphicsContext* context, con st FloatPoint&, DocumentMarker* marker, const LayoutStyle& style, const Font& fo nt)
394 { 394 {
395 // SVG is only interested in the TextMatch markers. 395 // SVG is only interested in the TextMatch markers.
396 if (marker->type() != DocumentMarker::TextMatch) 396 if (marker->type() != DocumentMarker::TextMatch)
397 return; 397 return;
398 398
399 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .renderer()); 399 LayoutSVGInlineText& textRenderer = toLayoutSVGInlineText(m_svgInlineTextBox .layoutObject());
400 400
401 FloatRect markerRect; 401 FloatRect markerRect;
402 AffineTransform fragmentTransform; 402 AffineTransform fragmentTransform;
403 for (InlineTextBox* box = textRenderer.firstTextBox(); box; box = box->nextT extBox()) { 403 for (InlineTextBox* box = textRenderer.firstTextBox(); box; box = box->nextT extBox()) {
404 if (!box->isSVGInlineTextBox()) 404 if (!box->isSVGInlineTextBox())
405 continue; 405 continue;
406 406
407 SVGInlineTextBox* textBox = toSVGInlineTextBox(box); 407 SVGInlineTextBox* textBox = toSVGInlineTextBox(box);
408 408
409 int markerStartPosition = std::max<int>(marker->startOffset() - textBox- >start(), 0); 409 int markerStartPosition = std::max<int>(marker->startOffset() - textBox- >start(), 0);
410 int markerEndPosition = std::min<int>(marker->endOffset() - textBox->sta rt(), textBox->len()); 410 int markerEndPosition = std::min<int>(marker->endOffset() - textBox->sta rt(), textBox->len());
411 411
412 if (markerStartPosition >= markerEndPosition) 412 if (markerStartPosition >= markerEndPosition)
413 continue; 413 continue;
414 414
415 const Vector<SVGTextFragment>& fragments = textBox->textFragments(); 415 const Vector<SVGTextFragment>& fragments = textBox->textFragments();
416 unsigned textFragmentsSize = fragments.size(); 416 unsigned textFragmentsSize = fragments.size();
417 for (unsigned i = 0; i < textFragmentsSize; ++i) { 417 for (unsigned i = 0; i < textFragmentsSize; ++i) {
418 const SVGTextFragment& fragment = fragments.at(i); 418 const SVGTextFragment& fragment = fragments.at(i);
419 419
420 int fragmentStartPosition = markerStartPosition; 420 int fragmentStartPosition = markerStartPosition;
421 int fragmentEndPosition = markerEndPosition; 421 int fragmentEndPosition = markerEndPosition;
422 if (!textBox->mapStartEndPositionsIntoFragmentCoordinates(fragment, fragmentStartPosition, fragmentEndPosition)) 422 if (!textBox->mapStartEndPositionsIntoFragmentCoordinates(fragment, fragmentStartPosition, fragmentEndPosition))
423 continue; 423 continue;
424 424
425 FloatRect fragmentRect = textBox->selectionRectForTextFragment(fragm ent, fragmentStartPosition, fragmentEndPosition, style).toFloatRect(); 425 FloatRect fragmentRect = textBox->selectionRectForTextFragment(fragm ent, fragmentStartPosition, fragmentEndPosition, style).toFloatRect();
426 fragment.buildFragmentTransform(fragmentTransform); 426 fragment.buildFragmentTransform(fragmentTransform);
427 427
428 // Draw the marker highlight. 428 // Draw the marker highlight.
429 if (m_svgInlineTextBox.renderer().frame()->editor().markedTextMatche sAreHighlighted()) { 429 if (m_svgInlineTextBox.layoutObject().frame()->editor().markedTextMa tchesAreHighlighted()) {
430 Color color = marker->activeMatch() ? 430 Color color = marker->activeMatch() ?
431 LayoutTheme::theme().platformActiveTextSearchHighlightColor( ) : 431 LayoutTheme::theme().platformActiveTextSearchHighlightColor( ) :
432 LayoutTheme::theme().platformInactiveTextSearchHighlightColo r(); 432 LayoutTheme::theme().platformInactiveTextSearchHighlightColo r();
433 GraphicsContextStateSaver stateSaver(*context); 433 GraphicsContextStateSaver stateSaver(*context);
434 if (!fragmentTransform.isIdentity()) 434 if (!fragmentTransform.isIdentity())
435 context->concatCTM(fragmentTransform); 435 context->concatCTM(fragmentTransform);
436 context->setFillColor(color); 436 context->setFillColor(color);
437 context->fillRect(fragmentRect, color); 437 context->fillRect(fragmentRect, color);
438 } 438 }
439 439
440 fragmentRect = fragmentTransform.mapRect(fragmentRect); 440 fragmentRect = fragmentTransform.mapRect(fragmentRect);
441 markerRect.unite(fragmentRect); 441 markerRect.unite(fragmentRect);
442 } 442 }
443 } 443 }
444 444
445 toRenderedDocumentMarker(marker)->setRenderedRect(LayoutRect(textRenderer.lo calToAbsoluteQuad(markerRect).enclosingBoundingBox())); 445 toRenderedDocumentMarker(marker)->setRenderedRect(LayoutRect(textRenderer.lo calToAbsoluteQuad(markerRect).enclosingBoundingBox()));
446 } 446 }
447 447
448 } // namespace blink 448 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/paint/SVGInlineFlowBoxPainter.cpp ('k') | Source/core/paint/SVGRootInlineBoxPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698