home *** CD-ROM | disk | FTP | other *** search
/ Hacks & Cracks / Hacks_and_Cracks.iso / hackersguides-&-software / hdsk41.zip / SOURCE.ZIP / COLOR.HPP < prev    next >
C/C++ Source or Header  |  1992-11-11  |  4KB  |  232 lines

  1. //--------------------------------------------------------//
  2. //                                                        //
  3. //   File:    COLOR.HPP                                   //
  4. //                                                        //
  5. //   Desc:    Classes for implementation of various       //
  6. //            color models and their conversion.          //
  7. //                                                        //
  8. //--------------------------------------------------------//
  9.  
  10. #ifndef _COLOR_HPP_
  11. #define _COLOR_HPP_
  12.  
  13. struct rgb;
  14. struct cmy;
  15. struct cmyk;
  16.  
  17. //...............an RGB class
  18.  
  19. struct rgb
  20. {
  21.    unsigned char red;
  22.    unsigned char grn;
  23.    unsigned char blu;
  24.  
  25.    rgb( )
  26.    {
  27.       red = grn = blu = 0;
  28.    }
  29.    rgb( int r, int g, int b )
  30.    {
  31.       red = r;
  32.       grn = g;
  33.       blu = b;
  34.    }
  35.    rgb( rgb& x )
  36.    {
  37.       red = x.red;
  38.       grn = x.grn;
  39.       blu = x.blu;
  40.    }
  41.  
  42.    rgb( cmy& x );
  43.    rgb( cmyk& x );
  44.    unsigned char graylevel( void );
  45.  
  46.    rgb& operator = ( rgb& x )
  47.    {
  48.       red = x.red;
  49.       grn = x.grn;
  50.       blu = x.blu;
  51.       return *this;
  52.    }
  53.    rgb operator << ( int i )
  54.    {
  55.       rgb x( red<<i, grn<<i, blu<<i );
  56.       return x;
  57.    }
  58.    rgb& operator <<= ( int i )
  59.    {
  60.       red <<= i;
  61.       grn <<= i;
  62.       blu <<= i;
  63.       return *this;
  64.    }
  65.    rgb operator >> ( int i )
  66.    {
  67.       rgb x( red>>i, grn>>i, blu>>i );
  68.       return x;
  69.    }
  70.    rgb& operator >>= ( int i )
  71.    {
  72.       red >>= i;
  73.       grn >>= i;
  74.       blu >>= i;
  75.       return *this;
  76.    }
  77. };
  78.  
  79. //...............a CMY class
  80.  
  81. struct cmy
  82. {
  83.    unsigned char cyn;
  84.    unsigned char mag;
  85.    unsigned char yel;
  86.  
  87.    cmy( )
  88.    {
  89.       cyn = mag = yel = 0;
  90.    }
  91.    cmy( int c, int m, int y )
  92.    {
  93.       cyn = c;
  94.       mag = m;
  95.       yel = y;
  96.    }
  97.    cmy( cmy& x )
  98.    {
  99.       cyn = x.cyn;
  100.       mag = x.mag;
  101.       yel = x.yel;
  102.    }
  103.  
  104.    cmy( rgb& x );
  105.    cmy( cmyk& x );
  106.    unsigned char graylevel( void );
  107.  
  108.    cmy& operator = ( cmy& x )
  109.    {
  110.       cyn = x.cyn;
  111.       mag = x.mag;
  112.       yel = x.yel;
  113.       return *this;
  114.    }
  115.    cmy operator << ( int i )
  116.    {
  117.       cmy x( cyn<<i, mag<<i, yel<<i );
  118.       return x;
  119.    }
  120.    cmy& operator <<= ( int i )
  121.    {
  122.       cyn <<= i;
  123.       mag <<= i;
  124.       yel <<= i;
  125.       return *this;
  126.    }
  127.    cmy operator >> ( int i )
  128.    {
  129.       cmy x( cyn>>i, mag>>i, yel>>i );
  130.       return x;
  131.    }
  132.    cmy& operator >>= ( int i )
  133.    {
  134.       cyn >>= i;
  135.       mag >>= i;
  136.       yel >>= i;
  137.       return *this;
  138.    }
  139. };
  140.  
  141. //...............a CMYK class
  142.  
  143. struct cmyk
  144. {
  145.    unsigned char cyn;
  146.    unsigned char mag;
  147.    unsigned char yel;
  148.    unsigned char blk;
  149.  
  150.    cmyk( )
  151.    {
  152.       cyn = mag = yel = blk = 0;
  153.    }
  154.    cmyk( int c, int y, int m, int k )
  155.    {
  156.       cyn = c;
  157.       mag = m;
  158.       yel = y;
  159.       blk = k;
  160.    }
  161.    cmyk( cmyk& x )
  162.    {
  163.       cyn = x.cyn;
  164.       mag = x.mag;
  165.       yel = x.yel;
  166.       blk = x.blk;
  167.    }
  168.  
  169.    cmyk( rgb& x );
  170.    cmyk( cmy& x );
  171.    unsigned char graylevel( void );
  172.  
  173.    cmyk& operator = ( cmyk& x )
  174.    {
  175.       cyn = x.cyn;
  176.       mag = x.mag;
  177.       yel = x.yel;
  178.       blk = x.blk;
  179.       return *this;
  180.    }
  181.    cmyk operator << ( int i )
  182.    {
  183.       cmyk x( cyn<<i, mag<<i, yel<<i, blk<<i );
  184.       return x;
  185.    }
  186.    cmyk& operator <<= ( int i )
  187.    {
  188.       cyn <<= i;
  189.       mag <<= i;
  190.       yel <<= i;
  191.       blk <<= i;
  192.       return *this;
  193.    }
  194.    cmyk operator >> ( int i )
  195.    {
  196.       cmyk x( cyn>>i, mag>>i, yel>>i, blk>>i );
  197.       return x;
  198.    }
  199.    cmyk& operator >>= ( int i )
  200.    {
  201.       cyn >>= i;
  202.       mag >>= i;
  203.       yel >>= i;
  204.       blk >>= i;
  205.       return *this;
  206.    }
  207. };
  208.  
  209. //...............an RGB palette class
  210.  
  211. struct RgbPalette
  212. {
  213.    rgb *colors;
  214.    int  ncolors;
  215.  
  216.    RgbPalette( )
  217.    {
  218.       colors = 0;
  219.       ncolors = 0;
  220.    }
  221.    RgbPalette( rgb *clrs, int nclrs )
  222.    {
  223.       colors = clrs;
  224.       ncolors = nclrs;
  225.    }
  226.   ~RgbPalette( )
  227.    {
  228.    }
  229. };
  230.  
  231. #endif
  232.