WSJT-X/WFPalette.hpp
Bill Somerville 85c4f6722b Add user defined waterfall palette.
The  new  class WFPalette  encapsulates  waterfall palettes  including
exporting and importing to disk files and interpolation for use in the
waterfall plotter.

A special  entry in the palette  list "User Defined"  is now available
along with  a button  to invoke a  colour palette designer.   The user
defined palette definition is persistent across runs as it is saved in
the application settings file.

Palettes can now have any number of colours up to 256.

The export function may be used  to save user designed palettes; to be
added  to the built  in resource  palettes that  are shipped  with the
application.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3964 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-03-31 00:03:44 +00:00

56 lines
1.3 KiB
C++

#ifndef W_F_PALETTE_HPP__
#define W_F_PALETTE_HPP__
#include <QList>
#include <QVector>
#include <QColor>
class QString;
//
// Class WFPalette
//
// Encapulates a waterfall palette description. A colour gradient
// over 256 intervals is described by a list of RGB colour triplets.
// The list of colours are use to interpolate the full 256 interval
// waterfall colour gradient.
//
// Responsibilities
//
// Construction from a string which is a path to a file containing
// colour descriptions in the form rrr;ggg;bbb on up to 256
// consecutive lines, where rrr, ggg and, bbb are integral numbers in
// the range 0<=n<256.
//
// Construction from a list of QColor instances. Up to the first 256
// list elements are used.
//
// Includes a design GUI to create or adjust a WFPalette.
//
class WFPalette
{
public:
using Colours = QList<QColor>;
WFPalette () = default;
explicit WFPalette (Colours const&);
explicit WFPalette (QString const& file_path);
WFPalette (WFPalette const&) = default;
WFPalette& operator = (WFPalette const&) = default;
Colours colours () const {return colours_;}
// interpolate a gradient over 256 steps
QVector<QColor> interpolate () const;
// returns true if colours have been modified
bool design ();
private:
Colours colours_;
};
Q_DECLARE_METATYPE (WFPalette::Colours);
#endif