5#include <cgv/data/time_stamp.h>
6#include <cgv/math/fvec.h>
9#include "color_scheme.h"
47 virtual void set_domain(
cgv::vec2 domain);
59 virtual void set_clamped(
bool clamped);
71 virtual void set_reversed(
bool reverse);
84 if(unknown_color_ !=
color) {
85 unknown_color_ =
color;
94 return unknown_color_;
110 return { get_mapped_color(value), get_mapped_opacity(value) };
135 return unknown_color_;
153 virtual std::vector<cgv::rgba>
quantize(
size_t count)
const = 0;
166 virtual std::vector<float>
get_ticks(
size_t request_count)
const = 0;
172 return time_.get_modified_time();
185 bool is_unknown(
float value)
const;
196 float map_range_safe(
float value,
float in_left,
float in_right,
float out_left,
float out_right)
const;
205 bool is_clamped_ =
true;
207 bool is_reversed_ =
false;
209 cgv::rgba unknown_color_ = { 0.0f, 0.0f, 0.0f, 1.0f };
213enum class ContinuousMappingTransform {
244 void set_domain(
cgv::vec2 domain)
override;
253 void set_transform(ContinuousMappingTransform transform);
260 return mapping_transform_;
268 virtual void set_pow_exponent(
float exponent);
274 return pow_exponent_;
282 virtual void set_log_base(
float base);
295 virtual void set_diverging(
bool diverging);
301 return is_diverging_;
308 virtual void set_midpoint(
float midpoint);
314 return diverging_midpoint_;
318 float normalize_value(
float value)
const override;
321 cgv::rgb get_mapped_color(
float value)
const override;
324 std::vector<cgv::rgba> quantize(
size_t count)
const override;
327 std::vector<float> get_ticks(
size_t request_count)
const override;
343 void update_log_invariants();
348 ContinuousMappingTransform mapping_transform_ = ContinuousMappingTransform::kLinear;
350 bool is_diverging_ =
false;
352 float diverging_midpoint_ = 0.5f;
354 float pow_exponent_ = 1.0f;
356 float log_base_ = 10.0f;
359 float log_of_base_ = 1.0f;
361 float log_of_midpoint_ = 0.5f;
363 float log_of_lower_bound_ = 0.0f;
365 float log_of_upper_bound_ = 1.0f;
367 float log_value_sign_ = 1.0f;
383 set_scheme(scheme, size);
399 float normalize_value(
float value)
const override;
406 cgv::rgb get_mapped_color(
float value)
const override;
412 cgv::rgba get_indexed_color(
size_t index)
const override;
416 return colors_.size();
424 std::vector<cgv::rgba> quantize(
size_t count)
const override;
430 std::vector<float> get_ticks(
size_t request_count)
const override;
446 std::vector<cgv::rgb> colors_;
452#include <cgv/config/lib_end.h>
Keep a time stamp to store modified time of objects.
this header is dependency free
cgv::media::color< float, cgv::media::RGB > rgb
declare rgb color type with 32 bit components