33 lines
961 B
JavaScript
33 lines
961 B
JavaScript
|
var SVGParser = require('./core');
|
||
|
var Slick = require('../../lib/slick/Source/slick').Slick;
|
||
|
var SheetCascade = require('../../lib/Sheet.Cascade').SheetCascade;
|
||
|
|
||
|
var applyStyles = SVGParser.prototype.applyStyles;
|
||
|
|
||
|
SVGParser.implement({
|
||
|
|
||
|
applyStyles: function(element, target){
|
||
|
this.findCSS(element.ownerDocument).applyStyle(element, target);
|
||
|
for (var key in target)
|
||
|
if (target.hasOwnProperty(key) && target[key] == 'inherit')
|
||
|
delete target[key];
|
||
|
if (target.hasOwnProperty('fill')) target['fill_document'] = element.ownerDocument;
|
||
|
applyStyles.call(this, element, target);
|
||
|
},
|
||
|
|
||
|
findCSS: function(document){
|
||
|
if (this.cssDocument != document){
|
||
|
this.cssDocument = document;
|
||
|
var css = this.css = new SheetCascade();
|
||
|
var sheets = Slick.search(document, 'style');
|
||
|
for (var i = 0, l = sheets.length; i < l; i++){
|
||
|
css.addSheet(sheets[i]);
|
||
|
}
|
||
|
return css;
|
||
|
} else {
|
||
|
return this.css;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
});
|