blob: 997c5e22e4f784f24d132a11fc682fc9bf4bb052 [file] [log] [blame]
function SVGEffects(elem) {
var i,
len = elem.data.ef ? elem.data.ef.length : 0;
var filId = createElementID();
var fil = filtersFactory.createFilter(filId);
var count = 0;
this.filters = [];
var filterManager;
for (i = 0; i < len; i += 1) {
filterManager = null;
if (elem.data.ef[i].ty === 20) {
count += 1;
filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);
} else if (elem.data.ef[i].ty === 21) {
count += 1;
filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);
} else if (elem.data.ef[i].ty === 22) {
filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);
} else if (elem.data.ef[i].ty === 23) {
count += 1;
filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);
} else if (elem.data.ef[i].ty === 24) {
count += 1;
filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);
} else if (elem.data.ef[i].ty === 25) {
count += 1;
filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);
} else if (elem.data.ef[i].ty === 28) {
// count += 1;
filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);
} else if (elem.data.ef[i].ty === 29) {
count += 1;
filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);
}
if (filterManager) {
this.filters.push(filterManager);
}
}
if (count) {
elem.globalData.defs.appendChild(fil);
elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');
}
if (this.filters.length) {
elem.addRenderableComponent(this);
}
}
SVGEffects.prototype.renderFrame = function (_isFirstFrame) {
var i,
len = this.filters.length;
for (i = 0; i < len; i += 1) {
this.filters[i].renderFrame(_isFirstFrame);
}
};