void QgsSvgCache::replaceParamsAndCacheSvg( QgsSvgCacheEntry *entry ) { if ( !entry ) { return; } QDomDocument svgDoc; if ( !svgDoc.setContent( getImageData( entry->path ) ) ) { return; } //replace fill color, stroke color, stroke with in all nodes QDomElement docElem = svgDoc.documentElement(); QSizeF viewboxSize; double sizeScaleFactor = calcSizeScaleFactor( entry, docElem, viewboxSize ); entry->viewboxSize = viewboxSize; replaceElemParams( docElem, entry->fill, entry->stroke, entry->strokeWidth * sizeScaleFactor ); entry->svgContent = svgDoc.toByteArray( 0 ); // toByteArray screws up tspans inside text by adding new lines before and after each span... this should help, at the // risk of potentially breaking some svgs where the newline is desired entry->svgContent.replace( "\n<tspan", "<tspan" ); entry->svgContent.replace( "</tspan>\n", "</tspan>" ); mTotalSize += entry->svgContent.size(); }
void QgsSvgCache::replaceParamsAndCacheSvg( QgsSvgCacheEntry* entry ) { if ( !entry ) { return; } QDomDocument svgDoc; if ( !svgDoc.setContent( getImageData( entry->file ) ) ) { return; } //replace fill color, outline color, outline with in all nodes QDomElement docElem = svgDoc.documentElement(); QSizeF viewboxSize; double sizeScaleFactor = calcSizeScaleFactor( entry, docElem, viewboxSize ); entry->viewboxSize = viewboxSize; replaceElemParams( docElem, entry->fill, entry->outline, entry->outlineWidth * sizeScaleFactor ); entry->svgContent = svgDoc.toByteArray(); mTotalSize += entry->svgContent.size(); }