Subversion Repositories Kolibri OS

Rev

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

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