VTK-m  2.0
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
vtkm::cont::ColorTable Class Reference

Color Table for coloring arbitrary fields. More...

#include <ColorTable.h>

Inheritance diagram for vtkm::cont::ColorTable:
vtkm::cont::ExecutionObjectBase

Public Types

enum  Preset {
  Preset::Default, Preset::CoolToWarm, Preset::CoolToWarmExtended, Preset::Viridis,
  Preset::Inferno, Preset::Plasma, Preset::BlackBodyRadiation, Preset::XRay,
  Preset::Green, Preset::BlackBlueWhite, Preset::BlueToOrange, Preset::GrayToRed,
  Preset::ColdAndHot, Preset::BlueGreenOrange, Preset::YellowGrayBlue, Preset::RainbowUniform,
  Preset::Jet, Preset::RainbowDesaturated
}
 

Public Member Functions

 ColorTable (vtkm::cont::ColorTable::Preset preset=vtkm::cont::ColorTable::Preset::Default)
 Construct a color table from a preset. More...
 
 ColorTable (const std::string &name)
 Construct a color table from a preset color table. More...
 
 ColorTable (vtkm::ColorSpace space)
 Construct a color table with a zero positions, and an invalid range. More...
 
 ColorTable (const vtkm::Range &range, vtkm::ColorSpace space=vtkm::ColorSpace::Lab)
 Construct a color table with a 2 positions. More...
 
 ColorTable (const vtkm::Range &range, const vtkm::Vec3f_32 &rgb1, const vtkm::Vec3f_32 &rgb2, vtkm::ColorSpace space=vtkm::ColorSpace::Lab)
 Construct a color table with 2 positions. More...
 
 ColorTable (const vtkm::Range &range, const vtkm::Vec4f_32 &rgba1, const vtkm::Vec4f_32 &rgba2, vtkm::ColorSpace space=vtkm::ColorSpace::Lab)
 Construct color and alpha and table with 2 positions. More...
 
 ColorTable (const std::string &name, vtkm::ColorSpace colorSpace, const vtkm::Vec3f_64 &nanColor, const std::vector< vtkm::Float64 > &rgbPoints, const std::vector< vtkm::Float64 > &alphaPoints={ 0.0, 1.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0 })
 Construct a color table with a list of colors and alphas. More...
 
 ~ColorTable ()
 
ColorTableoperator= (const ColorTable &)=default
 
 ColorTable (const ColorTable &)=default
 
const std::string & GetName () const
 
void SetName (const std::string &name)
 
bool LoadPreset (vtkm::cont::ColorTable::Preset preset)
 
bool LoadPreset (const std::string &name)
 Load a preset color table. More...
 
ColorTable MakeDeepCopy ()
 Make a deep copy of the current color table. More...
 
vtkm::ColorSpace GetColorSpace () const
 
void SetColorSpace (vtkm::ColorSpace space)
 
void SetClampingOn ()
 If clamping is disabled values that lay out side the color table range are colored based on Below and Above settings. More...
 
void SetClampingOff ()
 
void SetClamping (bool state)
 
bool GetClamping () const
 
void SetBelowRangeColor (const vtkm::Vec3f_32 &c)
 Color to use when clamping is disabled for any value that is below the given range. More...
 
const vtkm::Vec3f_32GetBelowRangeColor () const
 
void SetAboveRangeColor (const vtkm::Vec3f_32 &c)
 Color to use when clamping is disabled for any value that is above the given range. More...
 
const vtkm::Vec3f_32GetAboveRangeColor () const
 
void SetNaNColor (const vtkm::Vec3f_32 &c)
 
const vtkm::Vec3f_32GetNaNColor () const
 
void Clear ()
 Remove all existing values in both color and alpha tables. More...
 
void ClearColors ()
 Remove only color table values. More...
 
void ClearAlpha ()
 Remove only alpha table values. More...
 
void ReverseColors ()
 Reverse the rgb values inside the color table. More...
 
void ReverseAlpha ()
 Reverse the alpha, mid, and sharp values inside the opacity table. More...
 
const vtkm::RangeGetRange () const
 Returns min and max position of all function points. More...
 
void RescaleToRange (const vtkm::Range &range)
 Rescale the color and opacity transfer functions to match the input range. More...
 
vtkm::Int32 AddPoint (vtkm::Float64 x, const vtkm::Vec3f_32 &rgb)
 Adds a point to the color function. More...
 
vtkm::Int32 AddPointHSV (vtkm::Float64 x, const vtkm::Vec3f_32 &hsv)
 Adds a point to the color function. More...
 
vtkm::Int32 AddSegment (vtkm::Float64 x1, const vtkm::Vec3f_32 &rgb1, vtkm::Float64 x2, const vtkm::Vec3f_32 &rgb2)
 Add a line segment to the color function. More...
 
vtkm::Int32 AddSegmentHSV (vtkm::Float64 x1, const vtkm::Vec3f_32 &hsv1, vtkm::Float64 x2, const vtkm::Vec3f_32 &hsv2)
 Add a line segment to the color function. More...
 
bool GetPoint (vtkm::Int32 index, vtkm::Vec4f_64 &) const
 Get the location, and rgb information for an existing point in the opacity function. More...
 
vtkm::Int32 UpdatePoint (vtkm::Int32 index, const vtkm::Vec4f_64 &)
 Update the location, and rgb information for an existing point in the color function. More...
 
bool RemovePoint (vtkm::Float64 x)
 Remove the Color function point that exists at exactly x. More...
 
bool RemovePoint (vtkm::Int32 index)
 Remove the Color function point n. More...
 
vtkm::Int32 GetNumberOfPoints () const
 Returns the number of points in the color function. More...
 
vtkm::Int32 AddPointAlpha (vtkm::Float64 x, vtkm::Float32 alpha)
 Adds a point to the opacity function. More...
 
vtkm::Int32 AddPointAlpha (vtkm::Float64 x, vtkm::Float32 alpha, vtkm::Float32 midpoint, vtkm::Float32 sharpness)
 Adds a point to the opacity function. More...
 
vtkm::Int32 AddSegmentAlpha (vtkm::Float64 x1, vtkm::Float32 alpha1, vtkm::Float64 x2, vtkm::Float32 alpha2)
 Add a line segment to the opacity function. More...
 
vtkm::Int32 AddSegmentAlpha (vtkm::Float64 x1, vtkm::Float32 alpha1, vtkm::Float64 x2, vtkm::Float32 alpha2, const vtkm::Vec2f_32 &mid_sharp1, const vtkm::Vec2f_32 &mid_sharp2)
 Add a line segment to the opacity function. More...
 
bool GetPointAlpha (vtkm::Int32 index, vtkm::Vec4f_64 &) const
 Get the location, alpha, midpoint and sharpness information for an existing point in the opacity function. More...
 
vtkm::Int32 UpdatePointAlpha (vtkm::Int32 index, const vtkm::Vec4f_64 &)
 Update the location, alpha, midpoint and sharpness information for an existing point in the opacity function. More...
 
bool RemovePointAlpha (vtkm::Float64 x)
 Remove the Opacity function point that exists at exactly x. More...
 
bool RemovePointAlpha (vtkm::Int32 index)
 Remove the Opacity function point n. More...
 
vtkm::Int32 GetNumberOfPointsAlpha () const
 Returns the number of points in the alpha function. More...
 
bool FillColorTableFromDataPointer (vtkm::Int32 n, const vtkm::Float64 *ptr)
 Fill the Color table from a vtkm::Float64 pointer. More...
 
bool FillColorTableFromDataPointer (vtkm::Int32 n, const vtkm::Float32 *ptr)
 Fill the Color table from a vtkm::Float32 pointer. More...
 
bool FillOpacityTableFromDataPointer (vtkm::Int32 n, const vtkm::Float64 *ptr)
 Fill the Opacity table from a vtkm::Float64 pointer. More...
 
bool FillOpacityTableFromDataPointer (vtkm::Int32 n, const vtkm::Float32 *ptr)
 Fill the Opacity table from a vtkm::Float32 pointer. More...
 
bool Sample (vtkm::Int32 numSamples, vtkm::cont::ColorTableSamplesRGBA &samples, vtkm::Float64 tolerance=0.002) const
 generate RGB colors using regular spaced samples along the range. More...
 
bool Sample (vtkm::Int32 numSamples, vtkm::cont::ColorTableSamplesRGB &samples, vtkm::Float64 tolerance=0.002) const
 generate a sample lookup table using regular spaced samples along the range. More...
 
bool Sample (vtkm::Int32 numSamples, vtkm::cont::ArrayHandle< vtkm::Vec4ui_8 > &colors, vtkm::Float64 tolerance=0.002) const
 generate RGBA colors using regular spaced samples along the range. More...
 
bool Sample (vtkm::Int32 numSamples, vtkm::cont::ArrayHandle< vtkm::Vec3ui_8 > &colors, vtkm::Float64 tolerance=0.002) const
 generate RGB colors using regular spaced samples along the range. More...
 
vtkm::exec::ColorTable PrepareForExecution (vtkm::cont::DeviceAdapterId deviceId, vtkm::cont::Token &token) const
 returns a virtual object pointer of the exec color table More...
 
vtkm::Id GetModifiedCount () const
 Returns the modified count for changes of the color table. More...
 

Static Public Member Functions

static std::set< std::string > GetPresets ()
 Returns the name of all preset color tables. More...
 

Private Member Functions

void UpdateArrayHandles () const
 

Private Attributes

std::shared_ptr< detail::ColorTableInternals > Internals
 

Detailed Description

Color Table for coloring arbitrary fields.

The vtkm::cont::ColorTable allows for color mapping in RGB or HSV space and uses a piecewise hermite functions to allow opacity interpolation that can be piecewise constant, piecewise linear, or somewhere in-between (a modified piecewise hermite function that squishes the function according to a sharpness parameter).

For colors interpolation is handled using a piecewise linear function.

For opacity we define a piecewise function mapping. This mapping allows the addition of control points, and allows the user to control the function between the control points. A piecewise hermite curve is used between control points, based on the sharpness and midpoint parameters. A sharpness of 0 yields a piecewise linear function and a sharpness of 1 yields a piecewise constant function. The midpoint is the normalized distance between control points at which the curve reaches the median Y value. The midpoint and sharpness values specified when adding a node are used to control the transition to the next node with the last node's values being ignored.

When adding opacity nodes without an explicit midpoint and sharpness we will default to to Midpoint = 0.5 (halfway between the control points) and Sharpness = 0.0 (linear).

ColorTable also contains which ColorSpace should be used for interpolation. The color space is selected with the vtkm::ColorSpace enumeration. Currently the valid ColorSpaces are:

In HSVWrap mode, it will take the shortest path in Hue (going back through 0 if that is the shortest way around the hue circle) whereas HSV will not go through 0 (in order to match the current functionality of vtkLookupTable). In Lab mode, it will take the shortest path in the Lab color space with respect to the CIE Delta E 2000 color distance measure. Diverging is a special mode where colors will pass through white when interpolating between two saturated colors.

To map a field from a vtkm::cont::DataSet through the color and opacity transfer functions and into a RGB or RGBA array you should use vtkm::filter::FieldToColor.

Note that modifications of vtkm::cont::ColorTable are not thread safe. You should not modify a ColorTable simultaneously in 2 or more threads. Also, you should not modify a ColorTable that might be used in the execution environment. However, the ColorTable can be used in multiple threads and on multiple devices as long as no modifications are made.

Member Enumeration Documentation

◆ Preset

Enumerator
Default 
CoolToWarm 
CoolToWarmExtended 
Viridis 
Inferno 
Plasma 
BlackBodyRadiation 
XRay 
Green 
BlackBlueWhite 
BlueToOrange 
GrayToRed 
ColdAndHot 
BlueGreenOrange 
YellowGrayBlue 
RainbowUniform 
Jet 
RainbowDesaturated 

Constructor & Destructor Documentation

◆ ColorTable() [1/8]

vtkm::cont::ColorTable::ColorTable ( vtkm::cont::ColorTable::Preset  preset = vtkm::cont::ColorTable::Preset::Default)

Construct a color table from a preset.

Constructs a color table from a given preset, which might include a NaN color. The alpha table will have 2 entries of alpha = 1.0 with linear interpolation

Note: these are a select set of the presets you can get by providing a string identifier.

◆ ColorTable() [2/8]

vtkm::cont::ColorTable::ColorTable ( const std::string &  name)
explicit

Construct a color table from a preset color table.

Constructs a color table from a given preset, which might include a NaN color. The alpha table will have 2 entries of alpha = 1.0 with linear interpolation

Note: Names are case insensitive Currently supports the following color tables:

"Default" "Cool to Warm" "Cool to Warm Extended" "Viridis" "Inferno" "Plasma" "Black-Body Radiation" "X Ray" "Green" "Black - Blue - White" "Blue to Orange" "Gray to Red" "Cold and Hot" "Blue - Green - Orange" "Yellow - Gray - Blue" "Rainbow Uniform" "Jet" "Rainbow Desaturated"

◆ ColorTable() [3/8]

vtkm::cont::ColorTable::ColorTable ( vtkm::ColorSpace  space)
explicit

Construct a color table with a zero positions, and an invalid range.

Note: The color table will have 0 entries Note: The alpha table will have 0 entries

◆ ColorTable() [4/8]

vtkm::cont::ColorTable::ColorTable ( const vtkm::Range range,
vtkm::ColorSpace  space = vtkm::ColorSpace::Lab 
)

Construct a color table with a 2 positions.

Note: The color table will have 2 entries of rgb = {1.0,1.0,1.0} Note: The alpha table will have 2 entries of alpha = 1.0 with linear interpolation

◆ ColorTable() [5/8]

vtkm::cont::ColorTable::ColorTable ( const vtkm::Range range,
const vtkm::Vec3f_32 rgb1,
const vtkm::Vec3f_32 rgb2,
vtkm::ColorSpace  space = vtkm::ColorSpace::Lab 
)

Construct a color table with 2 positions.

Note: The alpha table will have 2 entries of alpha = 1.0 with linear interpolation

◆ ColorTable() [6/8]

vtkm::cont::ColorTable::ColorTable ( const vtkm::Range range,
const vtkm::Vec4f_32 rgba1,
const vtkm::Vec4f_32 rgba2,
vtkm::ColorSpace  space = vtkm::ColorSpace::Lab 
)

Construct color and alpha and table with 2 positions.

Note: The alpha table will use linear interpolation

◆ ColorTable() [7/8]

vtkm::cont::ColorTable::ColorTable ( const std::string &  name,
vtkm::ColorSpace  colorSpace,
const vtkm::Vec3f_64 nanColor,
const std::vector< vtkm::Float64 > &  rgbPoints,
const std::vector< vtkm::Float64 > &  alphaPoints = { 0.0, 1.0, 0.5, 0.0, 1.0, 1.0, 0.5, 0.0 } 
)

Construct a color table with a list of colors and alphas.

For this version you must also specify a name.

This constructor is mostly used for presets.

◆ ~ColorTable()

vtkm::cont::ColorTable::~ColorTable ( )

◆ ColorTable() [8/8]

vtkm::cont::ColorTable::ColorTable ( const ColorTable )
default

Member Function Documentation

◆ AddPoint()

vtkm::Int32 vtkm::cont::ColorTable::AddPoint ( vtkm::Float64  x,
const vtkm::Vec3f_32 rgb 
)

Adds a point to the color function.

If the point already exists, it will be updated to the new value.

Note: rgb values need to be between 0 and 1.0 (inclusive). Return the index of the point (0 based), or -1 osn error.

◆ AddPointAlpha() [1/2]

vtkm::Int32 vtkm::cont::ColorTable::AddPointAlpha ( vtkm::Float64  x,
vtkm::Float32  alpha 
)
inline

Adds a point to the opacity function.

If the point already exists, it will be updated to the new value. Uses a midpoint of 0.5 (halfway between the control points) and sharpness of 0.0 (linear).

Note: alpha needs to be a value between 0 and 1.0 (inclusive). Return the index of the point (0 based), or -1 on error.

◆ AddPointAlpha() [2/2]

vtkm::Int32 vtkm::cont::ColorTable::AddPointAlpha ( vtkm::Float64  x,
vtkm::Float32  alpha,
vtkm::Float32  midpoint,
vtkm::Float32  sharpness 
)

Adds a point to the opacity function.

If the point already exists, it will be updated to the new value.

Note: alpha, midpoint, and sharpness values need to be between 0 and 1.0 (inclusive) Return the index of the point (0 based), or -1 on error.

◆ AddPointHSV()

vtkm::Int32 vtkm::cont::ColorTable::AddPointHSV ( vtkm::Float64  x,
const vtkm::Vec3f_32 hsv 
)

Adds a point to the color function.

If the point already exists, it will be updated to the new value.

Note: hsv values need to be between 0 and 1.0 (inclusive). Return the index of the point (0 based), or -1 on error.

◆ AddSegment()

vtkm::Int32 vtkm::cont::ColorTable::AddSegment ( vtkm::Float64  x1,
const vtkm::Vec3f_32 rgb1,
vtkm::Float64  x2,
const vtkm::Vec3f_32 rgb2 
)

Add a line segment to the color function.

All points which lay between x1 and x2 (inclusive) are removed from the function.

Note: rgb1, and rgb2 values need to be between 0 and 1.0 (inclusive). Return the index of the point x1 (0 based), or -1 on error.

◆ AddSegmentAlpha() [1/2]

vtkm::Int32 vtkm::cont::ColorTable::AddSegmentAlpha ( vtkm::Float64  x1,
vtkm::Float32  alpha1,
vtkm::Float64  x2,
vtkm::Float32  alpha2 
)
inline

Add a line segment to the opacity function.

All points which lay between x1 and x2 (inclusive) are removed from the function. Uses a midpoint of 0.5 (halfway between the control points) and sharpness of 0.0 (linear).

Note: alpha values need to be between 0 and 1.0 (inclusive) Return the index of the point x1 (0 based), or -1 on error

◆ AddSegmentAlpha() [2/2]

vtkm::Int32 vtkm::cont::ColorTable::AddSegmentAlpha ( vtkm::Float64  x1,
vtkm::Float32  alpha1,
vtkm::Float64  x2,
vtkm::Float32  alpha2,
const vtkm::Vec2f_32 mid_sharp1,
const vtkm::Vec2f_32 mid_sharp2 
)

Add a line segment to the opacity function.

All points which lay between x1 and x2 (inclusive) are removed from the function.

Note: alpha, midpoint, and sharpness values need to be between 0 and 1.0 (inclusive) Return the index of the point x1 (0 based), or -1 on error

◆ AddSegmentHSV()

vtkm::Int32 vtkm::cont::ColorTable::AddSegmentHSV ( vtkm::Float64  x1,
const vtkm::Vec3f_32 hsv1,
vtkm::Float64  x2,
const vtkm::Vec3f_32 hsv2 
)

Add a line segment to the color function.

All points which lay between x1 and x2 (inclusive) are removed from the function.

Note: hsv1, and hsv2 values need to be between 0 and 1.0 (inclusive) Return the index of the point x1 (0 based), or -1 on error

◆ Clear()

void vtkm::cont::ColorTable::Clear ( )

Remove all existing values in both color and alpha tables.

Does not remove the clamping, below, and above range state or colors.

◆ ClearAlpha()

void vtkm::cont::ColorTable::ClearAlpha ( )

Remove only alpha table values.

◆ ClearColors()

void vtkm::cont::ColorTable::ClearColors ( )

Remove only color table values.

◆ FillColorTableFromDataPointer() [1/2]

bool vtkm::cont::ColorTable::FillColorTableFromDataPointer ( vtkm::Int32  n,
const vtkm::Float32 ptr 
)

Fill the Color table from a vtkm::Float32 pointer.

The vtkm::Float64 pointer is required to have the layout out of [X1, R1, G1, B1, X2, R2, G2, B2, ..., Xn, Rn, Gn, Bn] where n is the number of nodes. This will remove any existing color control points.

Note: n represents the length of the array, so ( n/4 == number of control points )

Note: This is provided as a interoperability method with VTK Will return false and not modify anything if n is <= 0 or ptr == nullptr

◆ FillColorTableFromDataPointer() [2/2]

bool vtkm::cont::ColorTable::FillColorTableFromDataPointer ( vtkm::Int32  n,
const vtkm::Float64 ptr 
)

Fill the Color table from a vtkm::Float64 pointer.

The vtkm::Float64 pointer is required to have the layout out of [X1, R1, G1, B1, X2, R2, G2, B2, ..., Xn, Rn, Gn, Bn] where n is the number of nodes. This will remove any existing color control points.

Note: n represents the length of the array, so ( n/4 == number of control points )

Note: This is provided as a interoperability method with VTK Will return false and not modify anything if n is <= 0 or ptr == nullptr

◆ FillOpacityTableFromDataPointer() [1/2]

bool vtkm::cont::ColorTable::FillOpacityTableFromDataPointer ( vtkm::Int32  n,
const vtkm::Float32 ptr 
)

Fill the Opacity table from a vtkm::Float32 pointer.

The vtkm::Float32 pointer is required to have the layout out of [X1, A1, M1, S1, X2, A2, M2, S2, ..., Xn, An, Mn, Sn] where n is the number of nodes. The Xi values represent the value to map, the Ai values represent alpha (opacity) value, the Mi values represent midpoints, and the Si values represent sharpness. Use 0.5 for midpoint and 0.0 for sharpness to have linear interpolation of the alpha.

This will remove any existing opacity control points.

Note: n represents the length of the array, so ( n/4 == number of control points )

Will return false and not modify anything if n is <= 0 or ptr == nullptr

◆ FillOpacityTableFromDataPointer() [2/2]

bool vtkm::cont::ColorTable::FillOpacityTableFromDataPointer ( vtkm::Int32  n,
const vtkm::Float64 ptr 
)

Fill the Opacity table from a vtkm::Float64 pointer.

The vtkm::Float64 pointer is required to have the layout out of [X1, A1, M1, S1, X2, A2, M2, S2, ..., Xn, An, Mn, Sn] where n is the number of nodes. The Xi values represent the value to map, the Ai values represent alpha (opacity) value, the Mi values represent midpoints, and the Si values represent sharpness. Use 0.5 for midpoint and 0.0 for sharpness to have linear interpolation of the alpha.

This will remove any existing opacity control points.

Note: n represents the length of the array, so ( n/4 == number of control points )

Will return false and not modify anything if n is <= 0 or ptr == nullptr

◆ GetAboveRangeColor()

const vtkm::Vec3f_32& vtkm::cont::ColorTable::GetAboveRangeColor ( ) const

◆ GetBelowRangeColor()

const vtkm::Vec3f_32& vtkm::cont::ColorTable::GetBelowRangeColor ( ) const

◆ GetClamping()

bool vtkm::cont::ColorTable::GetClamping ( ) const

◆ GetColorSpace()

vtkm::ColorSpace vtkm::cont::ColorTable::GetColorSpace ( ) const

◆ GetModifiedCount()

vtkm::Id vtkm::cont::ColorTable::GetModifiedCount ( ) const

Returns the modified count for changes of the color table.

The ModifiedCount of the color table starts at 1 and gets incremented every time a change is made to the color table. The modified count allows consumers of a shared color table to keep track if the color table has been modified since the last time they used it. This is important for consumers that need to sample the color table. You only want to resample the color table if changes have been made.

◆ GetName()

const std::string& vtkm::cont::ColorTable::GetName ( ) const

◆ GetNaNColor()

const vtkm::Vec3f_32& vtkm::cont::ColorTable::GetNaNColor ( ) const

◆ GetNumberOfPoints()

vtkm::Int32 vtkm::cont::ColorTable::GetNumberOfPoints ( ) const

Returns the number of points in the color function.

◆ GetNumberOfPointsAlpha()

vtkm::Int32 vtkm::cont::ColorTable::GetNumberOfPointsAlpha ( ) const

Returns the number of points in the alpha function.

◆ GetPoint()

bool vtkm::cont::ColorTable::GetPoint ( vtkm::Int32  index,
vtkm::Vec4f_64  
) const

Get the location, and rgb information for an existing point in the opacity function.

Note: components 1-3 are rgb and will have values between 0 and 1.0 (inclusive) Return the index of the point (0 based), or -1 on error.

◆ GetPointAlpha()

bool vtkm::cont::ColorTable::GetPointAlpha ( vtkm::Int32  index,
vtkm::Vec4f_64  
) const

Get the location, alpha, midpoint and sharpness information for an existing point in the opacity function.

Note: alpha, midpoint, and sharpness values all will be between 0 and 1.0 (inclusive) Return the index of the point (0 based), or -1 on error.

◆ GetPresets()

static std::set<std::string> vtkm::cont::ColorTable::GetPresets ( )
static

Returns the name of all preset color tables.

This list will include all presets defined in vtkm::cont::ColorTable::Preset and could include extras as well.

◆ GetRange()

const vtkm::Range& vtkm::cont::ColorTable::GetRange ( ) const

Returns min and max position of all function points.

◆ LoadPreset() [1/2]

bool vtkm::cont::ColorTable::LoadPreset ( const std::string &  name)

Load a preset color table.

Removes all existing all values in both color and alpha tables, and will reset the NaN Color if the color table has that information. Will not modify clamping, below, and above range state.

Note: Names are case insensitive

Currently supports the following color tables: "Default" "Cool to Warm" "Cool to Warm Extended" "Viridis" "Inferno" "Plasma" "Black-Body Radiation" "X Ray" "Green" "Black - Blue - White" "Blue to Orange" "Gray to Red" "Cold and Hot" "Blue - Green - Orange" "Yellow - Gray - Blue" "Rainbow Uniform" "Jet" "Rainbow Desaturated"

◆ LoadPreset() [2/2]

bool vtkm::cont::ColorTable::LoadPreset ( vtkm::cont::ColorTable::Preset  preset)

◆ MakeDeepCopy()

ColorTable vtkm::cont::ColorTable::MakeDeepCopy ( )

Make a deep copy of the current color table.

The ColorTable is implemented so that all stack based copies are 'shallow' copies. This means that they all alter the same internal instance. But sometimes you need to make an actual fully independent copy.

◆ operator=()

ColorTable& vtkm::cont::ColorTable::operator= ( const ColorTable )
default

◆ PrepareForExecution()

vtkm::exec::ColorTable vtkm::cont::ColorTable::PrepareForExecution ( vtkm::cont::DeviceAdapterId  deviceId,
vtkm::cont::Token token 
) const

returns a virtual object pointer of the exec color table

This pointer is only valid as long as the ColorTable is unmodified

◆ RemovePoint() [1/2]

bool vtkm::cont::ColorTable::RemovePoint ( vtkm::Float64  x)

Remove the Color function point that exists at exactly x.

Return true if the point x exists and has been removed

◆ RemovePoint() [2/2]

bool vtkm::cont::ColorTable::RemovePoint ( vtkm::Int32  index)

Remove the Color function point n.

Return true if n >= 0 && n < GetNumberOfPoints

◆ RemovePointAlpha() [1/2]

bool vtkm::cont::ColorTable::RemovePointAlpha ( vtkm::Float64  x)

Remove the Opacity function point that exists at exactly x.

Return true if the point x exists and has been removed

◆ RemovePointAlpha() [2/2]

bool vtkm::cont::ColorTable::RemovePointAlpha ( vtkm::Int32  index)

Remove the Opacity function point n.

Return true if n >= 0 && n < GetNumberOfPointsAlpha

◆ RescaleToRange()

void vtkm::cont::ColorTable::RescaleToRange ( const vtkm::Range range)

Rescale the color and opacity transfer functions to match the input range.

◆ ReverseAlpha()

void vtkm::cont::ColorTable::ReverseAlpha ( )

Reverse the alpha, mid, and sharp values inside the opacity table.

Note: To keep the shape correct the mid and sharp values of the last node are not included in the reversal

◆ ReverseColors()

void vtkm::cont::ColorTable::ReverseColors ( )

Reverse the rgb values inside the color table.

◆ Sample() [1/4]

bool vtkm::cont::ColorTable::Sample ( vtkm::Int32  numSamples,
vtkm::cont::ArrayHandle< vtkm::Vec3ui_8 > &  colors,
vtkm::Float64  tolerance = 0.002 
) const

generate RGB colors using regular spaced samples along the range.

Will use the current range of the color table to generate evenly spaced values using either vtkm::Float32 or vtkm::Float64 space. Will use vtkm::Float32 space when the difference between the vtkm::Float32 and vtkm::Float64 values when the range is within vtkm::Float32 space and the following are within a tolerance:

  • (max-min) / numSamples
  • ((max-min) / numSamples) * numSamples

Note: This will return false if the number of samples is less than 2

◆ Sample() [2/4]

bool vtkm::cont::ColorTable::Sample ( vtkm::Int32  numSamples,
vtkm::cont::ArrayHandle< vtkm::Vec4ui_8 > &  colors,
vtkm::Float64  tolerance = 0.002 
) const

generate RGBA colors using regular spaced samples along the range.

Will use the current range of the color table to generate evenly spaced values using either vtkm::Float32 or vtkm::Float64 space. Will use vtkm::Float32 space when the difference between the vtkm::Float32 and vtkm::Float64 values when the range is within vtkm::Float32 space and the following are within a tolerance:

  • (max-min) / numSamples
  • ((max-min) / numSamples) * numSamples

Note: This will return false if the number of samples is less than 2

◆ Sample() [3/4]

bool vtkm::cont::ColorTable::Sample ( vtkm::Int32  numSamples,
vtkm::cont::ColorTableSamplesRGB samples,
vtkm::Float64  tolerance = 0.002 
) const

generate a sample lookup table using regular spaced samples along the range.

Will use the current range of the color table to generate evenly spaced values using either vtkm::Float32 or vtkm::Float64 space. Will use vtkm::Float32 space when the difference between the vtkm::Float32 and vtkm::Float64 values when the range is within vtkm::Float32 space and the following are within a tolerance:

  • (max-min) / numSamples
  • ((max-min) / numSamples) * numSamples

Note: This will return false if the number of samples is less than 2

◆ Sample() [4/4]

bool vtkm::cont::ColorTable::Sample ( vtkm::Int32  numSamples,
vtkm::cont::ColorTableSamplesRGBA samples,
vtkm::Float64  tolerance = 0.002 
) const

generate RGB colors using regular spaced samples along the range.

Will use the current range of the color table to generate evenly spaced values using either vtkm::Float32 or vtkm::Float64 space. Will use vtkm::Float32 space when the difference between the vtkm::Float32 and vtkm::Float64 values when the range is within vtkm::Float32 space and the following are within a tolerance:

  • (max-min) / numSamples
  • ((max-min) / numSamples) * numSamples

Note: This will return false if the number of samples is less than 2

◆ SetAboveRangeColor()

void vtkm::cont::ColorTable::SetAboveRangeColor ( const vtkm::Vec3f_32 c)

Color to use when clamping is disabled for any value that is above the given range.

Default value is {0,0,0}

◆ SetBelowRangeColor()

void vtkm::cont::ColorTable::SetBelowRangeColor ( const vtkm::Vec3f_32 c)

Color to use when clamping is disabled for any value that is below the given range.

Default value is {0,0,0}

◆ SetClamping()

void vtkm::cont::ColorTable::SetClamping ( bool  state)

◆ SetClampingOff()

void vtkm::cont::ColorTable::SetClampingOff ( )
inline

◆ SetClampingOn()

void vtkm::cont::ColorTable::SetClampingOn ( )
inline

If clamping is disabled values that lay out side the color table range are colored based on Below and Above settings.

By default clamping is enabled

◆ SetColorSpace()

void vtkm::cont::ColorTable::SetColorSpace ( vtkm::ColorSpace  space)

◆ SetName()

void vtkm::cont::ColorTable::SetName ( const std::string &  name)

◆ SetNaNColor()

void vtkm::cont::ColorTable::SetNaNColor ( const vtkm::Vec3f_32 c)

◆ UpdateArrayHandles()

void vtkm::cont::ColorTable::UpdateArrayHandles ( ) const
private

◆ UpdatePoint()

vtkm::Int32 vtkm::cont::ColorTable::UpdatePoint ( vtkm::Int32  index,
const vtkm::Vec4f_64  
)

Update the location, and rgb information for an existing point in the color function.

If the location value for the index is modified the point is removed from the function and re-inserted in the proper sorted location.

Note: components 1-3 are rgb and must have values between 0 and 1.0 (inclusive). Return the new index of the updated point (0 based), or -1 on error.

◆ UpdatePointAlpha()

vtkm::Int32 vtkm::cont::ColorTable::UpdatePointAlpha ( vtkm::Int32  index,
const vtkm::Vec4f_64  
)

Update the location, alpha, midpoint and sharpness information for an existing point in the opacity function.

If the location value for the index is modified the point is removed from the function and re-inserted in the proper sorted location

Note: alpha, midpoint, and sharpness values need to be between 0 and 1.0 (inclusive) Return the new index of the updated point (0 based), or -1 on error.

Member Data Documentation

◆ Internals

std::shared_ptr<detail::ColorTableInternals> vtkm::cont::ColorTable::Internals
private

The documentation for this class was generated from the following file: