From ae90152ae2889a10d44c22e1eeb5bff16cc44a19 Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Wed, 13 Jun 2012 14:00:58 -0700 Subject: Cleaning up color wheel component Minor code clean up and refactoring. --- js/components/colorwheel.reel/colorwheel.html | 14 ++-- js/components/colorwheel.reel/colorwheel.js | 116 +++++++++----------------- 2 files changed, 48 insertions(+), 82 deletions(-) diff --git a/js/components/colorwheel.reel/colorwheel.html b/js/components/colorwheel.reel/colorwheel.html index 707bd637..5af6dff8 100755 --- a/js/components/colorwheel.reel/colorwheel.html +++ b/js/components/colorwheel.reel/colorwheel.html @@ -18,7 +18,11 @@ "owner": { "prototype": "js/components/colorwheel.reel[ColorWheel]", "properties": { - "element": {"#": "colorwheel"} + "element": {"#": "colorwheel"}, + "wheel": {"#": "wheel"}, + "wheelSelect": {"#": "wselect"}, + "swatch": {"#": "swatch"}, + "swatchSelect": {"#": "sselect"} } } @@ -30,10 +34,10 @@
- - - - + + + +
diff --git a/js/components/colorwheel.reel/colorwheel.js b/js/components/colorwheel.reel/colorwheel.js index 343422e2..982bbfdc 100755 --- a/js/components/colorwheel.reel/colorwheel.js +++ b/js/components/colorwheel.reel/colorwheel.js @@ -14,19 +14,16 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // hasTemplate: { - enumerable: false, value: true }, //////////////////////////////////////////////////////////////////// //Value of wheel in HSV (360, 100, 100) _value: { - enumerable: false, value: {h: 0, s: 0, v: 0} }, //////////////////////////////////////////////////////////////////// //Value of wheel in HSV (360, 100, 100) value: { - enumerable: false, get: function() { return this._value; }, @@ -34,8 +31,8 @@ exports.ColorWheel = Montage.create(Component, { this._value = value; if (this._wheelData) { if (value && !value.wasSetByCode) { - this.wheelSelectorAngle(value.h/this.element._component.math.TAU*360); - this.drawSwatchColor(value.h/this.element._component.math.TAU*360); + this.wheelSelectorAngle(value.h/this._math.TAU*360); + this.drawSwatchColor(value.h/this._math.TAU*360); this.drawSwatchSelector(value.s*100, value.v*100); } if (!this._isMouseDown) { @@ -47,14 +44,12 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// //Stroke size of wheel _strokeWidth: { - enumerable: false, value: 2 }, //////////////////////////////////////////////////////////////////// //Size must be set in digits and interpreted as pixel strokeWidth: { - enumerable: false, - get: function() { + get: function() { return this._strokeWidth; }, set: function(value) { @@ -64,14 +59,12 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// //Stroke color of wheel _strokeColor: { - enumerable: false, value: 'rgb(255, 255, 255)' }, //////////////////////////////////////////////////////////////////// //Stroke only apply to wheel rim strokeColor: { - enumerable: false, - get: function() { + get: function() { return this._strokeColor; }, set: function(value) { @@ -81,14 +74,12 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// //Width of the rim _rimWidth: { - enumerable: false, value: 2 }, //////////////////////////////////////////////////////////////////// //Width must be set using digits interpreted as pixel rimWidth: { - enumerable: false, - get: function() { + get: function() { return this._rimWidth; }, set: function(value) { @@ -97,47 +88,32 @@ exports.ColorWheel = Montage.create(Component, { }, //////////////////////////////////////////////////////////////////// // + _math: { + value: {PI: Math.PI, TAU: Math.PI*2, RADIANS: Math.PI/180} + }, + //////////////////////////////////////////////////////////////////// + // prepareForDraw: { - enumerable: false, value: function() { - // - this.element._component = {wheel: {}, swatch: {}, wheel_select: {}, swatch_select: {}, math: {}}; - // - this.element._component.math.PI = Math.PI, - this.element._component.math.TAU = Math.PI*2, - this.element._component.math.RADIANS = Math.PI/180; + //Hidding component while it is drawn + this.element.style.opacity = 0; } }, //////////////////////////////////////////////////////////////////// // willDraw: { - enumerable: false, value: function() { // - this.element.style.opacity = 0; - // - var cnvs = this.element.getElementsByTagName('canvas'); - // - this.element._component.wheel.canvas = cnvs[0]; - this.element._component.swatch.canvas = cnvs[1]; - this.element._component.wheel_select.canvas = cnvs[3]; - this.element._component.swatch_select.canvas = cnvs[2]; - // - this.element._component.wheel.context = this.element._component.wheel.canvas.getContext("2d"); - this.element._component.swatch.context = this.element._component.swatch.canvas.getContext("2d"); - this.element._component.wheel_select.context = this.element._component.wheel_select.canvas.getContext("2d"); - this.element._component.swatch_select.context = this.element._component.swatch_select.canvas.getContext("2d"); } }, //////////////////////////////////////////////////////////////////// // draw: { - enumerable: false, value: function() { // - var slice, i, whlctx = this.element._component.wheel.context, math = this.element._component.math, - whlcvs = this.element._component.wheel.canvas, swhcvs = this.element._component.swatch.canvas, - wslcvs = this.element._component.wheel_select.canvas, swscvs = this.element._component.swatch_select.canvas; + var slice, i, whlctx = this.wheel.getContext("2d"), math = this._math, + whlcvs = this.wheel, swhcvs = this.swatch, + wslcvs = this.wheelSelect, swscvs = this.swatchSelect; //Determing radius by smallest factor of width or height if (this.element.offsetWidth > this.element.offsetHeight) { math.diameter = this.element.offsetWidth; @@ -239,39 +215,35 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // didDraw: { - enumerable: false, value: function() { // this.element.style.opacity = 1; // - this.element._component.wheel_select.canvas.style.cursor = 'pointer'; + this.wheelSelect.style.cursor = 'pointer'; // - this.element._component.wheel_select.canvas.addEventListener('mouseup', this, false); - this.element._component.wheel_select.canvas.addEventListener('mousedown', this, false); - this.element._component.wheel_select.canvas.addEventListener('mousemove', this, false); + this.wheelSelect.addEventListener('mouseup', this, false); + this.wheelSelect.addEventListener('mousedown', this, false); + this.wheelSelect.addEventListener('mousemove', this, false); } }, //////////////////////////////////////////////////////////////////// // _scanningMode: { - enumerable: false, value: null }, //////////////////////////////////////////////////////////////////// // _isMouseDown: { - enumerable: false, value: false }, //////////////////////////////////////////////////////////////////// // handleMousedown: { - enumerable: false, value: function(e) { // this._isMouseDown = true; // - if ((e.offsetY < this.element._component.math.swatchPosition || e.offsetY > this.element._component.math.swatchLength+this.element._component.math.swatchPosition) || (e.offsetX < this.element._component.math.swatchPosition || e.offsetX > this.element._component.math.swatchLength+this.element._component.math.swatchPosition)) { + if ((e.offsetY < this._math.swatchPosition || e.offsetY > this._math.swatchLength+this._math.swatchPosition) || (e.offsetX < this._math.swatchPosition || e.offsetX > this._math.swatchLength+this._math.swatchPosition)) { this._scanningMode = 'wheel'; } else { this._scanningMode = 'swatch'; @@ -281,9 +253,8 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // handleMouseup: { - enumerable: false, value: function(e) { - var math = this.element._component.math; + var math = this._math; // if ((e.offsetY < math.swatchPosition || e.offsetY > math.swatchLength+math.swatchPosition) || (e.offsetX < math.swatchPosition || e.offsetX > math.swatchLength+math.swatchPosition)) { if (this._scanningMode === 'wheel') { @@ -302,9 +273,8 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // handleMousemove: { - enumerable: false, value: function(e) { - var math = this.element._component.math; + var math = this._math; // if (this._isMouseDown) { if (this._scanningMode === 'wheel') { @@ -316,9 +286,9 @@ exports.ColorWheel = Montage.create(Component, { this._dispatchEvent('changing', false); } else { if ((e.offsetY < math.swatchPosition || e.offsetY > math.swatchLength+math.swatchPosition) || (e.offsetX < math.swatchPosition || e.offsetX > math.swatchLength+math.swatchPosition)) { - this.element._component.wheel_select.canvas.style.cursor = 'pointer'; + this.wheelSelect.style.cursor = 'pointer'; } else { - this.element._component.wheel_select.canvas.style.cursor = 'crosshair'; + this.wheelSelect.style.cursor = 'crosshair'; } } } @@ -326,13 +296,12 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // mouseSetWheelAngle: { - enumerable: false, value: function(e) { - var angle = (2 * Math.atan2(e.offsetY - (this.element._component.math.radius - Math.sqrt(Math.pow(Math.abs(e.offsetX - this.element._component.math.radius),2) + Math.pow(Math.abs(e.offsetY - this.element._component.math.radius), 2))), e.offsetX - this.element._component.math.radius))/this.element._component.math.TAU*360; + var angle = (2 * Math.atan2(e.offsetY - (this._math.radius - Math.sqrt(Math.pow(Math.abs(e.offsetX - this._math.radius),2) + Math.pow(Math.abs(e.offsetY - this._math.radius), 2))), e.offsetX - this._math.radius))/this._math.TAU*360; if (this._value) { - this.value = {h: angle*this.element._component.math.TAU/360, s: this._value.s, v: this._value.v}; + this.value = {h: angle*this._math.TAU/360, s: this._value.s, v: this._value.v}; } else { - this.value = {h: angle*this.element._component.math.TAU/360, s: 1, v: 1}; + this.value = {h: angle*this._math.TAU/360, s: 1, v: 1}; } this.wheelSelectorAngle(0); this.wheelSelectorAngle(angle); @@ -342,10 +311,9 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // mouseSetSwatch: { - enumerable: false, value: function(e) { // - var s, v, math = this.element._component.math;; + var s, v, math = this._math;; // if (e.offsetX > math.swatchLength+math.swatchPosition) { s = 100; @@ -375,28 +343,25 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // _wheelData: { - enumerable: false, value: null }, //////////////////////////////////////////////////////////////////// // _previousDegree: { - enumerable: false, value: 0 }, //////////////////////////////////////////////////////////////////// // drawSwatchSelector: { - enumerable: false, value: function (s, v) { - var context = this.element._component.swatch_select.context, strokeWidth = this.strokeWidth/2, radius = this.element._component.math.radius/28, math = this.element._component.math; + var context = this.swatchSelect.getContext("2d"), strokeWidth = this.strokeWidth/2, radius = this._math.radius/28, math = this._math; context.clearRect(0, 0, math.diameter, math.diameter); //White outline context.beginPath(); context.strokeStyle = '#FFF'; context.lineWidth = strokeWidth; context.globalAlpha = 1; - //context.arc(this.element._component.math.swatchPosition+(this.element._component.math.swatchLength*(s/100)) - radius/2, this.element._component.math.swatchPosition+(this.element._component.math.swatchLength*(1-v/100))- radius/2, radius-strokeWidth, 0, this.element._component.math.TAU, true); + //context.arc(this._math.swatchPosition+(this._math.swatchLength*(s/100)) - radius/2, this._math.swatchPosition+(this._math.swatchLength*(1-v/100))- radius/2, radius-strokeWidth, 0, this._math.TAU, true); context.arc(math.swatchPosition+(math.swatchLength*(s/100)), math.swatchPosition+(math.swatchLength*(1-v/100)), radius-strokeWidth, 0, math.TAU, true); context.closePath(); context.stroke(); @@ -415,9 +380,8 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // drawSwatchColor: { - enumerable: false, value: function (angle) { - var context = this.element._component.swatch.context, gradient, math = this.element._component.math; + var context = this.swatch.getContext("2d"), gradient, math = this._math; context.clearRect(0, 0, math.swatchLength, math.swatchLength); context.beginPath(); context.moveTo(0, 0); @@ -456,15 +420,14 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // _drawWheelSlice: { - enumerable: false, value: function (s, r, g, b) { // - var context = this.element._component.wheel.context, radius = this.element._component.math.radius; + var context = this.wheel.getContext("2d"), radius = this._math.radius; context.beginPath(); context.fillStyle = 'rgb('+r+','+g+','+b+')'; context.scale(1,1); context.translate(radius + this.strokeWidth/2, radius + this.strokeWidth/2); - context.rotate(s*this.element._component.math.RADIANS); + context.rotate(s*this._math.RADIANS); context.translate(-radius, -radius); context.moveTo(radius, radius); context.translate(radius, radius); @@ -472,7 +435,7 @@ exports.ColorWheel = Montage.create(Component, { context.translate(-radius, -radius); context.lineTo(radius, this.rimWidth); context.translate(radius, radius); - context.arc(0, 0, this.element._component.math.innerRadius, -1.53, -1.59, 1); + context.arc(0, 0, this._math.innerRadius, -1.53, -1.59, 1); context.closePath(); context.fill(); context.stroke(); @@ -483,18 +446,17 @@ exports.ColorWheel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // wheelSelectorAngle: { - enumerable: false, value: function (angle) { - angle *= this.element._component.math.RADIANS; + angle *= this._math.RADIANS; // - var context = this.element._component.wheel_select.context, radius = this.element._component.math.radius, - radiusOffsetPositive = this.element._component.math.radius+this.rimWidth/3, + var context = this.wheelSelect.getContext("2d"), radius = this._math.radius, + radiusOffsetPositive = this._math.radius+this.rimWidth/3, rimPositiveStrokeOffset = this.rimWidth + this.strokeWidth, strokeTotalWidth = this.strokeWidth*2, rimNegativeStrokeOffset = this.rimWidth - this.strokeWidth, - radiusOffsetNagative = this.element._component.math.radius-this.rimWidth/3; + radiusOffsetNagative = this._math.radius-this.rimWidth/3; // - context.clearRect(0, 0, this.element._component.wheel_select.canvas.width, this.element._component.wheel_select.canvas.height); + context.clearRect(0, 0, this.wheelSelect.width, this.wheelSelect.height); // context.beginPath(); context.fillStyle = "rgba(0, 0, 0, 0)"; -- cgit v1.2.3