glviewvol

annotate 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
rev   line source
nuclear@6 1 #ifndef XFERMAP_H_
nuclear@6 2 #define XFERMAP_H_
nuclear@6 3
nuclear@6 4 class TransferFunc {
nuclear@6 5 public:
nuclear@6 6 virtual ~TransferFunc();
nuclear@6 7
nuclear@6 8 virtual float map(float x) const = 0;
nuclear@6 9 virtual void map(float x, float *rgba_value) const = 0;
nuclear@6 10 };
nuclear@6 11
nuclear@6 12 class TransferWindow : public TransferFunc {
nuclear@6 13 private:
nuclear@6 14 float soft_rad;
nuclear@7 15 float low[3], high[3]; // rgb
nuclear@6 16
nuclear@6 17 public:
nuclear@7 18 enum { HANDLE_LOW = 0, HANDLE_HIGH = 1};
nuclear@7 19
nuclear@6 20 TransferWindow();
nuclear@6 21
nuclear@7 22 // handle: 0 or HANDLE_LOW is low, 1 or HANDLE_HIGH is high
nuclear@7 23 // if channel == -1, change all channels simultaneously
nuclear@7 24 void set_handle(int channel, int handle, float val);
nuclear@7 25 float get_handle(int channel, int handle) const;
nuclear@7 26
nuclear@7 27 int nearest_handle(int channel, float pos) const;
nuclear@7 28
nuclear@6 29 void set_interval(float a, float b);
nuclear@6 30 void set_interval(float *rgba_low, float *rgba_high);
nuclear@6 31 void set_interval_rgba(int channel, float a, float b);
nuclear@6 32
nuclear@6 33 void get_interval(float *aptr, float *bptr) const;
nuclear@6 34 void get_interval_rgba(float *rgba_low, float *rgba_high) const;
nuclear@6 35 void get_interval_rgba(int channel, float *aptr, float *bptr) const;
nuclear@6 36
nuclear@6 37 void set_soft_radius(float s);
nuclear@6 38 float get_soft_radius() const;
nuclear@6 39
nuclear@6 40 float map(float x) const;
nuclear@6 41 void map(float x, float *rgba_value) const;
nuclear@6 42 };
nuclear@6 43
nuclear@6 44 #endif // XFERMAP_H_