コード例 #1
0
ファイル: SVGTransformable.cpp プロジェクト: edcwconan/webkit
bool SVGTransformable::parseTransformAttribute(SVGTransformList& list, const UChar*& currTransform, const UChar* end, TransformParsingMode mode)
{
    if (mode == ClearList)
        list.clear();

    bool delimParsed = false;
    while (currTransform < end) {
        delimParsed = false;
        SVGTransform::SVGTransformType type = SVGTransform::SVG_TRANSFORM_UNKNOWN;
        skipOptionalSVGSpaces(currTransform, end);

        if (!parseAndSkipType(currTransform, end, type))
            return false;

        SVGTransform transform;
        if (!parseTransformValue(type, currTransform, end, transform))
            return false;

        list.append(transform);
        skipOptionalSVGSpaces(currTransform, end);
        if (currTransform < end && *currTransform == ',') {
            delimParsed = true;
            ++currTransform;
        }
        skipOptionalSVGSpaces(currTransform, end);
    }

    return !delimParsed;
}
コード例 #2
0
SVGPropertyBase* SVGTransformListInterpolationType::appliedSVGValue(
    const InterpolableValue& interpolableValue,
    const NonInterpolableValue* nonInterpolableValue) const {
  SVGTransformList* result = SVGTransformList::create();
  const InterpolableList& list = toInterpolableList(interpolableValue);
  const Vector<SVGTransformType>& transformTypes =
      toSVGTransformNonInterpolableValue(nonInterpolableValue)
          ->transformTypes();
  for (size_t i = 0; i < list.length(); ++i)
    result->append(fromInterpolableValue(*list.get(i), transformTypes.at(i)));
  return result;
}