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 |
| MRVIEWER_API void | setDrawDelayFrames (int numFrames) |
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::setDrawDelayFrames | ( | int | numFrames | ) |
| 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