| import poolFactory from './pool_factory'; |
| import pointPool from './point_pool'; |
| import ShapePath from '../shapes/ShapePath'; |
| |
| const shapePool = (function () { |
| function create() { |
| return new ShapePath(); |
| } |
| |
| function release(shapePath) { |
| var len = shapePath._length; |
| var i; |
| for (i = 0; i < len; i += 1) { |
| pointPool.release(shapePath.v[i]); |
| pointPool.release(shapePath.i[i]); |
| pointPool.release(shapePath.o[i]); |
| shapePath.v[i] = null; |
| shapePath.i[i] = null; |
| shapePath.o[i] = null; |
| } |
| shapePath._length = 0; |
| shapePath.c = false; |
| } |
| |
| function clone(shape) { |
| var cloned = factory.newElement(); |
| var i; |
| var len = shape._length === undefined ? shape.v.length : shape._length; |
| cloned.setLength(len); |
| cloned.c = shape.c; |
| |
| for (i = 0; i < len; i += 1) { |
| cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i); |
| } |
| return cloned; |
| } |
| |
| var factory = poolFactory(4, create, release); |
| factory.clone = clone; |
| |
| return factory; |
| }()); |
| |
| export default shapePool; |