Class to hold one dimension texture with value to UV mapping. More...
#include <MRPalette.h>
Classes | |
struct | Histogram |
struct | Label |
struct | Parameters |
Public Member Functions | |
MRVIEWER_API | Palette (const std::vector< Color > &colors) |
MRVIEWER_API void | setBaseColors (const std::vector< Color > &colors) |
Set base palette colors colors.size() should be more or equal 2 for discrete palette using vector of colors calculated by mixing the base colors i.e. base {blue, red} -> discrete 3 {blue, 0.5*blue + 0.5*red, red}. | |
MRVIEWER_API void | setRangeMinMax (float min, float max) |
set range limits for palette (need for find color by value) all palette colors are evenly distributed between min and max | |
MRVIEWER_API void | setRangeMinMaxNegPos (float minNeg, float maxNeg, float minPos, float maxPos) |
set range limits for palette (need for find color by value) two half palette colors are evenly distributed between MinNeg / MaxNeg and MinPos / MaxPos for values between MaxNeg / MinPos return one color (from center palette) | |
MRVIEWER_API void | setDiscretizationNumber (int discretization) |
MRVIEWER_API void | setFilterType (FilterType type) |
MRVIEWER_API void | draw (const std::string &windowName, const ImVec2 &pose, const ImVec2 &size, bool onlyTopHalf=false) |
MRVIEWER_API void | draw (ImDrawList *drawList, float scaling, const ImVec2 &pos, const ImVec2 &size, const Color &labelBgColor, bool onlyTopHalf=false) const |
MRVIEWER_API void | draw (ImDrawList *drawList, float scaling, const ImVec2 &pos, const ImVec2 &size, bool onlyTopHalf=false) const |
MRVIEWER_API void | resetLabels () |
MRVIEWER_API void | setCustomLabels (const std::vector< Label > &labels) |
MRVIEWER_API void | setLabelsVisible (bool visible) |
MRVIEWER_API bool | loadFromJson (const Json::Value &root) |
MRVIEWER_API void | saveCurrentToJson (Json::Value &root) const |
MRVIEWER_API Color | getColor (float relativeValue) const |
Color | getInvalidColor () const |
return invalid color | |
MRVIEWER_API VertColors | getVertColors (const VertScalars &values, const VertBitSet ®ion, const VertBitSet *valids, const VertBitSet *validsForStats) |
const MeshTexture & | getTexture () const |
MRVIEWER_API float | getRelativePos (float val) const |
UVCoord | getUVcoord (float val, bool valid=true) const |
MRVIEWER_API VertUVCoords | getUVcoords (const VertScalars &values, const VertBitSet ®ion, const VertPredicate &valids={}, const VertPredicate &validsForStats={}) |
VertUVCoords | getUVcoords (const VertScalars &values, const VertBitSet ®ion, const VertBitSet *valids, const VertBitSet *validsForStats=nullptr) |
const Parameters & | getParameters () const |
float | getRangeMin () const |
returns minimum value in the palette's range | |
float | getRangeMax () const |
returns maximum value in the palette's range | |
float | getRangeSq () const |
returns minimum squared value, not smaller than all squared values of palette's range | |
MRVIEWER_API std::string | getStringValue (float value) const |
returns formated string for this value of palette | |
MRVIEWER_API int | getMaxLabelCount () |
returns maximal label count | |
MRVIEWER_API void | setMaxLabelCount (int val) |
sets maximal label count | |
MRVIEWER_API void | setLegendLimits (const MinMaxf &limits) |
set legend limits. if min > max - limits are disabled | |
bool | isHistogramEnabled () const |
MRVIEWER_API int | getNumHistogramBuckets () const |
MRVIEWER_API void | setNumHistogramBuckets (int n) |
MRVIEWER_API int | getDefaultNumHistogramBuckets () const |
bool | isDiscretizationPercentagesEnabled () const |
void | enableDiscretizationPercentages (bool enable) |
MRVIEWER_API void | updateStats (const VertScalars &values, const VertBitSet ®ion, const VertPredicate &vertPredicate) |
MRVIEWER_API std::vector< Label > | createUniformLabels () const |
const Histogram & | getHistogramValues () |
const Histogram & | getDiscrHistogramValues () const |
Static Public Member Functions | |
static const std::vector< Color > & | BlueGreenRedColors () |
static MRVIEWER_API const std::vector< Color > & | GreenRedColors () |
simpler palette colors: from green to red | |
static MRVIEWER_API VertPredicate | predFromBitSet (const VertBitSet *bits) |
Static Public Attributes | |
static MRVIEWER_API const std::vector< Color > | DefaultColors |
preset palette colors: from blue via green to red | |
Class to hold one dimension texture with value to UV mapping.
Discrete mode will draw rectangle for each color Continuous mode will draw interpolated color
MRVIEWER_API MR::Palette::Palette | ( | const std::vector< Color > & | colors | ) |
|
inlinestaticnodiscard |
MRVIEWER_API std::vector< Label > MR::Palette::createUniformLabels | ( | ) | const |
Create uniform labels
creates labels for each color boundary (for a discrete palette)
MRVIEWER_API void MR::Palette::draw | ( | const std::string & | windowName, |
const ImVec2 & | pose, | ||
const ImVec2 & | size, | ||
bool | onlyTopHalf = false ) |
Draws vertical legend with labels in ImGui window with given name Discrete: bar consists of single colored rectangles for each initial color Linear (default): color is changing from one to another during initial color list
onlyTopHalf | if true, draws only top half of the palette and labels stretched to whole window |
MRVIEWER_API void MR::Palette::draw | ( | ImDrawList * | drawList, |
float | scaling, | ||
const ImVec2 & | pos, | ||
const ImVec2 & | size, | ||
bool | onlyTopHalf = false ) const |
MRVIEWER_API void MR::Palette::draw | ( | ImDrawList * | drawList, |
float | scaling, | ||
const ImVec2 & | pos, | ||
const ImVec2 & | size, | ||
const Color & | labelBgColor, | ||
bool | onlyTopHalf = false ) const |
Draws vertical legend with labels in existing window or scene Discrete: bar consists of single colored rectangles for each initial color Linear (default): color is changing from one to another during initial color list
onlyTopHalf | if true, draws only top half of the palette and labels stretched to whole window |
labelBgColor | label background color |
|
inline |
MRVIEWER_API Color MR::Palette::getColor | ( | float | relativeValue | ) | const |
return color according relative value and setting filter type
relativeValue | - value scaled from ragne [min, max] to [0; 1] Discrete: returns color for given value Linear: get interpolated color from the init vector |
|
nodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inline |
return invalid color
MRVIEWER_API int MR::Palette::getMaxLabelCount | ( | ) |
returns maximal label count
|
nodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
returns maximum value in the palette's range
|
inlinenodiscard |
returns minimum value in the palette's range
|
inlinenodiscard |
returns minimum squared value, not smaller than all squared values of palette's range
MRVIEWER_API float MR::Palette::getRelativePos | ( | float | val | ) | const |
MRVIEWER_API std::string MR::Palette::getStringValue | ( | float | value | ) | const |
returns formated string for this value of palette
|
inline |
|
inline |
get UV coordinate in palette for given value
valid | true - return coordinate of palette's color, false - return coordinate of gray |
|
inline |
MRVIEWER_API VertUVCoords MR::Palette::getUVcoords | ( | const VertScalars & | values, |
const VertBitSet & | region, | ||
const VertPredicate & | valids = {}, | ||
const VertPredicate & | validsForStats = {} ) |
get UV coordinates in palette for given values
region | only these vertices will be processed |
valids | if given then defines subregion with valid values, and invalid values will get gray color |
validsIfHistogram | If specified, replaces valids for the purposes of creating the histogram and computing the percentages of vertices in different discretization steps. |
MRVIEWER_API VertColors MR::Palette::getVertColors | ( | const VertScalars & | values, |
const VertBitSet & | region, | ||
const VertBitSet * | valids, | ||
const VertBitSet * | validsForStats ) |
get colors for given vert value
region | only these vertices will be processed |
valids | if given then defines subregion with valid values, and invalid values will get gray color |
|
staticnodiscard |
simpler palette colors: from green to red
|
inlinenodiscard |
|
inlinenodiscard |
MRVIEWER_API bool MR::Palette::loadFromJson | ( | const Json::Value & | root | ) |
|
staticnodiscard |
MRVIEWER_API void MR::Palette::resetLabels | ( | ) |
MRVIEWER_API void MR::Palette::saveCurrentToJson | ( | Json::Value & | root | ) | const |
MRVIEWER_API void MR::Palette::setBaseColors | ( | const std::vector< Color > & | colors | ) |
Set base palette colors colors.size() should be more or equal 2 for discrete palette using vector of colors calculated by mixing the base colors i.e. base {blue, red} -> discrete 3 {blue, 0.5*blue + 0.5*red, red}.
MRVIEWER_API void MR::Palette::setCustomLabels | ( | const std::vector< Label > & | labels | ) |
MRVIEWER_API void MR::Palette::setDiscretizationNumber | ( | int | discretization | ) |
MRVIEWER_API void MR::Palette::setFilterType | ( | FilterType | type | ) |
MRVIEWER_API void MR::Palette::setLabelsVisible | ( | bool | visible | ) |
MRVIEWER_API void MR::Palette::setLegendLimits | ( | const MinMaxf & | limits | ) |
set legend limits. if min > max - limits are disabled
MRVIEWER_API void MR::Palette::setMaxLabelCount | ( | int | val | ) |
sets maximal label count
MRVIEWER_API void MR::Palette::setNumHistogramBuckets | ( | int | n | ) |
MRVIEWER_API void MR::Palette::setRangeMinMax | ( | float | min, |
float | max ) |
set range limits for palette (need for find color by value) all palette colors are evenly distributed between min and max
MRVIEWER_API void MR::Palette::setRangeMinMaxNegPos | ( | float | minNeg, |
float | maxNeg, | ||
float | minPos, | ||
float | maxPos ) |
set range limits for palette (need for find color by value) two half palette colors are evenly distributed between MinNeg / MaxNeg and MinPos / MaxPos for values between MaxNeg / MinPos return one color (from center palette)
MRVIEWER_API void MR::Palette::updateStats | ( | const VertScalars & | values, |
const VertBitSet & | region, | ||
const VertPredicate & | vertPredicate ) |
|
static |
preset palette colors: from blue via green to red