home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / ui / colormap.h < prev    next >
C/C++ Source or Header  |  1995-04-08  |  4KB  |  146 lines

  1.  
  2. #ifndef _colormap_h_ /* Tue Oct 25 16:34:51 1994 */
  3. #define _colormap_h_
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. /*
  11.  *
  12.  *          Copyright (C) 1994, M. A. Sridhar
  13.  *  
  14.  *
  15.  *     This software is Copyright M. A. Sridhar, 1994. You are free
  16.  *     to copy, modify or distribute this software  as you see fit,
  17.  *     and to use  it  for  any  purpose, provided   this copyright
  18.  *     notice and the following   disclaimer are included  with all
  19.  *     copies.
  20.  *
  21.  *                        DISCLAIMER
  22.  *
  23.  *     The author makes no warranties, either expressed or implied,
  24.  *     with respect  to  this  software, its  quality, performance,
  25.  *     merchantability, or fitness for any particular purpose. This
  26.  *     software is distributed  AS IS.  The  user of this  software
  27.  *     assumes all risks  as to its quality  and performance. In no
  28.  *     event shall the author be liable for any direct, indirect or
  29.  *     consequential damages, even if the  author has been  advised
  30.  *     as to the possibility of such damages.
  31.  *
  32.  */
  33.  
  34.  
  35.  
  36. // A ColorMap is a collection of distinct colors, each identified by a
  37. // ColorMapHandle. A color may be added to the ColorMap via the Add
  38. // method, and this returns the map-specific handle associated with that
  39. // color. (If the map is full, a zero handle is returned.) A color
  40. // currently in the ColorMap may be removed via the Remove method.
  41.  
  42.  
  43. #if defined(__GNUC__)
  44. #pragma interface
  45. #endif
  46.  
  47. #include "base/defs.h"
  48. #include "ui/uidefs.h"
  49.  
  50. class CL_EXPORT UI_DisplaySurface;
  51. class CL_EXPORT UI_Color;
  52.  
  53. #if defined (__OS2__)
  54. typedef HPAL    UI_ColorMapType;        // Temporary
  55. struct UI_ColorMapEntry;                 // Temporary
  56. // typedef PALETTEENTRY UI_ColorMapEntry;
  57.  
  58. #elif defined (__MS_WINDOWS__)
  59. #include <windows.h>
  60. typedef HPALETTE    UI_ColorMapType;
  61. typedef PALETTEENTRY UI_ColorMapEntry;
  62.  
  63. #elif defined (__X_MOTIF__)
  64. typedef ulong UI_ColorMapType;
  65. typedef ulong UI_ColorMapEntry;
  66.  
  67. #endif
  68.  
  69. typedef ulong UI_ColorMapHandle;
  70.  
  71. typedef struct {
  72.     short red;
  73.     short green;
  74.     short blue;
  75. } UI_ColorMapValues;
  76.  
  77.  
  78. class UI_ColorMap {
  79.  
  80. public:
  81.     UI_ColorMap  (UI_DisplaySurface& sfc);
  82.  
  83.     ~UI_ColorMap();
  84.  
  85.     bool Load (const UI_ColorMapValues v []);
  86.     // Load entries into the colormap from a 'C' style structure.
  87.     
  88.     UI_ColorMapHandle Add (const UI_Color& c);
  89.     // Add color c to the ColorMap (if it's not already there), and return
  90.     // the handle for the added color. Return 0 if no room in the ColorMap.
  91.  
  92.     bool Remove (UI_ColorMapHandle h);
  93.     // Remove the color indicated by the handle. That slot remains empty
  94.  
  95.     UI_ColorMapHandle Match (const UI_Color& c);
  96.     // Return the handle of the color in the map that matches c as closely
  97.     // as possible.
  98.  
  99.     UI_ColorMapHandle ExactMatch  (const UI_Color& c);
  100.     // Return the handle of the color c if it is in the ColorMap. Return 0
  101.     // if not.
  102.  
  103.     UI_Color operator[] (UI_ColorMapHandle &h) const;
  104.     // Return the color corresponding to the handle.
  105.  
  106.     bool Install();
  107.     // Install the virtual colormap as the physical colormap.
  108.  
  109.     bool UseDefault();
  110.     // Use the default colormap as the colormap.
  111.  
  112.     bool Clear();
  113.     // Clear all the entries of the colormap.
  114.  
  115.     bool Replace (const UI_ColorMapHandle h, UI_Color &c);
  116.     // Replace the entry indicated by the handle, with the specified color.
  117.     
  118.     bool operator==  (const UI_ColorMap& cmap) const;
  119.  
  120.     void operator= (const UI_ColorMap& cmap);
  121.  
  122.     const char* ClassName () const { return "UI_ColorMap";};
  123.     
  124. protected:
  125.  
  126.     ushort                 _numcolors;
  127.     UI_DisplaySurface&     _dsurface;
  128.     static UI_ColorMapType _defaultcmap;
  129.     UI_ColorMapType        _cmap;
  130.     UI_ColorMapEntry*      _colors;
  131. };
  132.  
  133.  
  134. #endif /* _colormap_h_ */
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.