home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2002 April / Game.EXE_04_2002.iso / Alawar / Color.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-02  |  1.3 KB  |  69 lines

  1. #ifndef __COLOR_H__
  2. #define __COLOR_H__
  3.  
  4. class Color // ╤Φδⁿφα  ταΓΦ±Φ∞ε≥ⁿ ε≥ ∩δα≥⌠ε≡∞√ - ∩≡εΓσ≡Φ≥ⁿ ∩≡Φ ∩σ≡σ⌡εΣσ φα Σ≡≤π≤■
  5. {
  6.     class Table
  7.     {
  8.         unsigned char data[256][256];
  9.     public:
  10.         Table();
  11.         unsigned const char * row(unsigned char alpha)const
  12.         {
  13.             return data[alpha];
  14.         }
  15.     };
  16.     static const Table alpha_table;
  17. public:
  18.     Color()
  19.     :    r(0), g(0), b(0), a(0) 
  20.     {}
  21.     Color(unsigned char r, unsigned char g, unsigned char b, unsigned char a=255)
  22.     :    r(r), g(g), b(b), a(a) 
  23.     {}
  24.  
  25.     union
  26.     {
  27.         struct
  28.         {
  29.             unsigned char b,g,r,a;
  30.         };
  31.         unsigned pack;
  32.     };
  33.  
  34.     bool operator==(const Color & v)const
  35.     {
  36.         return pack == v.pack;
  37.     }
  38.  
  39.     bool operator!=(const Color & v)const
  40.     {
  41.         return pack != v.pack;
  42.     }
  43.  
  44.     const Color & operator+= (const Color & v)
  45.     {
  46.         pack += v.pack;
  47.         return *this;
  48.     }
  49.  
  50.     void bilinear(const Color & src,unsigned char alpha)
  51.     {
  52.         const unsigned char * row_src = alpha_table.row( alpha );
  53.         const unsigned char * row = alpha_table.row( 255 - alpha );
  54.  
  55.         r = row_src[src.r] + row[r];
  56.         g = row_src[src.g] + row[g];
  57.         b = row_src[src.b] + row[b];
  58. //        a = row_src[src.a] + row[a]; ┬√ΩΦφ≤≥ε ≡αΣΦ ±Ωε≡ε±≥Φ
  59.     }
  60. };
  61.  
  62. inline Color operator+ (const Color & v1,const Color & v2)
  63. {
  64.     Color c( v1 );
  65.     c += v2;
  66.     return c;
  67. }
  68.  
  69. #endif //__COLOR_H__