| /* global ProcessedElement */ |
| |
| function IShapeElement() { |
| } |
| |
| IShapeElement.prototype = { |
| addShapeToModifiers: function (data) { |
| var i; |
| var len = this.shapeModifiers.length; |
| for (i = 0; i < len; i += 1) { |
| this.shapeModifiers[i].addShape(data); |
| } |
| }, |
| isShapeInAnimatedModifiers: function (data) { |
| var i = 0; |
| var len = this.shapeModifiers.length; |
| while (i < len) { |
| if (this.shapeModifiers[i].isAnimatedWithShape(data)) { |
| return true; |
| } |
| } |
| return false; |
| }, |
| renderModifiers: function () { |
| if (!this.shapeModifiers.length) { |
| return; |
| } |
| var i; |
| var len = this.shapes.length; |
| for (i = 0; i < len; i += 1) { |
| this.shapes[i].sh.reset(); |
| } |
| |
| len = this.shapeModifiers.length; |
| var shouldBreakProcess; |
| for (i = len - 1; i >= 0; i -= 1) { |
| shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); |
| // workaround to fix cases where a repeater resets the shape so the following processes get called twice |
| // TODO: find a better solution for this |
| if (shouldBreakProcess) { |
| break; |
| } |
| } |
| }, |
| lcEnum: { |
| 1: 'butt', |
| 2: 'round', |
| 3: 'square', |
| }, |
| ljEnum: { |
| 1: 'miter', |
| 2: 'round', |
| 3: 'bevel', |
| }, |
| searchProcessedElement: function (elem) { |
| var elements = this.processedElements; |
| var i = 0; |
| var len = elements.length; |
| while (i < len) { |
| if (elements[i].elem === elem) { |
| return elements[i].pos; |
| } |
| i += 1; |
| } |
| return 0; |
| }, |
| addProcessedElement: function (elem, pos) { |
| var elements = this.processedElements; |
| var i = elements.length; |
| while (i) { |
| i -= 1; |
| if (elements[i].elem === elem) { |
| elements[i].pos = pos; |
| return; |
| } |
| } |
| elements.push(new ProcessedElement(elem, pos)); |
| }, |
| prepareFrame: function (num) { |
| this.prepareRenderableFrame(num); |
| this.prepareProperties(num, this.isInRange); |
| }, |
| }; |