From f73baa1a4ea5aa9fb1628c3192433d248a547a63 Mon Sep 17 00:00:00 2001 From: Eric Rowell Date: Wed, 8 Jan 2014 23:13:50 -0800 Subject: [PATCH] cutting down Factory by creating a addComponentsGetterSetter method which all component attrs will use --- src/Container.js | 6 +- src/Factory.js | 243 +++++++++++---------------------- src/Node.js | 18 ++- src/Shape.js | 36 ++++- src/shapes/Ellipse.js | 4 +- src/shapes/Image.js | 14 +- test/unit/shapes/Image-test.js | 1 + 7 files changed, 138 insertions(+), 184 deletions(-) diff --git a/src/Container.js b/src/Container.js index 2550202e..86687fa2 100644 --- a/src/Container.js +++ b/src/Container.js @@ -306,7 +306,7 @@ Kinetic.Container.prototype.get = Kinetic.Container.prototype.find; // add getters setters - Kinetic.Factory.addBoxGetterSetter(Kinetic.Container, 'clip'); + Kinetic.Factory.addComponentsGetterSetter(Kinetic.Container, 'clip', ['x', 'y', 'width', 'height']); /** * get/set clip * @method @@ -331,6 +331,7 @@ * }); */ + Kinetic.Factory.addGetterSetter(Kinetic.Container, 'clipX'); /** * get/set clip x * @name clipX @@ -346,6 +347,7 @@ * container.clipX(10); */ + Kinetic.Factory.addGetterSetter(Kinetic.Container, 'clipY'); /** * get/set clip y * @name clipY @@ -361,6 +363,7 @@ * container.clipY(10); */ + Kinetic.Factory.addGetterSetter(Kinetic.Container, 'clipWidth'); /** * get/set clip width * @name clipWidth @@ -376,6 +379,7 @@ * container.clipWidth(100); */ + Kinetic.Factory.addGetterSetter(Kinetic.Container, 'clipHeight'); /** * get/set clip height * @name clipHeight diff --git a/src/Factory.js b/src/Factory.js index 979fa7ac..61a78947 100644 --- a/src/Factory.js +++ b/src/Factory.js @@ -42,52 +42,93 @@ Y = 'y'; Kinetic.Factory = { - // getter setter adders addGetterSetter: function(constructor, attr, def) { this.addGetter(constructor, attr, def); this.addSetter(constructor, attr); this.addOverloadedGetterSetter(constructor, attr); }, - addPointGetterSetter: function(constructor, attr, def) { - this.addPointGetter(constructor, attr, def); - this.addPointSetter(constructor, attr); - this.addOverloadedGetterSetter(constructor, attr); + addGetter: function(constructor, attr, def) { + var that = this, + method = GET + Kinetic.Util._capitalize(attr); - // add invdividual component getters and setters - this.addGetter(constructor, attr + UPPER_X, def); - this.addGetter(constructor, attr + UPPER_Y, def); - this.addSetter(constructor, attr + UPPER_X); - this.addSetter(constructor, attr + UPPER_Y); - - this.addOverloadedGetterSetter(constructor, attr + UPPER_X); - this.addOverloadedGetterSetter(constructor, attr + UPPER_Y); + constructor.prototype[method] = function() { + var val = this.attrs[attr]; + return val === undefined ? def : val; + }; }, - addBoxGetterSetter: function(constructor, attr, def) { - this.addBoxGetter(constructor, attr, def); - this.addBoxSetter(constructor, attr); - this.addOverloadedGetterSetter(constructor, attr); + addSetter: function(constructor, attr) { + var method = SET + Kinetic.Util._capitalize(attr); - // add invdividual component getters and setters - this.addGetter(constructor, attr + UPPER_X, def); - this.addGetter(constructor, attr + UPPER_Y, def); - this.addGetter(constructor, attr + UPPER_WIDTH, def); - this.addGetter(constructor, attr + UPPER_HEIGHT, def); - - this.addSetter(constructor, attr + UPPER_X); - this.addSetter(constructor, attr + UPPER_Y); - this.addSetter(constructor, attr + UPPER_WIDTH); - this.addSetter(constructor, attr + UPPER_HEIGHT); - - this.addOverloadedGetterSetter(constructor, attr + UPPER_X); - this.addOverloadedGetterSetter(constructor, attr + UPPER_Y); - this.addOverloadedGetterSetter(constructor, attr + UPPER_WIDTH); - this.addOverloadedGetterSetter(constructor, attr + UPPER_HEIGHT); + constructor.prototype[method] = function(val) { + this._setAttr(attr, val); + return this; + }; }, - addPointsGetterSetter: function(constructor, attr) { - this.addPointsGetter(constructor, attr); - this.addPointsSetter(constructor, attr); + addComponentsGetterSetter: function(constructor, attr, components) { + var len = components.length, + capitalize = Kinetic.Util._capitalize, + getter = GET + capitalize(attr), + setter = SET + capitalize(attr), + n, component; + + // getter + constructor.prototype[getter] = function() { + var ret = {}; + + for (n=0; n