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><>><> |