#ifndef W_F_PALETTE_HPP__ #define W_F_PALETTE_HPP__ #include #include #include #include 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; 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 interpolate () const; // returns true if colours have been modified bool design (); private: Colours colours_; }; Q_DECLARE_METATYPE (WFPalette::Colours); #endif