Rev 7004 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7004 | Rev 7031 | ||
---|---|---|---|
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 | dword RgbToDword(); |
9 | dword RgbToDword(); |
9 | } rgb; |
10 | } rgb; |
10 | 11 | ||
11 | :void _rgb::DwordToRgb(dword _dword) |
12 | :void _rgb::DwordToRgb(dword _dword) |
12 | { |
13 | { |
13 | b = _dword & 0xFF; _dword >>= 8; |
14 | b = _dword & 0xFF; _dword >>= 8; |
14 | g = _dword & 0xFF; _dword >>= 8; |
15 | g = _dword & 0xFF; _dword >>= 8; |
15 | r = _dword & 0xFF; _dword >>= 8; |
16 | r = _dword & 0xFF; _dword >>= 8; |
16 | } |
17 | } |
- | 18 | ||
- | 19 | :void _rgb::SetRgb(dword _r, _g, _b) |
|
- | 20 | { |
|
- | 21 | r = _r; |
|
- | 22 | g = _g; |
|
- | 23 | b = _b; |
|
- | 24 | } |
|
17 | 25 | ||
18 | :dword _rgb::RgbToDword() |
26 | :dword _rgb::RgbToDword() |
19 | { |
27 | { |
20 | dword _r, _g, _b; |
28 | dword _r, _g, _b; |
21 | _r = r << 16; |
29 | _r = r << 16; |
22 | _g = g << 8; |
30 | _g = g << 8; |
23 | _b = b; |
31 | _b = b; |
24 | return _r + _g + _b; |
32 | return _r + _g + _b; |
25 | } |
33 | } |
26 | 34 | ||
27 | :dword MixColors(dword _base, _overlying, byte a) |
35 | :dword MixColors(dword _base, _overlying, byte a) |
28 | { |
36 | { |
29 | _rgb rgb1, rgb2, rgb_final; |
37 | _rgb rgb1, rgb2, rgb_final; |
30 | byte n_a; |
38 | byte n_a; |
31 | 39 | ||
32 | rgb1.DwordToRgb(_base); |
40 | rgb1.DwordToRgb(_base); |
33 | rgb2.DwordToRgb(_overlying); |
41 | rgb2.DwordToRgb(_overlying); |
34 | 42 | ||
35 | n_a = 255 - a; |
43 | n_a = 255 - a; |
36 | 44 | ||
37 | rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255); |
45 | 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); |
46 | 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); |
47 | rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255); |
40 | 48 | ||
41 | return rgb_final.RgbToDword(); |
49 | return rgb_final.RgbToDword(); |
42 | } |
50 | } |
43 | 51 | ||
44 | #endif><>><> |
52 | #endif><>><> |