first commit
This commit is contained in:
70
node_modules/lottie-web/player/js/elements/svgElements/SVGEffects.js
generated
vendored
Normal file
70
node_modules/lottie-web/player/js/elements/svgElements/SVGEffects.js
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
import { getLocationHref } from '../../main';
|
||||
import {
|
||||
createElementID,
|
||||
} from '../../utils/common';
|
||||
import filtersFactory from '../../utils/filters';
|
||||
|
||||
var registeredEffects = {};
|
||||
var idPrefix = 'filter_result_';
|
||||
|
||||
function SVGEffects(elem) {
|
||||
var i;
|
||||
var source = 'SourceGraphic';
|
||||
var len = elem.data.ef ? elem.data.ef.length : 0;
|
||||
var filId = createElementID();
|
||||
var fil = filtersFactory.createFilter(filId, true);
|
||||
var count = 0;
|
||||
this.filters = [];
|
||||
var filterManager;
|
||||
for (i = 0; i < len; i += 1) {
|
||||
filterManager = null;
|
||||
var type = elem.data.ef[i].ty;
|
||||
if (registeredEffects[type]) {
|
||||
var Effect = registeredEffects[type].effect;
|
||||
filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);
|
||||
source = idPrefix + count;
|
||||
if (registeredEffects[type].countsAsEffect) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
if (filterManager) {
|
||||
this.filters.push(filterManager);
|
||||
}
|
||||
}
|
||||
if (count) {
|
||||
elem.globalData.defs.appendChild(fil);
|
||||
elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');
|
||||
}
|
||||
if (this.filters.length) {
|
||||
elem.addRenderableComponent(this);
|
||||
}
|
||||
}
|
||||
|
||||
SVGEffects.prototype.renderFrame = function (_isFirstFrame) {
|
||||
var i;
|
||||
var len = this.filters.length;
|
||||
for (i = 0; i < len; i += 1) {
|
||||
this.filters[i].renderFrame(_isFirstFrame);
|
||||
}
|
||||
};
|
||||
|
||||
SVGEffects.prototype.getEffects = function (type) {
|
||||
var i;
|
||||
var len = this.filters.length;
|
||||
var effects = [];
|
||||
for (i = 0; i < len; i += 1) {
|
||||
if (this.filters[i].type === type) {
|
||||
effects.push(this.filters[i]);
|
||||
}
|
||||
}
|
||||
return effects;
|
||||
};
|
||||
|
||||
export function registerEffect(id, effect, countsAsEffect) {
|
||||
registeredEffects[id] = {
|
||||
effect,
|
||||
countsAsEffect,
|
||||
};
|
||||
}
|
||||
|
||||
export default SVGEffects;
|
Reference in New Issue
Block a user