File: Color_ramp.h

package info (click to toggle)
cgal 6.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 144,952 kB
  • sloc: cpp: 811,597; ansic: 208,576; sh: 493; python: 411; makefile: 286; javascript: 174
file content (98 lines) | stat: -rw-r--r-- 2,001 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#ifndef _COLOR_RAMP_H
#define _COLOR_RAMP_H

#include <QtCore/qglobal.h>
#ifdef scene_color_ramp_EXPORTS
#  define SCENE_COLOR_RAMP_EXPORT Q_DECL_EXPORT
#else
#  define SCENE_COLOR_RAMP_EXPORT Q_DECL_IMPORT
#endif

#include <list>

class SCENE_COLOR_RAMP_EXPORT Color_component
{
  typedef std::list<std::pair<double,double> > Values;

public:
  Color_component();
  Color_component(const double c0, const double c1);
  ~Color_component() {}

  double interpolate(const double v) const;
  void add(const double v, double color);
  void rebuild(const double c0, const double c1);
  void print() const;

private:
  inline Values::const_iterator next_it(const double v) const;
  inline Values::iterator next_it(const double v);

private:
  Values values_;
};


class SCENE_COLOR_RAMP_EXPORT Color_ramp
{
public :
        Color_ramp();
        Color_ramp(const double r0, const double r1, const double g0, const double g1,
                   const double b0, const double b1);

public :
  inline double r(double v) const;
  inline double g(double v) const;
  inline double b(double v) const;

        void build_red();
        void build_blue();
        void build_thermal();
        void build_rainbow();

  void print() const;

private :
  Color_component r_;
  Color_component g_;
  Color_component b_;
};


inline
Color_component::Values::const_iterator
Color_component::
next_it(const double v) const
{
  Values::const_iterator next = values_.begin();
  while ( next != values_.end() && v >= next->first ) { ++next; }
  return next;
}

inline
Color_component::Values::iterator
Color_component::
next_it(const double v)
{
  Values::iterator next = values_.begin();
  while ( next != values_.end() && v >= next->first ) { ++next; }
  return next;
}

inline
double
Color_ramp::r(double v) const
{ return r_.interpolate(v); }

inline
double
Color_ramp::g(double v) const
{ return g_.interpolate(v);  }

inline
double
Color_ramp::b(double v) const
{ return b_.interpolate(v);  }


#endif // _COLOR_RAMP_H