46void QQuickFusionBusyIndicator::paint(QPainter *painter)
48 const qreal w = width();
49 const qreal h = height();
50 if (w <= 0 || h <= 0 || !isRunning())
53 const qreal sz = qMin(w, h);
54 const qreal dx = (w - sz) / 2;
55 const qreal dy = (h - sz) / 2;
56 const int hpw = qRound(qMax(qreal(1), sz / 14)) & -1;
57 const int pw = 2 * hpw;
58 const QRectF bounds(dx + hpw, dy + hpw, sz - pw - 1, sz - pw - 1);
60 QConicalGradient gradient;
61 gradient.setCenter(QPointF(dx + sz / 2, dy + sz / 2));
62 gradient.setColorAt(0, m_color);
63 gradient.setColorAt(0.1, m_color);
64 gradient.setColorAt(1, Qt::transparent);
66 painter->translate(0.5, 0.5);
67 painter->setRenderHint(QPainter::Antialiasing,
true);
68 painter->setPen(QPen(gradient, pw, Qt::SolidLine));
69 painter->drawArc(bounds, 0, 360 * 16);
70 painter->setPen(QPen(m_color, pw, Qt::SolidLine, Qt::RoundCap));
71 painter->drawArc(bounds, 0, 20 * 16);