From 529a87cdb8508e6a3e87b640a7ded0163937a029 Mon Sep 17 00:00:00 2001 From: DD Liu Date: Sat, 10 Apr 2021 22:28:54 -0400 Subject: [PATCH] Go back to only using svgrenderer to process vectors that we think are coming from scratch 2 --- src/import/load-costume.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/import/load-costume.js b/src/import/load-costume.js index 44e973c57..b93227792 100644 --- a/src/import/load-costume.js +++ b/src/import/load-costume.js @@ -4,22 +4,26 @@ const {loadSvgString, serializeSvgToString} = require('scratch-svg-renderer'); const loadVector_ = function (costume, runtime, rotationCenter, optVersion) { return new Promise(resolve => { - const svgString = costume.asset.decodeText(); - // scratch-svg-renderer fixes syntax that causes loading issues, - // and if optVersion is 2, fixes "quirks" associated with Scratch 2 SVGs, - const fixedSvgString = serializeSvgToString(loadSvgString(svgString, optVersion === 2/* fromVersion2 */)); + let svgString = costume.asset.decodeText(); + // SVG Renderer load fixes "quirks" associated with Scratch 2 projects + if (optVersion && optVersion === 2) { + // scratch-svg-renderer fixes syntax that causes loading issues, + // and if optVersion is 2, fixes "quirks" associated with Scratch 2 SVGs, + const fixedSvgString = serializeSvgToString(loadSvgString(svgString, true /* fromVersion2 */)); - // If the string changed, put back into storage - if (svgString !== fixedSvgString) { - const storage = runtime.storage; - costume.asset.encodeTextData(fixedSvgString, storage.DataFormat.SVG, true); - costume.assetId = costume.asset.assetId; - costume.md5 = `${costume.assetId}.${costume.dataFormat}`; + // If the string changed, put back into storage + if (svgString !== fixedSvgString) { + svgString = fixedSvgString; + const storage = runtime.storage; + costume.asset.encodeTextData(fixedSvgString, storage.DataFormat.SVG, true); + costume.assetId = costume.asset.assetId; + costume.md5 = `${costume.assetId}.${costume.dataFormat}`; + } } // createSVGSkin does the right thing if rotationCenter isn't provided, so it's okay if it's // undefined here - costume.skinId = runtime.renderer.createSVGSkin(fixedSvgString, rotationCenter); + costume.skinId = runtime.renderer.createSVGSkin(svgString, rotationCenter); costume.size = runtime.renderer.getSkinSize(costume.skinId); // Now we should have a rotationCenter even if we didn't before if (!rotationCenter) {