Beispiel #1
0
void SVGAngle::setValueAsString(const String& value, ExceptionCode& ec)
{
    if (value.isEmpty()) {
        m_unitType = SVG_ANGLETYPE_UNSPECIFIED;
        return;
    }

    float valueInSpecifiedUnits = 0;
    auto upconvertedCharacters = StringView(value).upconvertedCharacters();
    const UChar* ptr = upconvertedCharacters;
    const UChar* end = ptr + value.length();

    if (!parseNumber(ptr, end, valueInSpecifiedUnits, false)) {
        ec = SYNTAX_ERR;
        return;
    }

    SVGAngleType unitType = stringToAngleType(ptr, end);
    if (unitType == SVG_ANGLETYPE_UNKNOWN) {
        ec = SYNTAX_ERR;
        return;
    }

    m_unitType = unitType;
    m_valueInSpecifiedUnits = valueInSpecifiedUnits;
}
static bool parseValue(const String& value, float& valueInSpecifiedUnits, SVGAngle::SVGAngleType& unitType)
{
    const CharType* ptr = value.getCharacters<CharType>();
    const CharType* end = ptr + value.length();

    if (!parseNumber(ptr, end, valueInSpecifiedUnits, false))
        return false;

    unitType = stringToAngleType(ptr, end);
    if (unitType == SVGAngle::SVG_ANGLETYPE_UNKNOWN)
        return false;

    return true;
}