1 /* === S Y N F I G ========================================================= */
3 ** \brief Color Gradient Class
8 ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
10 ** This package is free software; you can redistribute it and/or
11 ** modify it under the terms of the GNU General Public License as
12 ** published by the Free Software Foundation; either version 2 of
13 ** the License, or (at your option) any later version.
15 ** This package is distributed in the hope that it will be useful,
16 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 ** General Public License for more details.
21 /* ========================================================================= */
23 /* === S T A R T =========================================================== */
25 #ifndef __SYNFIG_GRADIENT_H
26 #define __SYNFIG_GRADIENT_H
28 /* === H E A D E R S ======================================================= */
36 /* === M A C R O S ========================================================= */
38 /* === T Y P E D E F S ===================================================== */
40 /* === C L A S S E S & S T R U C T S ======================================= */
44 /*! \struct GradientCPoint
47 struct GradientCPoint : public UniqueID
52 bool operator<(const GradientCPoint &rhs)const { return pos<rhs.pos; }
53 bool operator<(const Real &rhs)const { return pos<rhs; }
56 GradientCPoint(const Real &pos, const Color &color):pos(pos),color(color) { }
57 }; // END of class GradientCPoint
61 ** \brief Color Gradient Class
63 class Gradient : public std::vector<GradientCPoint>
66 typedef GradientCPoint CPoint;
72 //! Two-Tone Color Gradient Convience Constructor
73 Gradient(const Color &c1, const Color &c2);
75 //! Three-Tone Color Gradient Convience Constructor
76 Gradient(const Color &c1, const Color &c2, const Color &c3);
78 //! Alias for sort (Implemented for consistancy)
79 void sync() { sort(); }
81 //! You should call this function after changing stuff.
84 Color operator()(const Real &x, float supersample=0)const;
86 //! Returns the iterator of the CPoint closest to \a x
87 iterator proximity(const Real &x);
89 //! Returns the const_iterator of the CPoint closest to \a x
90 const_iterator proximity(const Real &x)const;
92 //! Returns the iterator of the CPoint with UniqueID \a id
93 iterator find(const UniqueID &id);
95 //! Returns the const_iterator of the CPoint with UniqueID \a id
96 const_iterator find(const UniqueID &id)const;
97 }; // END of class Gradient
99 }; // END of namespace synfig
101 /* === E N D =============================================================== */