public:
  enum ColorSet {
    View,
    Window,
    Button,
    Selection,
    Tooltip
  }
  enum BackgroundRole {
    Normal = 0,
    Alternate
  };
  enum ForegroundRole {
    Normal = 0,
    Inactive,
    Active,
    Link,
    Visited,
    Negative,
    Neutral,
    Positive
  }
  enum DecorationRole {
    Hover,
    Focus
  }
  enum ColorShade {
    Light,
    Midlight,
    Dark,
    Shadow
  };

  /**
   * Construct a palette from the system colors in the given color set. Shade
   * colors are initialized as in ::setShades( ::background() ).
   */
  // NOTE: from today's color role stuff
  this(ColorSet = View);

  /**
   * Construct a palette from an existing QPalette, using the QPalette colors
   * where available, otherwise using the system colors. Shade colors are
   * initialized as in ::setShades(const QPalette&).
   */
  this(const QPalette&, ColorSet = View);

  // These get various colors that belong to the palette
  // NOTE: next three from today's color role stuff
  QBrush background(BackgroundRole = Normal);
  QBrush foreground(ForegroundRole = Normal);
  QBrush decoration(DecorationRole);
  QBrush shade(ColorShade);

  /**
   * Constructs shades from the QColor. The shades are the same hue and
   * saturation as the QColor, differing only in intensity.
   *
   * @param contrastScale (optional) multiply the system contrast by this factor
   * when calculating shades.
   */
  setShades(const QColor&, qreal contrastScale = 1.0);

  /**
   * Sets the shades to those provided by the QPalette.
   */
  setShades(const QPalette&);

// kate: hl c++; indent cstyle; auto-insert-doxygen on; indent-width 2; space-indent on;
