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