Subversion Repositories Kolibri OS

Rev

Rev 7004 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7004 Rev 7031
1
#ifndef INCLUDE_RGB_H
1
#ifndef INCLUDE_RGB_H
2
#define INCLUDE_RGB_H
2
#define INCLUDE_RGB_H
3
 
3
 
4
:struct _rgb
4
:struct _rgb
5
{
5
{
6
	byte b,g,r;
6
	byte b,g,r;
7
	void DwordToRgb();
7
	void DwordToRgb();
-
 
8
	void SetRgb();
8
	dword RgbToDword();
9
	dword RgbToDword();
9
} rgb;
10
} rgb;
10
 
11
 
11
:void _rgb::DwordToRgb(dword _dword)
12
:void _rgb::DwordToRgb(dword _dword)
12
{
13
{
13
	b = _dword & 0xFF; _dword >>= 8;
14
	b = _dword & 0xFF; _dword >>= 8;
14
	g = _dword & 0xFF; _dword >>= 8;
15
	g = _dword & 0xFF; _dword >>= 8;
15
	r = _dword & 0xFF; _dword >>= 8;
16
	r = _dword & 0xFF; _dword >>= 8;
16
}
17
}
-
 
18
 
-
 
19
:void _rgb::SetRgb(dword _r, _g, _b)
-
 
20
{
-
 
21
	r = _r;
-
 
22
	g = _g;
-
 
23
	b = _b;
-
 
24
}
17
 
25
 
18
:dword _rgb::RgbToDword()
26
:dword _rgb::RgbToDword()
19
{
27
{
20
	dword _r, _g, _b;
28
	dword _r, _g, _b;
21
	_r = r << 16;
29
	_r = r << 16;
22
	_g = g << 8;
30
	_g = g << 8;
23
	_b = b;
31
	_b = b;
24
	return _r + _g + _b;
32
	return _r + _g + _b;
25
}
33
}
26
 
34
 
27
:dword MixColors(dword _base, _overlying, byte a) 
35
:dword MixColors(dword _base, _overlying, byte a) 
28
{
36
{
29
	_rgb rgb1, rgb2, rgb_final;
37
	_rgb rgb1, rgb2, rgb_final;
30
	byte n_a;
38
	byte n_a;
31
 
39
 
32
	rgb1.DwordToRgb(_base);
40
	rgb1.DwordToRgb(_base);
33
	rgb2.DwordToRgb(_overlying);
41
	rgb2.DwordToRgb(_overlying);
34
 
42
 
35
	n_a = 255 - a;
43
	n_a = 255 - a;
36
 
44
 
37
	rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
45
	rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
38
	rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
46
	rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
39
	rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
47
	rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
40
 
48
 
41
	return rgb_final.RgbToDword();
49
	return rgb_final.RgbToDword();
42
}
50
}
43
 
51
 
44
#endif
52
#endif