glviewvol

view src/xfermap.h @ 7:71b479ffb9f7

curve manipulation works
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 30 Dec 2014 17:28:38 +0200
parents f22be47a3572
children 773f89037a35
line source
1 #ifndef XFERMAP_H_
2 #define XFERMAP_H_
4 class TransferFunc {
5 public:
6 virtual ~TransferFunc();
8 virtual float map(float x) const = 0;
9 virtual void map(float x, float *rgba_value) const = 0;
10 };
12 class TransferWindow : public TransferFunc {
13 private:
14 float soft_rad;
15 float low[3], high[3]; // rgb
17 public:
18 enum { HANDLE_LOW = 0, HANDLE_HIGH = 1};
20 TransferWindow();
22 // handle: 0 or HANDLE_LOW is low, 1 or HANDLE_HIGH is high
23 // if channel == -1, change all channels simultaneously
24 void set_handle(int channel, int handle, float val);
25 float get_handle(int channel, int handle) const;
27 int nearest_handle(int channel, float pos) const;
29 void set_interval(float a, float b);
30 void set_interval(float *rgba_low, float *rgba_high);
31 void set_interval_rgba(int channel, float a, float b);
33 void get_interval(float *aptr, float *bptr) const;
34 void get_interval_rgba(float *rgba_low, float *rgba_high) const;
35 void get_interval_rgba(int channel, float *aptr, float *bptr) const;
37 void set_soft_radius(float s);
38 float get_soft_radius() const;
40 float map(float x) const;
41 void map(float x, float *rgba_value) const;
42 };
44 #endif // XFERMAP_H_