Subversion Repositories Kolibri OS

Rev

Rev 6050 | Rev 6176 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. struct _rgb
  3. {
  4.         byte r,g,b;
  5.         void DwordToRgb();
  6.         dword RgbToDword();
  7. } rgb;
  8.  
  9. void _rgb::DwordToRgb(dword _dword)
  10. {
  11.         r = _dword & 0xFF; _dword >>= 8;
  12.         g = _dword & 0xFF; _dword >>= 8;
  13.         b = _dword & 0xFF; _dword >>= 8;
  14. }
  15.  
  16. dword _rgb::RgbToDword()
  17. {
  18.         dword _b, _g;
  19.         _b = b << 16;
  20.         _g = g << 8;
  21.         return _b + _g + r;
  22. }
  23.  
  24. :dword MixColors(dword _base, _overlying, byte a)
  25. {
  26.         _rgb rgb1, rgb2, rgb_final;
  27.         byte n_a;
  28.  
  29.         rgb1.DwordToRgb(_base);
  30.         rgb2.DwordToRgb(_overlying);
  31.  
  32.         n_a = 255 - a;
  33.  
  34.         rgb_final.b = calc(rgb1.b*a/255) + calc(rgb2.b*n_a/255);
  35.         rgb_final.g = calc(rgb1.g*a/255) + calc(rgb2.g*n_a/255);
  36.         rgb_final.r = calc(rgb1.r*a/255) + calc(rgb2.r*n_a/255);
  37.  
  38.         return rgb_final.RgbToDword();
  39. }
  40.