57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef W_F_PALETTE_HPP__
 | |
| #define W_F_PALETTE_HPP__
 | |
| 
 | |
| #include <QMetaType>
 | |
| #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
 | 
