mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-03 19:45:44 -05:00
Fix:SvgImport apply attributes to item #1416
This commit is contained in:
parent
53897d7498
commit
cce5b24e9a
1 changed files with 18 additions and 20 deletions
|
@ -496,7 +496,7 @@ new function() {
|
||||||
// First see if the given attribute is defined.
|
// First see if the given attribute is defined.
|
||||||
var attr = node.attributes[name],
|
var attr = node.attributes[name],
|
||||||
value = attr && attr.value;
|
value = attr && attr.value;
|
||||||
if (!value) {
|
if (!value && node.style) {
|
||||||
// Fallback to using styles. See if there is a style, either set
|
// Fallback to using styles. See if there is a style, either set
|
||||||
// directly on the object or applied to it through CSS rules.
|
// directly on the object or applied to it through CSS rules.
|
||||||
// We also need to filter out inheritance from their parents.
|
// We also need to filter out inheritance from their parents.
|
||||||
|
@ -520,25 +520,23 @@ new function() {
|
||||||
* @param {Item} item the item to apply the style and attributes to
|
* @param {Item} item the item to apply the style and attributes to
|
||||||
*/
|
*/
|
||||||
function applyAttributes(item, node, isRoot) {
|
function applyAttributes(item, node, isRoot) {
|
||||||
if (node.style) {
|
// SVG attributes can be set both as styles and direct node
|
||||||
// SVG attributes can be set both as styles and direct node
|
// attributes, so we need to handle both.
|
||||||
// attributes, so we need to handle both.
|
var parent = node.parentNode,
|
||||||
var parent = node.parentNode,
|
styles = {
|
||||||
styles = {
|
node: DomElement.getStyles(node) || {},
|
||||||
node: DomElement.getStyles(node) || {},
|
// Do not check for inheritance if this is root, to make the
|
||||||
// Do not check for inheritance if this is root, to make the
|
// default SVG settings stick. Also detect defs parents, of
|
||||||
// default SVG settings stick. Also detect defs parents, of
|
// which children need to explicitly inherit their styles.
|
||||||
// which children need to explicitly inherit their styles.
|
parent: !isRoot && !/^defs$/i.test(parent.tagName)
|
||||||
parent: !isRoot && !/^defs$/i.test(parent.tagName)
|
&& DomElement.getStyles(parent) || {}
|
||||||
&& DomElement.getStyles(parent) || {}
|
};
|
||||||
};
|
Base.each(attributes, function(apply, name) {
|
||||||
Base.each(attributes, function(apply, name) {
|
var value = getAttribute(node, name, styles);
|
||||||
var value = getAttribute(node, name, styles);
|
// 'clip-path' attribute returns a new item, support it here:
|
||||||
// 'clip-path' attribute returns a new item, support it here:
|
item = value !== undefined
|
||||||
item = value !== undefined
|
&& apply(item, value, name, node, styles) || item;
|
||||||
&& apply(item, value, name, node, styles) || item;
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue