Subversion Repositories Kolibri OS

Rev

Rev 6266 | Rev 6887 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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