Color.js 1.1 KB
Newer Older
M
Mr.doob 已提交
1 2 3 4
/**
 * @author mr.doob / http://mrdoob.com/
 */

5
THREE.Color = function ( hex ) {
M
Mr.doob 已提交
6

M
Mr.doob 已提交
7
	this.autoUpdate = true;
M
Mr.doob 已提交
8 9
	this.setHex( hex );

P
philogb 已提交
10
}
M
Mr.doob 已提交
11

P
philogb 已提交
12 13
THREE.Color.prototype = {

14
	setRGB: function ( r, g, b ) {
M
Mr.doob 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28

		this.r = r;
		this.g = g;
		this.b = b;

		if ( this.autoUpdate ) {

			this.updateHex();
			this.updateStyleString();

		}

	},

M
Mr.doob 已提交
29
	setHex: function ( hex ) {
M
Mr.doob 已提交
30

31
		this.hex = ( ~~ hex ) & 0xffffff;
M
Mr.doob 已提交
32 33 34 35 36 37 38

		if ( this.autoUpdate ) {

			this.updateRGBA();
			this.updateStyleString();

		}
M
Mr.doob 已提交
39

P
philogb 已提交
40
	},
M
Mr.doob 已提交
41

P
philogb 已提交
42
	updateHex: function () {
M
Mr.doob 已提交
43

44
		this.hex = ~~( this.r * 255 ) << 16 ^ ~~( this.g * 255 ) << 8 ^ ~~( this.b * 255 );
M
Mr.doob 已提交
45

P
philogb 已提交
46
	},
M
Mr.doob 已提交
47

P
philogb 已提交
48
	updateRGBA: function () {
M
Mr.doob 已提交
49

M
Mr.doob 已提交
50 51 52
		this.r = ( this.hex >> 16 & 255 ) / 255;
		this.g = ( this.hex >> 8 & 255 ) / 255;
		this.b = ( this.hex & 255 ) / 255;
M
Mr.doob 已提交
53

P
philogb 已提交
54
	},
M
Mr.doob 已提交
55

P
philogb 已提交
56
	updateStyleString: function () {
M
Mr.doob 已提交
57

58
		this.__styleString = 'rgb(' + ~~( this.r * 255 ) + ',' + ~~( this.g * 255 ) + ',' + ~~( this.b * 255 ) + ')';
M
Mr.doob 已提交
59

P
philogb 已提交
60
	},
M
Mr.doob 已提交
61

62 63 64 65 66 67 68
	clone: function () {

		return new THREE.Color( this.hex );

	},

	
P
philogb 已提交
69
	toString: function () {
M
Mr.doob 已提交
70

71
		return 'THREE.Color ( r: ' + this.r + ', g: ' + this.g + ', b: ' + this.b + ', hex: ' + this.hex + ' )';
M
Mr.doob 已提交
72

P
philogb 已提交
73
	}
M
Mr.doob 已提交
74

M
Mr.doob 已提交
75
};