void SVGTextPathElement::glTextTraverse(svgl::Context * svglContext, svgl::GLInfo* glinfo, svgl::TextInfo* textinfo) { _textinfo = textinfo; buildBezier(svglContext, glinfo, textinfo); for(dom::Node *n = getFirstChild(); n; n=n->getNextSibling()) { _currentPCDATA = 0; dom::Text * pcdata = dynamic_cast<dom::Text*>(n); if(pcdata) { _currentPCDATA = pcdata; //SVGTransformable::glTraverse(svglContext, glinfo); SVGStylable::glTraverse(svglContext, glinfo, false, true); } else { SVGTextContentElement *e = dynamic_cast<SVGTextContentElement*>(n); if(e) { //std::cerr << "text may not be at the right place since transforms are not traversed" __FL__; e->glTextTraverse(svglContext, glinfo, _textinfo); //textinfo->dx = textinfo->distanceIterator->x; //textinfo->dy = textinfo->distanceIterator->y; } } } delete _textinfo->distanceIterator; _textinfo->distanceIterator=0; }
void SVGTRefElement::glTextTraverse(svgl::Context * svglContext, svgl::GLInfo* glinfo, svgl::TextInfo* textinfo) { for(dom::Node *n = getFirstChild(); n; n=n->getNextSibling()) { dom::Text * pcdata = dynamic_cast<dom::Text*>(n); if(pcdata) { glTextTraversePCDATA(svglContext, glinfo, textinfo, pcdata ); } else { SVGTextContentElement *e = dynamic_cast<SVGTextContentElement*>(n); if(e) { e->glTextTraverse(svglContext, glinfo, textinfo); } } } }