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/SVGInlineTextBoxPainter.h" | 5 #include "core/paint/SVGInlineTextBoxPainter.h" |
6 | 6 |
7 #include "core/editing/Editor.h" | 7 #include "core/editing/Editor.h" |
8 #include "core/editing/markers/DocumentMarkerController.h" | 8 #include "core/editing/markers/DocumentMarkerController.h" |
9 #include "core/editing/markers/RenderedDocumentMarker.h" | 9 #include "core/editing/markers/RenderedDocumentMarker.h" |
10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 paintInfo.context.drawPath(path.skPath(), fillPaint); | 264 paintInfo.context.drawPath(path.skPath(), fillPaint); |
265 } | 265 } |
266 break; | 266 break; |
267 case PT_STROKE: | 267 case PT_STROKE: |
268 if (svgDecorationStyle.hasVisibleStroke()) { | 268 if (svgDecorationStyle.hasVisibleStroke()) { |
269 SkPaint strokePaint; | 269 SkPaint strokePaint; |
270 if (!SVGPaintContext::paintForLayoutObject(paintInfo, decoration
Style, *decorationLayoutObject, ApplyToStrokeMode, strokePaint)) | 270 if (!SVGPaintContext::paintForLayoutObject(paintInfo, decoration
Style, *decorationLayoutObject, ApplyToStrokeMode, strokePaint)) |
271 break; | 271 break; |
272 strokePaint.setAntiAlias(true); | 272 strokePaint.setAntiAlias(true); |
273 StrokeData strokeData; | 273 StrokeData strokeData; |
274 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, decor
ationStyle, *decorationLayoutObject); | 274 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, decor
ationStyle, *decorationLayoutObject, 1); |
275 if (svgDecorationStyle.vectorEffect() == VE_NON_SCALING_STROKE) | 275 if (svgDecorationStyle.vectorEffect() == VE_NON_SCALING_STROKE) |
276 strokeData.setThickness(strokeData.thickness() / scalingFact
or); | 276 strokeData.setThickness(strokeData.thickness() / scalingFact
or); |
277 strokeData.setupPaint(&strokePaint); | 277 strokeData.setupPaint(&strokePaint); |
278 paintInfo.context.drawPath(path.skPath(), strokePaint); | 278 paintInfo.context.drawPath(path.skPath(), strokePaint); |
279 } | 279 } |
280 break; | 280 break; |
281 case PT_MARKERS: | 281 case PT_MARKERS: |
282 break; | 282 break; |
283 default: | 283 default: |
284 ASSERT_NOT_REACHED(); | 284 ASSERT_NOT_REACHED(); |
(...skipping 28 matching lines...) Expand all Loading... |
313 paint.setAntiAlias(true); | 313 paint.setAntiAlias(true); |
314 | 314 |
315 if (hasShadow) { | 315 if (hasShadow) { |
316 OwnPtr<DrawLooperBuilder> drawLooperBuilder = shadowList->createDrawLoop
er(DrawLooperBuilder::ShadowRespectsAlpha, style.visitedDependentColor(CSSProper
tyColor)); | 316 OwnPtr<DrawLooperBuilder> drawLooperBuilder = shadowList->createDrawLoop
er(DrawLooperBuilder::ShadowRespectsAlpha, style.visitedDependentColor(CSSProper
tyColor)); |
317 RefPtr<SkDrawLooper> drawLooper = drawLooperBuilder->detachDrawLooper(); | 317 RefPtr<SkDrawLooper> drawLooper = drawLooperBuilder->detachDrawLooper(); |
318 paint.setLooper(drawLooper.get()); | 318 paint.setLooper(drawLooper.get()); |
319 } | 319 } |
320 | 320 |
321 if (resourceMode == ApplyToStrokeMode) { | 321 if (resourceMode == ApplyToStrokeMode) { |
322 StrokeData strokeData; | 322 StrokeData strokeData; |
323 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, style, *LineL
ayoutAPIShim::layoutObjectFrom(m_svgInlineTextBox.parent()->lineLayoutItem())); | 323 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, style, *LineL
ayoutAPIShim::layoutObjectFrom(m_svgInlineTextBox.parent()->lineLayoutItem()), 1
); |
324 if (style.svgStyle().vectorEffect() != VE_NON_SCALING_STROKE) | 324 if (style.svgStyle().vectorEffect() != VE_NON_SCALING_STROKE) |
325 strokeData.setThickness(strokeData.thickness() * scalingFactor); | 325 strokeData.setThickness(strokeData.thickness() * scalingFactor); |
326 strokeData.setupPaint(&paint); | 326 strokeData.setupPaint(&paint); |
327 } | 327 } |
328 return true; | 328 return true; |
329 } | 329 } |
330 | 330 |
331 void SVGInlineTextBoxPainter::paintText(const PaintInfo& paintInfo, TextRun& tex
tRun, const SVGTextFragment& fragment, int startPosition, int endPosition, const
SkPaint& paint) | 331 void SVGInlineTextBoxPainter::paintText(const PaintInfo& paintInfo, TextRun& tex
tRun, const SVGTextFragment& fragment, int startPosition, int endPosition, const
SkPaint& paint) |
332 { | 332 { |
333 LayoutSVGInlineText& textLayoutObject = toLayoutSVGInlineText(*LineLayoutAPI
Shim::layoutObjectFrom(m_svgInlineTextBox.lineLayoutItem())); | 333 LayoutSVGInlineText& textLayoutObject = toLayoutSVGInlineText(*LineLayoutAPI
Shim::layoutObjectFrom(m_svgInlineTextBox.lineLayoutItem())); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 stateSaver.save(); | 496 stateSaver.save(); |
497 paintInfo.context.concatCTM(fragment.buildFragmentTransform()); | 497 paintInfo.context.concatCTM(fragment.buildFragmentTransform()); |
498 } | 498 } |
499 FloatRect fragmentRect = m_svgInlineTextBox.selectionRectForTextFragment
(fragment, textMatchInfo.startPosition, textMatchInfo.endPosition, style); | 499 FloatRect fragmentRect = m_svgInlineTextBox.selectionRectForTextFragment
(fragment, textMatchInfo.startPosition, textMatchInfo.endPosition, style); |
500 paintInfo.context.setFillColor(color); | 500 paintInfo.context.setFillColor(color); |
501 paintInfo.context.fillRect(fragmentRect); | 501 paintInfo.context.fillRect(fragmentRect); |
502 } | 502 } |
503 } | 503 } |
504 | 504 |
505 } // namespace blink | 505 } // namespace blink |
OLD | NEW |