17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be
37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file.
47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "config.h"
67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/paint/SVGTextPainter.h"
77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/paint/BlockPainter.h"
97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/PaintInfo.h"
107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/svg/RenderSVGText.h"
117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/graphics/GraphicsContextStateSaver.h"
127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink {
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid SVGTextPainter::paint(PaintInfo& paintInfo)
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    if (paintInfo.phase != PaintPhaseForeground && paintInfo.phase != PaintPhaseSelection)
187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return;
197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    PaintInfo blockInfo(paintInfo);
217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    GraphicsContextStateSaver stateSaver(*blockInfo.context, false);
227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    blockInfo.applyTransform(m_renderSVGText.localToParentTransform(), &stateSaver);
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    BlockPainter(m_renderSVGText).paint(blockInfo, LayoutPoint());
267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Paint the outlines, if any
287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    if (paintInfo.phase == PaintPhaseForeground) {
297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        blockInfo.phase = PaintPhaseSelfOutline;
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        BlockPainter(m_renderSVGText).paint(blockInfo, LayoutPoint());
317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    }
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
35