Browse Source

Color improvements

* expose ColorKeywords (as Color.NAMES) to be used by external code
* add setStyleName to set color directly by ColorKeywords name
@pauloddr 7 years ago
parent
commit
d82d469fdf
2 changed files with 35 additions and 19 deletions
  1. 18 9
      src/math/Color.js
  2. 17 10
      test/unit/src/math/Color.tests.js

+ 18 - 9
src/math/Color.js

@@ -261,20 +261,28 @@ Object.assign( Color.prototype, {
 
 		if ( style && style.length > 0 ) {
 
-			// color keywords
-			var hex = _colorKeywords[ style ];
+			return this.setStyleName( style );
 
-			if ( hex !== undefined ) {
+		}
 
-				// red
-				this.setHex( hex );
+		return this;
 
-			} else {
+	},
 
-				// unknown color
-				console.warn( 'THREE.Color: Unknown color ' + style );
+	setStyleName: function ( style ) {
 
-			}
+		// color keywords
+		var hex = _colorKeywords[ style ];
+
+		if ( hex !== undefined ) {
+
+			// red
+			this.setHex( hex );
+
+		} else {
+
+			// unknown color
+			console.warn( 'THREE.Color: Unknown color ' + style );
 
 		}
 
@@ -580,5 +588,6 @@ Object.assign( Color.prototype, {
 
 } );
 
+Color.NAMES = ColorKeywords;
 
 export { Color };

+ 17 - 10
test/unit/src/math/Color.tests.js

@@ -28,6 +28,13 @@ export default QUnit.module( 'Maths', () => {
 
 		} );
 
+		// EXPOSED CONSTANTS
+		QUnit.test( "Color.NAMES", ( assert ) => {
+
+			assert.ok( Color.NAMES.aliceblue == 0xF0F8FF, "Exposed Color.NAMES" );
+
+		} );
+
 		// PUBLIC STUFF
 		QUnit.test( "isColor", ( assert ) => {
 
@@ -139,6 +146,16 @@ export default QUnit.module( 'Maths', () => {
 
 		} );
 
+		QUnit.test( "setStyleName", ( assert ) => {
+
+			var c = new Color();
+			var res = c.setStyleName( "aliceblue" );
+
+			assert.ok( c.getHex() == 0xF0F8FF, "Hex: " + c.getHex() );
+			assert.ok( c == res, "Returns Self" );
+
+		} );
+
 		QUnit.test( "clone", ( assert ) => {
 
 			var c = new Color( 'teal' );
@@ -343,16 +360,6 @@ export default QUnit.module( 'Maths', () => {
 
 		} );
 
-		QUnit.test( "setRGB", ( assert ) => {
-
-			var c = new Color();
-			c.setRGB( 1, 0.2, 0.1 );
-			assert.ok( c.r == 1, "Red: " + c.r );
-			assert.ok( c.g == 0.2, "Green: " + c.g );
-			assert.ok( c.b == 0.1, "Blue: " + c.b );
-
-		} );
-
 		QUnit.test( "lerp", ( assert ) => {
 
 			var c = new Color();