feat: 第一次上传代码
This commit is contained in:
83
node_modules/lottie-web/player/js/elements/svgElements/effects/SVGDropShadowEffect.js
generated
vendored
Normal file
83
node_modules/lottie-web/player/js/elements/svgElements/effects/SVGDropShadowEffect.js
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
import {
|
||||
degToRads,
|
||||
rgbToHex,
|
||||
} from '../../../utils/common';
|
||||
import createNS from '../../../utils/helpers/svg_elements';
|
||||
import SVGComposableEffect from './SVGComposableEffect';
|
||||
import {
|
||||
extendPrototype,
|
||||
} from '../../../utils/functionExtensions';
|
||||
|
||||
function SVGDropShadowEffect(filter, filterManager, elem, id, source) {
|
||||
var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;
|
||||
var filterSize = filterManager.data.fs || globalFilterSize;
|
||||
filter.setAttribute('x', filterSize.x || globalFilterSize.x);
|
||||
filter.setAttribute('y', filterSize.y || globalFilterSize.y);
|
||||
filter.setAttribute('width', filterSize.width || globalFilterSize.width);
|
||||
filter.setAttribute('height', filterSize.height || globalFilterSize.height);
|
||||
this.filterManager = filterManager;
|
||||
|
||||
var feGaussianBlur = createNS('feGaussianBlur');
|
||||
feGaussianBlur.setAttribute('in', 'SourceAlpha');
|
||||
feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');
|
||||
feGaussianBlur.setAttribute('stdDeviation', '0');
|
||||
this.feGaussianBlur = feGaussianBlur;
|
||||
filter.appendChild(feGaussianBlur);
|
||||
|
||||
var feOffset = createNS('feOffset');
|
||||
feOffset.setAttribute('dx', '25');
|
||||
feOffset.setAttribute('dy', '0');
|
||||
feOffset.setAttribute('in', id + '_drop_shadow_1');
|
||||
feOffset.setAttribute('result', id + '_drop_shadow_2');
|
||||
this.feOffset = feOffset;
|
||||
filter.appendChild(feOffset);
|
||||
var feFlood = createNS('feFlood');
|
||||
feFlood.setAttribute('flood-color', '#00ff00');
|
||||
feFlood.setAttribute('flood-opacity', '1');
|
||||
feFlood.setAttribute('result', id + '_drop_shadow_3');
|
||||
this.feFlood = feFlood;
|
||||
filter.appendChild(feFlood);
|
||||
|
||||
var feComposite = createNS('feComposite');
|
||||
feComposite.setAttribute('in', id + '_drop_shadow_3');
|
||||
feComposite.setAttribute('in2', id + '_drop_shadow_2');
|
||||
feComposite.setAttribute('operator', 'in');
|
||||
feComposite.setAttribute('result', id + '_drop_shadow_4');
|
||||
filter.appendChild(feComposite);
|
||||
|
||||
var feMerge = this.createMergeNode(
|
||||
id,
|
||||
[
|
||||
id + '_drop_shadow_4',
|
||||
source,
|
||||
]
|
||||
);
|
||||
filter.appendChild(feMerge);
|
||||
//
|
||||
}
|
||||
extendPrototype([SVGComposableEffect], SVGDropShadowEffect);
|
||||
|
||||
SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {
|
||||
if (forceRender || this.filterManager._mdf) {
|
||||
if (forceRender || this.filterManager.effectElements[4].p._mdf) {
|
||||
this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);
|
||||
}
|
||||
if (forceRender || this.filterManager.effectElements[0].p._mdf) {
|
||||
var col = this.filterManager.effectElements[0].p.v;
|
||||
this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));
|
||||
}
|
||||
if (forceRender || this.filterManager.effectElements[1].p._mdf) {
|
||||
this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);
|
||||
}
|
||||
if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {
|
||||
var distance = this.filterManager.effectElements[3].p.v;
|
||||
var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;
|
||||
var x = distance * Math.cos(angle);
|
||||
var y = distance * Math.sin(angle);
|
||||
this.feOffset.setAttribute('dx', x);
|
||||
this.feOffset.setAttribute('dy', y);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export default SVGDropShadowEffect;
|
||||
Reference in New Issue
Block a user