Subversion Repositories Kolibri OS

Rev

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

Rev 6887 Rev 6919
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
	dword RgbToDword();
8
	dword RgbToDword();
9
} rgb;
9
} rgb;
10
 
10
 
11
:void _rgb::DwordToRgb(dword _dword)
11
:void _rgb::DwordToRgb(dword _dword)
12
{
12
{
13
	r = _dword & 0xFF; _dword >>= 8;
-
 
14
	g = _dword & 0xFF; _dword >>= 8;
-
 
15
	b = _dword & 0xFF; _dword >>= 8;
13
	b = _dword & 0xFF; _dword >>= 8;
-
 
14
	g = _dword & 0xFF; _dword >>= 8;
-
 
15
	r = _dword & 0xFF; _dword >>= 8;
16
}
16
}
17
 
17
 
18
:dword _rgb::RgbToDword()
18
:dword _rgb::RgbToDword()
19
{
19
{
20
	dword _b, _g;
20
	dword _b, _g;
21
	_b = b << 16;
21
	_b = b << 16;
22
	_g = g << 8;
22
	_g = g << 8;
23
	return _b + _g + r;
23
	return _b + _g + r;
24
}
24
}
25
 
25
 
26
:dword MixColors(dword _base, _overlying, byte a) 
26
:dword MixColors(dword _base, _overlying, byte a) 
27
{
27
{
28
	_rgb rgb1, rgb2, rgb_final;
28
	_rgb rgb1, rgb2, rgb_final;
29
	byte n_a;
29
	byte n_a;
30
 
30
 
31
	rgb1.DwordToRgb(_base);
31
	rgb1.DwordToRgb(_base);
32
	rgb2.DwordToRgb(_overlying);
32
	rgb2.DwordToRgb(_overlying);
33
 
33
 
34
	n_a = 255 - a;
34
	n_a = 255 - a;
35
 
35
 
36
	rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
36
	rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
37
	rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
37
	rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
38
	rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
38
	rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
39
 
39
 
40
	return rgb_final.RgbToDword();
40
	return rgb_final.RgbToDword();
41
}
41
}
42
 
42
 
43
#endif
43
#endif