Subversion Repositories Kolibri OS

Rev

Rev 7422 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7422 Rev 7450
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
	void SetRgb();
9
	dword RgbToDword();
9
	dword RgbToDword();
10
} rgb;
10
} rgb;
11
 
11
 
12
:void _rgb::DwordToRgb(dword _dword)
12
:void _rgb::DwordToRgb(dword _dword)
13
{
13
{
14
	b = _dword & 0xFF; _dword >>= 8;
14
	b = _dword & 0xFF; _dword >>= 8;
15
	g = _dword & 0xFF; _dword >>= 8;
15
	g = _dword & 0xFF; _dword >>= 8;
16
	r = _dword & 0xFF; _dword >>= 8;
16
	r = _dword & 0xFF; _dword >>= 8;
17
}
17
}
18
 
18
 
19
:void _rgb::SetRgb(dword _r, _g, _b)
19
:void _rgb::SetRgb(dword _r, _g, _b)
20
{
20
{
21
	r = _r;
21
	r = _r;
22
	g = _g;
22
	g = _g;
23
	b = _b;
23
	b = _b;
24
}
24
}
25
 
25
 
26
:dword _rgb::RgbToDword()
26
:dword _rgb::RgbToDword()
27
{
27
{
-
 
28
	/*
28
	dword _r, _g, _b;
29
	dword _r, _g, _b;
29
	_r = r << 16;
30
	_r = r << 16;
30
	_g = g << 8;
31
	_g = g << 8;
31
	_b = b;
32
	_b = b;
32
	return _r + _g + _b;
33
	return _r + _g + _b;
-
 
34
	*/
-
 
35
	EAX = r << 16;
-
 
36
	EAX += g << 8;
-
 
37
	EAX += b;
33
}
38
}
34
 
39
 
35
:dword MixColors(dword _base, _overlying, dword a) 
40
:dword MixColors(dword _base, _overlying, dword a) 
36
{
41
{
37
	_rgb rgb1, rgb2, rgb_final;
42
	_rgb rgb1, rgb2, rgb_final;
38
	dword n_a;
43
	dword n_a;
39
	if (a<0) || (a>255) {
-
 
40
		debug("Wrong alpha param in MixColors()!"); 
-
 
41
		debugval("alpha", a);
-
 
42
	}
-
 
43
 
44
 
44
	rgb1.DwordToRgb(_base);
45
	rgb1.DwordToRgb(_base);
45
	rgb2.DwordToRgb(_overlying);
46
	rgb2.DwordToRgb(_overlying);
46
 
47
 
47
	n_a = 255 - a;
48
	n_a = 255 - a;
48
 
49
 
49
	rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
50
	rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
50
	rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
51
	rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
51
	rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
52
	rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
52
 
53
 
53
	return rgb_final.RgbToDword();
54
	return rgb_final.RgbToDword();
54
}
55
}
55
 
56
 
56
#endif
57
#endif