void SkSVGImage::translate(SkSVGParser& parser, bool defState) { parser._startElement("image"); INHERITED::translate(parser, defState); SVG_ADD_ATTRIBUTE(x); SVG_ADD_ATTRIBUTE(y); // SVG_ADD_ATTRIBUTE(width); // SVG_ADD_ATTRIBUTE(height); translateImage(parser); parser._endElement(); }
void SkSVGPolygon::translate(SkSVGParser& parser, bool defState) { parser._startElement("polygon"); SkSVGElement::translate(parser, defState); SVG_ADD_ATTRIBUTE(points); if (f_fillRule.size() > 0) parser._addAttribute("fillType", f_fillRule.equals("evenodd") ? "evenOdd" : "winding"); parser._endElement(); }
void SkSVGPath::translate(SkSVGParser& parser, bool defState) { parser._startElement("path"); INHERITED::translate(parser, defState); bool hasMultiplePaths = false; const char* firstZ = strchr(f_d.c_str(), 'z'); if (firstZ != nullptr) { firstZ++; // skip over 'z' while (*firstZ == ' ') firstZ++; hasMultiplePaths = *firstZ != '\0'; } if (hasMultiplePaths) { SkString& fillRule = parser.getPaintLast(SkSVGPaint::kFillRule); if (fillRule.size() > 0) parser._addAttribute("fillType", fillRule.equals("evenodd") ? "evenOdd" : "winding"); } SVG_ADD_ATTRIBUTE(d); parser._endElement(); }
void SkSVGElement::translate(SkSVGParser& parser, bool) { if (f_id.size() > 0) SVG_ADD_ATTRIBUTE(id); }