Rev 6919 | Rev 7031 | 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 | { |
6919 | leency | 13 | b = _dword & 0xFF; _dword >>= 8; |
14 | g = _dword & 0xFF; _dword >>= 8; |
||
6020 | leency | 15 | r = _dword & 0xFF; _dword >>= 8; |
16 | } |
||
17 | |||
6271 | leency | 18 | :dword _rgb::RgbToDword() |
6020 | leency | 19 | { |
7004 | leency | 20 | dword _r, _g, _b; |
21 | _r = r << 16; |
||
6020 | leency | 22 | _g = g << 8; |
7004 | leency | 23 | _b = b; |
24 | return _r + _g + _b; |
||
6020 | leency | 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><>><> |