bool SVGPathParser::parseToString(SVGPathSource& source, String& result, PathParsingMode mode, bool checkForInitialMoveTo) { SVGPathStringBuilder builder; SVGPathParser parser(builder, source, mode); bool ok = parser.parsePathData(checkForInitialMoveTo); result = builder.result(); return ok; }
bool buildStringFromByteStream(const SVGPathByteStream& stream, String& result, PathParsingMode parsingMode) { if (stream.isEmpty()) return true; SVGPathStringBuilder builder; SVGPathByteStreamSource source(stream); SVGPathParser parser(&source, &builder); bool ok = parser.parsePathDataFromSource(parsingMode); result = builder.result(); return ok; }
bool buildStringFromPath(const Path& path, String& string) { // Ideally we would have a SVGPathPlatformPathSource, but it's not possible to manually iterate // a path, only apply a function to all path elements at once. SVGPathStringBuilder builder; path.apply([&builder](const PathElement& pathElement) { pathIteratorForBuildingString(builder, pathElement); }); string = builder.result(); return true; }
bool buildStringFromSVGPathSegList(const SVGPathSegList& list, String& result, PathParsingMode parsingMode) { result = String(); if (list.isEmpty()) return true; SVGPathStringBuilder* builder = globalSVGPathStringBuilder(); auto source = std::make_unique<SVGPathSegListSource>(list); SVGPathParser* parser = globalSVGPathParser(source.get(), builder); bool ok = parser->parsePathDataFromSource(parsingMode); result = builder->result(); parser->cleanup(); return ok; }
bool buildStringFromByteStream(SVGPathByteStream* stream, String& result, PathParsingMode parsingMode) { ASSERT(stream); if (stream->isEmpty()) return true; SVGPathStringBuilder* builder = globalSVGPathStringBuilder(); auto source = std::make_unique<SVGPathByteStreamSource>(stream); SVGPathParser* parser = globalSVGPathParser(source.get(), builder); bool ok = parser->parsePathDataFromSource(parsingMode); result = builder->result(); parser->cleanup(); return ok; }
bool SVGPathParserFactory::buildStringFromSVGPathSegList(SVGPathSegList* pathSegList, String& result, PathParsingMode parsingMode) { ASSERT(pathSegList); if (!pathSegList->numberOfItems()) return false; SVGPathStringBuilder* builder = globalSVGPathStringBuilder(); OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(pathSegList); SVGPathParser* parser = globalSVGPathParser(source.get(), builder); bool ok = parser->parsePathDataFromSource(parsingMode); result = builder->result(); parser->cleanup(); return ok; }
bool SVGPathParserFactory::buildStringFromByteStream(SVGPathByteStream* stream, String& result, PathParsingMode parsingMode) { ASSERT(stream); if (stream->isEmpty()) return false; SVGPathStringBuilder* builder = globalSVGPathStringBuilder(); OwnPtr<SVGPathByteStreamSource> source = SVGPathByteStreamSource::create(stream); SVGPathParser* parser = globalSVGPathParser(source.get(), builder); bool ok = parser->parsePathDataFromSource(parsingMode); result = builder->result(); parser->cleanup(); return ok; }
bool buildStringFromSVGPathSegList(const SVGPathSegList& list, String& result, PathParsingMode parsingMode) { result = String(); if (list.isEmpty()) return false; SVGPathStringBuilder* builder = globalSVGPathStringBuilder(); OwnPtr<SVGPathSegListSource> source = SVGPathSegListSource::create(list); SVGPathParser* parser = globalSVGPathParser(source.get(), builder); bool ok = parser->parsePathDataFromSource(parsingMode); result = builder->result(); parser->cleanup(); return ok; }
bool buildStringFromByteStream(const SVGPathByteStream* stream, String& result, PathParsingMode parsingMode) { ASSERT(stream); if (stream->isEmpty()) return true; SVGPathStringBuilder* builder = globalSVGPathStringBuilder(); SVGPathByteStreamSource source(stream); SVGPathParser* parser = globalSVGPathParser(&source, builder); bool ok = parser->parsePathDataFromSource(parsingMode); result = builder->result(); parser->cleanup(); return ok; }