mirror of
https://github.com/scratchfoundation/scratch-svg-renderer.git
synced 2024-11-15 03:35:34 -05:00
Split out SVG serialization+quirks-mode conversion
I may be going a bit overboard with the exports here.
This commit is contained in:
parent
57eb4a8274
commit
8473294384
4 changed files with 36 additions and 8 deletions
|
@ -2,7 +2,9 @@ const SVGRenderer = require('./svg-renderer');
|
|||
const BitmapAdapter = require('./bitmap-adapter');
|
||||
const inlineSvgFonts = require('./font-inliner');
|
||||
const loadSvgString = require('./load-svg-string');
|
||||
const serializeSvgToString = require('./serialize-svg-to-string');
|
||||
const SvgElement = require('./svg-element');
|
||||
const V2SVGAdapter = require('./v2-svg-adapter');
|
||||
const convertFonts = require('./font-converter');
|
||||
// /**
|
||||
// * Export for NPM & Node.js
|
||||
|
@ -13,6 +15,8 @@ module.exports = {
|
|||
convertFonts: convertFonts,
|
||||
inlineSvgFonts: inlineSvgFonts,
|
||||
loadSvgString: loadSvgString,
|
||||
serializeSvgToString: serializeSvgToString,
|
||||
SvgElement: SvgElement,
|
||||
SVGRenderer: SVGRenderer
|
||||
SVGRenderer: SVGRenderer,
|
||||
V2SVGAdapter: V2SVGAdapter
|
||||
};
|
||||
|
|
19
src/serialize-svg-to-string.js
Normal file
19
src/serialize-svg-to-string.js
Normal file
|
@ -0,0 +1,19 @@
|
|||
const inlineSvgFonts = require('./font-inliner');
|
||||
|
||||
/**
|
||||
* Serialize a given SVG DOM to a string.
|
||||
* @param {SVGSVGElement} svgTag The SVG element to serialize.
|
||||
* @param {?boolean} shouldInjectFonts True if fonts should be included in the SVG as
|
||||
* base64 data.
|
||||
* @returns {string} String representing current SVG data.
|
||||
*/
|
||||
const serializeSvgToString = (svgTag, shouldInjectFonts) => {
|
||||
const serializer = new XMLSerializer();
|
||||
let string = serializer.serializeToString(svgTag);
|
||||
if (shouldInjectFonts) {
|
||||
string = inlineSvgFonts(string);
|
||||
}
|
||||
return string;
|
||||
};
|
||||
|
||||
module.exports = serializeSvgToString;
|
|
@ -1,5 +1,5 @@
|
|||
const inlineSvgFonts = require('./font-inliner');
|
||||
const loadSvgString = require('./load-svg-string');
|
||||
const serializeSvgToString = require('./serialize-svg-to-string');
|
||||
|
||||
/**
|
||||
* Main quirks-mode SVG rendering code.
|
||||
|
@ -124,14 +124,10 @@ class SvgRenderer {
|
|||
* @param {?boolean} shouldInjectFonts True if fonts should be included in the SVG as
|
||||
* base64 data.
|
||||
* @returns {string} String representing current SVG data.
|
||||
* @deprecated Use the standalone `serializeSvgToString` export instead.
|
||||
*/
|
||||
toString (shouldInjectFonts) {
|
||||
const serializer = new XMLSerializer();
|
||||
let string = serializer.serializeToString(this._svgTag);
|
||||
if (shouldInjectFonts) {
|
||||
string = inlineSvgFonts(string);
|
||||
}
|
||||
return string;
|
||||
return serializeSvgToString(this._svgTag, shouldInjectFonts);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
9
src/v2-svg-adapter.js
Normal file
9
src/v2-svg-adapter.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
const loadSvgString = require('./load-svg-string');
|
||||
const serializeSvgToString = require('./serialize-svg-to-string');
|
||||
|
||||
/**
|
||||
* Convert a version 2 SVG (Scratch 2.0 "quirks mode") to a version 3 svg (complies with normal SVG standards).
|
||||
* @param {string} svgString the SVG string to convert from version 2 SVG.
|
||||
* @returns {string} the converted SVG string.
|
||||
*/
|
||||
module.exports = svgString => serializeSvgToString(loadSvgString(svgString, true /* fromVersion2 */));
|
Loading…
Reference in a new issue