void SVGTextMetricsBuilder::walkTree(RenderObject* start, RenderSVGInlineText* stopAtLeaf, MeasureTextData* data) { for (RenderObject* child = start->firstChild(); child; child = child->nextSibling()) { if (child->isSVGInlineText()) { RenderSVGInlineText* text = toRenderSVGInlineText(child); if (stopAtLeaf && stopAtLeaf != text) { data->processRenderer = false; measureTextRenderer(text, data); continue; } data->processRenderer = true; measureTextRenderer(text, data); if (stopAtLeaf) return; continue; } if (!child->isSVGInline()) continue; walkTree(child, stopAtLeaf, data); } }
static void walkTree(RenderSVGText* start, RenderSVGInlineText* stopAtLeaf, MeasureTextData* data) { RenderObject* child = start->firstChild(); while (child) { if (child->isSVGInlineText()) { RenderSVGInlineText* text = toRenderSVGInlineText(child); measureTextRenderer(text, data, !stopAtLeaf || stopAtLeaf == text); if (stopAtLeaf && stopAtLeaf == text) return; } else if (child->isSVGInline()) { // Visit children of text content elements. if (RenderObject* inlineChild = toRenderSVGInline(child)->firstChild()) { child = inlineChild; continue; } } child = child->nextInPreOrderAfterChildren(start); } }