Rev 6266 | Rev 6887 | 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 |
||
3 | #print "[include |
||
6020 | leency | 4 | |
6271 | leency | 5 | :struct _rgb |
6020 | leency | 6 | { |
6266 | leency | 7 | byte b,g,r; |
6020 | leency | 8 | void DwordToRgb(); |
9 | dword RgbToDword(); |
||
6052 | leency | 10 | } rgb; |
6020 | leency | 11 | |
6271 | leency | 12 | :void _rgb::DwordToRgb(dword _dword) |
6020 | leency | 13 | { |
14 | r = _dword & 0xFF; _dword >>= 8; |
||
15 | g = _dword & 0xFF; _dword >>= 8; |
||
16 | b = _dword & 0xFF; _dword >>= 8; |
||
17 | } |
||
18 | |||
6271 | leency | 19 | :dword _rgb::RgbToDword() |
6020 | leency | 20 | { |
21 | dword _b, _g; |
||
22 | _b = b << 16; |
||
23 | _g = g << 8; |
||
24 | return _b + _g + r; |
||
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><>><> |