Program Listing for File HSVInterpolation.h

Return to documentation for file (include/flamegpu/visualiser/color/HSVInterpolation.h)

#ifndef INCLUDE_FLAMEGPU_VISUALISER_COLOR_HSVINTERPOLATION_H_
#define INCLUDE_FLAMEGPU_VISUALISER_COLOR_HSVINTERPOLATION_H_

#include <string>

#include "flamegpu/visualiser/color/ColorFunction.h"

namespace flamegpu {
namespace visualiser {

class HSVInterpolation : public ColorFunction {
 public:
    static HSVInterpolation REDGREEN(const std::string &variable_name, const float& min_bound = 0.0f, const float& max_bound = 1.0f);
    static HSVInterpolation GREENRED(const std::string& variable_name, const float& min_bound = 0.0f, const float& max_bound = 1.0f);
    HSVInterpolation(const std::string& variable_name, const float& hMin, const float& hMax, const float& s = 1.0f, const float& v = 0.88f);
    HSVInterpolation &setBounds(const float& min_bound, const float& max_bound);
    HSVInterpolation& setWrapHue(const bool& _wrapHue);
    std::string getSrc(unsigned int array_len) const override;
    std::string getSamplerName() const override;
    std::string getAgentVariableName() const override;
    std::type_index getAgentVariableRequiredType() const override;

 private:
    float min_bound = 0.0f, max_bound = 1.0f;
    bool wrap_hue = false;
    const float hue_min, hue_max;
    const float saturation;
    const float val;
    const std::string variable_name;
};

}  // namespace visualiser
}  // namespace flamegpu

#endif  // INCLUDE_FLAMEGPU_VISUALISER_COLOR_HSVINTERPOLATION_H_