QColor colorFromString(const QString &name) { QString::const_iterator itr = name.constBegin(); QList<qreal> compo; if (name.startsWith("rgba(")) { ++itr; ++itr; ++itr; ++itr; ++itr; compo = parseNumbersList(itr); if (compo.size() != 4) { return QColor(); } //alpha seems to be always between 0-1 compo[3] *= 255; return QColor((int)compo[0], (int)compo[1], (int)compo[2], (int)compo[3]); } else if (name.startsWith("rgb(")) { ++itr; ++itr; ++itr; ++itr; compo = parseNumbersList(itr); if (compo.size() != 3) { return QColor(); } return QColor((int)qClamp(compo[0], qreal(0), qreal(255)), (int)qClamp(compo[1], qreal(0), qreal(255)), (int)qClamp(compo[2], qreal(0), qreal(255))); } else { //QRgb color; //CSSParser::parseColor(name, color); return QColor(name); } }
static QList<QPointF> parsePoints(const QByteArray &line) { QList<QPointF> res; QByteArray::const_iterator it = line.constBegin(); if (*it == ',') ++it; QList<qreal> nums = parseNumbersList(it); QList<qreal>::const_iterator nitr; for (nitr = nums.begin(); nitr != nums.end(); ++nitr) { qreal x = *nitr; ++nitr; Q_ASSERT(nitr != nums.end()); qreal y = *nitr; res.append(QPointF(x, y)); } return res; }