Subversion Repositories Kolibri OS

Rev

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

  1. #ifndef INCLUDE_RGB_H
  2. #define INCLUDE_RGB_H
  3. #print "[include <rgb.h>]\n"
  4.  
  5. :struct _rgb
  6. {
  7.         byte b,g,r;
  8.         void DwordToRgb();
  9.         dword RgbToDword();
  10. } rgb;
  11.  
  12. :void _rgb::DwordToRgb(dword _dword)
  13. {
  14.         r = _dword & 0xFF; _dword >>= 8;
  15.         g = _dword & 0xFF; _dword >>= 8;
  16.         b = _dword & 0xFF; _dword >>= 8;
  17. }
  18.  
  19. :dword _rgb::RgbToDword()
  20. {
  21.         dword _b, _g;
  22.         _b = b << 16;
  23.         _g = g << 8;
  24.         return _b + _g + r;
  25. }
  26.  
  27. :dword MixColors(dword _base, _overlying, byte a)
  28. {
  29.         _rgb rgb1, rgb2, rgb_final;
  30.         byte n_a;
  31.  
  32.         rgb1.DwordToRgb(_base);
  33.         rgb2.DwordToRgb(_overlying);
  34.  
  35.         n_a = 255 - a;
  36.  
  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);
  40.  
  41.         return rgb_final.RgbToDword();
  42. }
  43.  
  44. #endif