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 | #endif0)>><>><> |
57 | #endif><>><>><>><> |