123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import {
- extendPrototype,
- } from '../functionExtensions';
- import DynamicPropertyContainer from '../helpers/dynamicProperties';
- import {
- createSizedArray,
- createTypedArray,
- } from '../helpers/arrays';
- import PropertyFactory from '../PropertyFactory';
- function DashProperty(elem, data, renderer, container) {
- this.elem = elem;
- this.frameId = -1;
- this.dataProps = createSizedArray(data.length);
- this.renderer = renderer;
- this.k = false;
- this.dashStr = '';
- this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);
- this.dashoffset = createTypedArray('float32', 1);
- this.initDynamicPropertyContainer(container);
- var i;
- var len = data.length || 0;
- var prop;
- for (i = 0; i < len; i += 1) {
- prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);
- this.k = prop.k || this.k;
- this.dataProps[i] = { n: data[i].n, p: prop };
- }
- if (!this.k) {
- this.getValue(true);
- }
- this._isAnimated = this.k;
- }
- DashProperty.prototype.getValue = function (forceRender) {
- if (this.elem.globalData.frameId === this.frameId && !forceRender) {
- return;
- }
- this.frameId = this.elem.globalData.frameId;
- this.iterateDynamicProperties();
- this._mdf = this._mdf || forceRender;
- if (this._mdf) {
- var i = 0;
- var len = this.dataProps.length;
- if (this.renderer === 'svg') {
- this.dashStr = '';
- }
- for (i = 0; i < len; i += 1) {
- if (this.dataProps[i].n !== 'o') {
- if (this.renderer === 'svg') {
- this.dashStr += ' ' + this.dataProps[i].p.v;
- } else {
- this.dashArray[i] = this.dataProps[i].p.v;
- }
- } else {
- this.dashoffset[0] = this.dataProps[i].p.v;
- }
- }
- }
- };
- extendPrototype([DynamicPropertyContainer], DashProperty);
- export default DashProperty;
|