6#include <QtSvg/private/qsvgnode_p.h>
7#include <QtSvg/private/qsvgdocument_p.h>
11QSvgPaintServer::~QSvgPaintServer()
14QSvgSolidColorPaint::QSvgSolidColorPaint(
const QColor &color)
19QSvgSolidColorPaint::~QSvgSolidColorPaint()
22QSvgGradientPaint::QSvgGradientPaint(std::unique_ptr<QGradient> grad)
23 : m_gradient(std::move(grad))
27QSvgGradientPaint::~QSvgGradientPaint()
30QBrush QSvgGradientPaint::brush(QPainter *,
const QSvgNode *, QSvgExtraStates &)
32 if (!m_link.isEmpty())
36 if (!m_gradientStopsSet) {
37 m_gradient->setStops(QGradientStops() << QGradientStop(0.0, QColor(0, 0, 0, 0)));
38 m_gradientStopsSet =
true;
41 QBrush b(*m_gradient);
43 if (!m_transform.isIdentity())
44 b.setTransform(m_transform);
49void QSvgGradientPaint::resolveStops()
51 QSet<QString> visited;
52 resolveStops_helper(visited);
55void QSvgGradientPaint::resolveStops_helper(QSet<QString> &visited)
57 if (!m_link.isEmpty() && m_doc) {
58 QSvgPaintServerSharedPtr paintServer = m_doc->paintServer(m_link);
59 if (paintServer && !visited.contains(m_link)) {
60 visited.insert(m_link);
61 if (paintServer->type() == QSvgPaintServer::Type::Gradient) {
62 QSvgGradientPaint *st =
63 static_cast<QSvgGradientPaint*>(paintServer.get());
64 st->resolveStops_helper(visited);
65 m_gradient->setStops(st->qgradient()->stops());
66 m_gradientStopsSet = st->gradientStopsSet();
69 qWarning(
"Could not resolve property : %s", qPrintable(m_link));
75QSvgPatternPaint::QSvgPatternPaint(QSvgPattern *pattern)
80QSvgPatternPaint::~QSvgPatternPaint()
83QBrush QSvgPatternPaint::brush(QPainter *p,
const QSvgNode *node, QSvgExtraStates &states)
85 QBrush b(m_pattern->patternImage(p, states, node));
86 b.setTransform(m_pattern->appliedTransform());
Combined button and popup list for selecting options.