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

Unified Diff: Source/core/paint/SVGInlineTextBoxPainter.cpp

Issue 1070703002: Explicitly use SkPaint(s) in SVGInlineTextBoxPainter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/paint/SVGInlineTextBoxPainter.cpp
diff --git a/Source/core/paint/SVGInlineTextBoxPainter.cpp b/Source/core/paint/SVGInlineTextBoxPainter.cpp
index e696ff41c54f9d672c732b506f030afdb55ac8c5..8480e34be342bcc3364386be1b02c0977dc3da84 100644
--- a/Source/core/paint/SVGInlineTextBoxPainter.cpp
+++ b/Source/core/paint/SVGInlineTextBoxPainter.cpp
@@ -20,6 +20,7 @@
#include "core/paint/InlinePainter.h"
#include "core/paint/InlineTextBoxPainter.h"
#include "core/paint/LayoutObjectDrawingRecorder.h"
+#include "core/paint/SVGPaintContext.h"
namespace blink {
@@ -268,19 +269,24 @@ void SVGInlineTextBoxPainter::paintDecoration(const PaintInfo& paintInfo, TextDe
switch (svgDecorationStyle.paintOrderType(i)) {
case PT_FILL:
if (svgDecorationStyle.hasFill()) {
- GraphicsContextStateSaver stateSaver(*paintInfo.context, false);
- if (!SVGLayoutSupport::updateGraphicsContext(paintInfo, stateSaver, decorationStyle, *decorationRenderer, ApplyToFillMode))
+ SkPaint fillPaint;
+ if (!SVGPaintContext::paintForLayoutObject(paintInfo, decorationStyle, *decorationRenderer, ApplyToFillMode, fillPaint))
break;
- paintInfo.context->fillPath(path);
+ fillPaint.setAntiAlias(true);
+ paintInfo.context->drawPath(path.skPath(), fillPaint);
}
break;
case PT_STROKE:
if (svgDecorationStyle.hasVisibleStroke()) {
// FIXME: Non-scaling stroke is not applied here.
- GraphicsContextStateSaver stateSaver(*paintInfo.context, false);
- if (!SVGLayoutSupport::updateGraphicsContext(paintInfo, stateSaver, decorationStyle, *decorationRenderer, ApplyToStrokeMode))
+ SkPaint strokePaint;
+ if (!SVGPaintContext::paintForLayoutObject(paintInfo, decorationStyle, *decorationRenderer, ApplyToStrokeMode, strokePaint))
break;
- paintInfo.context->strokePath(path);
+ strokePaint.setAntiAlias(true);
+ StrokeData strokeData;
+ SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, decorationStyle, *decorationRenderer);
+ strokeData.setupPaint(&strokePaint);
+ paintInfo.context->drawPath(path.skPath(), strokePaint);
}
break;
case PT_MARKERS:
@@ -324,19 +330,23 @@ void SVGInlineTextBoxPainter::paintTextWithShadows(const PaintInfo& paintInfo, c
}
// FIXME: Non-scaling stroke is not applied here.
-
- if (!SVGLayoutSupport::updateGraphicsContext(paintInfo, stateSaver, style, m_svgInlineTextBox.parent()->layoutObject(), resourceMode, additionalPaintServerTransform))
+ SkPaint paint;
+ if (!SVGPaintContext::paintForLayoutObject(paintInfo, style, m_svgInlineTextBox.parent()->layoutObject(), resourceMode, paint, additionalPaintServerTransform))
return;
+ paint.setAntiAlias(true);
if (hasShadow) {
- stateSaver.saveIfNeeded();
- context->setDrawLooper(shadowList->createDrawLooper(DrawLooperBuilder::ShadowRespectsAlpha));
+ OwnPtr<DrawLooperBuilder> drawLooperBuilder = shadowList->createDrawLooper(DrawLooperBuilder::ShadowRespectsAlpha);
+ RefPtr<SkDrawLooper> drawLooper = drawLooperBuilder->detachDrawLooper();
+ paint.setLooper(drawLooper.get());
}
- context->setTextDrawingMode(resourceMode == ApplyToFillMode ? TextModeFill : TextModeStroke);
-
- if (scalingFactor != 1 && resourceMode == ApplyToStrokeMode)
- context->setStrokeThickness(context->strokeThickness() * scalingFactor);
+ if (resourceMode == ApplyToStrokeMode) {
+ StrokeData strokeData;
+ SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, style, m_svgInlineTextBox.parent()->layoutObject());
+ strokeData.setThickness(strokeData.thickness() * scalingFactor);
+ strokeData.setupPaint(&paint);
+ }
TextRunPaintInfo textRunPaintInfo(textRun);
textRunPaintInfo.from = startPosition;
@@ -346,7 +356,7 @@ void SVGInlineTextBoxPainter::paintTextWithShadows(const PaintInfo& paintInfo, c
textRunPaintInfo.bounds = FloatRect(textOrigin.x(), textOrigin.y() - baseline,
textSize.width(), textSize.height());
- context->drawText(scaledFont, textRunPaintInfo, textOrigin);
+ context->drawText(scaledFont, textRunPaintInfo, textOrigin, paint);
}
void SVGInlineTextBoxPainter::paintText(const PaintInfo& paintInfo, const ComputedStyle& style,

Powered by Google App Engine
This is Rietveld 408576698