Color.js 1.2 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 = {

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

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

		if ( this.autoUpdate ) {

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

		}

	},

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

32
		this.hex = ( ( hex = ~~ hex ) & 0xffffff ) == hex ? 0xff << 24 ^ hex : hex;
M
Mr.doob 已提交
33 34 35 36 37 38 39

		if ( this.autoUpdate ) {

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

		}
M
Mr.doob 已提交
40

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

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

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

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

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

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

P
philogb 已提交
56
	},
M
Mr.doob 已提交
57

P
philogb 已提交
58
	updateStyleString: function () {
M
Mr.doob 已提交
59

60
		this.__styleString = 'rgba(' + ~~( this.r * 255 ) + ',' + ~~( this.g * 255 ) + ',' + ~~( this.b * 255 ) + ',' + this.a + ')';
M
Mr.doob 已提交
61

P
philogb 已提交
62
	},
M
Mr.doob 已提交
63

P
philogb 已提交
64
	toString: function () {
M
Mr.doob 已提交
65

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

P
philogb 已提交
68
	}
M
Mr.doob 已提交
69

M
Mr.doob 已提交
70
};