nuclear@6: #ifndef XFERMAP_H_ nuclear@6: #define XFERMAP_H_ nuclear@6: nuclear@6: class TransferFunc { nuclear@6: public: nuclear@6: virtual ~TransferFunc(); nuclear@6: nuclear@6: virtual float map(float x) const = 0; nuclear@6: virtual void map(float x, float *rgba_value) const = 0; nuclear@6: }; nuclear@6: nuclear@6: class TransferWindow : public TransferFunc { nuclear@6: private: nuclear@6: float soft_rad; nuclear@6: float low[4], high[4]; // rgb nuclear@6: nuclear@6: public: nuclear@6: TransferWindow(); nuclear@6: nuclear@6: void set_interval(float a, float b); nuclear@6: void set_interval(float *rgba_low, float *rgba_high); nuclear@6: void set_interval_rgba(int channel, float a, float b); nuclear@6: nuclear@6: void get_interval(float *aptr, float *bptr) const; nuclear@6: void get_interval_rgba(float *rgba_low, float *rgba_high) const; nuclear@6: void get_interval_rgba(int channel, float *aptr, float *bptr) const; nuclear@6: nuclear@6: void set_soft_radius(float s); nuclear@6: float get_soft_radius() const; nuclear@6: nuclear@6: float map(float x) const; nuclear@6: void map(float x, float *rgba_value) const; nuclear@6: }; nuclear@6: nuclear@6: #endif // XFERMAP_H_