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

7
	/*
8 9 10
	this.r; this.g; this.b; this.a;
	this.hex;
	this.__styleString = 'rgba(0, 0, 0, 1)';
M
Mr.doob 已提交
11
	*/
P
philogb 已提交
12 13 14 15
  
  this.setHex( hex );
  
}
M
Mr.doob 已提交
16

P
philogb 已提交
17 18 19
THREE.Color.prototype = {

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

21
		this.hex = hex;
M
Mr.doob 已提交
22 23
		this.updateRGBA();
		this.updateStyleString();
M
Mr.doob 已提交
24

P
philogb 已提交
25
	},
M
Mr.doob 已提交
26

P
philogb 已提交
27
	setRGBA: function ( r, g, b, a ) {
M
Mr.doob 已提交
28

29 30 31 32
		this.r = r;
		this.g = g;
		this.b = b;
		this.a = a;
M
Mr.doob 已提交
33

M
Mr.doob 已提交
34 35
		this.updateHex();
		this.updateStyleString();
M
Mr.doob 已提交
36

P
philogb 已提交
37
	},
M
Mr.doob 已提交
38

P
philogb 已提交
39
	updateHex: function () {
M
Mr.doob 已提交
40

41
		this.hex = Math.floor( this.a * 255 ) << 24 | Math.floor( this.r * 255 ) << 16 | Math.floor( this.g * 255 ) << 8 | Math.floor( this.b * 255 );
M
Mr.doob 已提交
42

P
philogb 已提交
43
	},
M
Mr.doob 已提交
44

P
philogb 已提交
45
	updateRGBA: function () {
M
Mr.doob 已提交
46

M
Mr.doob 已提交
47 48 49 50
		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 已提交
51

P
philogb 已提交
52
	},
M
Mr.doob 已提交
53

P
philogb 已提交
54
	updateStyleString: function () {
M
Mr.doob 已提交
55

56
		this.__styleString = 'rgba(' + Math.floor( this.r * 255 ) + ',' + Math.floor( this.g * 255 ) + ',' + Math.floor( this.b * 255 ) + ',' + this.a + ')';
M
Mr.doob 已提交
57

P
philogb 已提交
58
	},
M
Mr.doob 已提交
59

P
philogb 已提交
60
	toString: function () {
M
Mr.doob 已提交
61

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

P
philogb 已提交
64
	}
M
Mr.doob 已提交
65

M
Mr.doob 已提交
66
};