Lumiverse  2.5
A framework for creating lighting control applications
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Lumiverse Namespace Reference

Contains all core Lumiverse functions and variables. More...

Namespaces

 ColorUtils
 Utility functions for color calculations that aren't essential to LumiverseColor.
 
 Logger
 Logging interface.
 
 LumiverseTypeUtils
 Functions to make life with Lumiverse generic types easier.
 

Classes

union  AiArraySet
 
union  AiNodeSet
 
class  ArnoldAnimationPatch
 A subclass of ArnoldPatch. Instead of interrupting the worker thread every time a new rendering task is received, this class keeps all requests in a queue. A worker thread grasps tasks and dumps frame buffer to a ArnoldFrameManager. More...
 
class  ArnoldInterface
 Interface between ArnoldPatch and arnold. Almost all arnold APIs are called from this class. More...
 
struct  ArnoldParam
 
class  ArnoldParameterVector
 Defines a vector type for Arnold parameters, like color, vector etc. More...
 
class  ArnoldPatch
 The Arnold Patch object is responsible for the communication between the Arnold renderer and the Lumiverse devices. The major part of communication is done with help of an ArnoldInterface object. ArnoldPatch handles parsing Json and passing info to ArnoldInterface. More...
 
struct  BucketPositionInfo
 Wrapper for unit (bucket) being rendered. More...
 
class  Device
 A Device in Lumiverse maintains information about a lighting device. More...
 
class  DeviceSet
 A DeviceSet is a set of devices. More...
 
class  DMXDevicePatch
 This class includes information on how to translate the device properties for a given device to DMX values. More...
 
class  DMXInterface
 Provides a common interface to various DMX devices. More...
 
class  DMXPatch
 The DMX Patch object manages the communication between the DMX network and the Lumiverse devices. More...
 
class  DynamicDeviceSet
 A DynamicDeviceSet is a set of devices specified by a query string. More...
 
struct  FocusPalette
 A Focus Palette is a preset configuration for the pan and tilt of a light. More...
 
struct  FrameDeviceInfo
 The state info for worker thread. More...
 
class  LumiverseColor
 This class describes a color. More...
 
class  LumiverseEnum
 Defines an enumeration in Lumiverse. More...
 
class  LumiverseFloat
 Defines a float in Lumiverse. More...
 
class  LumiverseOrientation
 Defines an orientation in Lumiverse. More...
 
class  LumiverseType
 This class is a wapper around a variety of different possible data types that might be needed by a Device. More...
 
class  OscPatch
 
class  Patch
 A Patch maps devices to output channels and handles the output of data to the network. More...
 
struct  patchData
 Small struct containing information on where the DMX parameter starts and how to convert it to the right type. More...
 
struct  ProgressInfo
 Wrapper for progress information computed based on number of buckets. More...
 
class  Rig
 The Rig contains information about the state of the lighting system. More...
 
class  SimulationAnimationPatch
 A subclass of ArnoldPatch. Instead of interrupting the worker thread every time a new rendering task is received, this class keeps all requests in a queue. A worker thread grasps tasks and dumps frame buffer to a ArnoldFrameManager. More...
 
struct  SimulationLightRecord
 Record that denotes if a arnold light node requires update. More...
 
class  SimulationPatch
 The Arnold Patch object is responsible for the communication between the Arnold renderer and the Lumiverse devices. The major part of communication is done with help of an ArnoldInterface object. SimulationPatch handles parsing Json and passing info to ArnoldInterface. More...
 

Typedefs

typedef function< Patch *(JSONNode &)> patchParseFunc
 

Enumerations

enum  conversionType {
  FLOAT_TO_SINGLE, FLOAT_TO_FINE, ENUM, RGB_REPEAT2,
  RGB_REPEAT3, RGB_REPEAT4, COLOR_RGB, COLOR_RGBW,
  COLOR_LUSTRPLUS, ORI_TO_FINE
}
 Enumeration maps to a function that performs the appropriate conversion from Lumiverse value to DMX value. More...
 
enum  LOG_LEVEL {
  LDEBUG = 0, INFO = 1, WARN = 2, ERR = 3,
  CRITICAL = 4, FATAL = 5
}
 Log detail level. More...
 
enum  OscFormat { PREFIXED_ADDR = 0, PER_DEVICE_ADDR = 1, ETC_EOS = 2 }
 
enum  SimulationAnimationMode { INTERACTIVE, RECORDING, RENDERING, STOPPED }
 Four working modes of SimulationAnimationPatch. INTERACTIVE: Patch renders the latest sent frame with preview sampling rate (camera). RECORDING: Patch renders the preview scene with similar behavior as INTERACTIVE, and it also creates a duplicate for each frame, which is used later for rendering. RENDERING: Renders the frames with rendering sampling rate. STOPPED: Patch doesn't respond to any input. This state is usually used for playing video.
 
enum  ColorMode { ADDITIVE, SUBTRACTIVE, BASIC_RGB, BASIC_CMY }
 Selects the color mode for a LumiverseColor. More...
 
enum  RGBColorSpace { sRGB, sharpRGB }
 Selects a RGB color space to use in color conversion functions. More...
 
enum  ReferenceWhite { D65, D50, A }
 
enum  ORIENTATION_UNIT { DEGREE, RADIAN }
 Enumeration indicating the type of angular unit stored.
 

Functions

template<size_t D, typename T >
static bool parseArnoldParameter (const std::string &value, ArnoldParameterVector< D, T > &vector)
 Parses a formatted string into a ArnoldParameterVector instance. More...
 
template<size_t D, typename T >
bool operator== (ArnoldParameterVector< D, T > a, ArnoldParameterVector< D, T > b)
 
template<size_t D, typename T >
bool operator!= (ArnoldParameterVector< D, T > a, ArnoldParameterVector< D, T > b)
 
template<size_t D, typename T >
bool operator< (ArnoldParameterVector< D, T > a, ArnoldParameterVector< D, T > b)
 
template<size_t D, typename T >
bool operator> (ArnoldParameterVector< D, T > a, ArnoldParameterVector< D, T > b)
 
template<size_t D, typename T >
bool operator<= (ArnoldParameterVector< D, T > a, ArnoldParameterVector< D, T > b)
 
template<size_t D, typename T >
bool operator>= (ArnoldParameterVector< D, T > a, ArnoldParameterVector< D, T > b)
 
template<size_t D, typename T >
ArnoldParameterVector< D, T > operator+ (ArnoldParameterVector< D, T > lhs, ArnoldParameterVector< D, T > rhs)
 
template<size_t D, typename T >
ArnoldParameterVector< D, T > operator- (ArnoldParameterVector< D, T > lhs, ArnoldParameterVector< D, T > rhs)
 
template<size_t D, typename T >
ArnoldParameterVector< D, T > operator* (ArnoldParameterVector< D, T > lhs, float rhs)
 
template<size_t D, typename T >
ArnoldParameterVector< D, T > operator* (ArnoldParameterVector< D, T > lhs, ArnoldParameterVector< D, T > rhs)
 
template<size_t D, typename T >
ArnoldParameterVector< D, T > operator/ (ArnoldParameterVector< D, T > lhs, float rhs)
 
template<size_t D, typename T >
ArnoldParameterVector< D, T > operator/ (ArnoldParameterVector< D, T > lhs, ArnoldParameterVector< D, T > rhs)
 
void convertPlugin (std::string &dir)
 
static unsigned char * _load_img_error (int *width, int *height)
 
static bool _ends_with (const char *s, const char *postfix)
 
static unsigned char * _load_image_RGBA_png (const char *fileName, int *width, int *height)
 
static bool _save_image_RGBA_png (const char *fileName, unsigned char *buffer, int width, int height)
 
unsigned char * imageio_load_image (const char *fileName, int *width, int *height)
 
bool imageio_save_image (const char *fileName, unsigned char *buffer, int width, int height)
 
void imageio_gen_name (char *filename, size_t len)
 
void floats_to_bytes (unsigned char *arr, float *rgba, int width, int height)
 
void bytes_to_floats (float *rgba, unsigned char *arr, int width, int height)
 
bool operator== (LumiverseColor &a, LumiverseColor &b)
 
bool operator== (LumiverseEnum &a, LumiverseEnum &b)
 Compares two enums for equality. More...
 
bool operator!= (LumiverseEnum &a, LumiverseEnum &b)
 
bool operator< (LumiverseEnum &a, LumiverseEnum &b)
 Compares the numeric values of two enumerations. More...
 
bool operator> (LumiverseEnum &a, LumiverseEnum &b)
 
bool operator<= (LumiverseEnum &a, LumiverseEnum &b)
 
bool operator>= (LumiverseEnum &a, LumiverseEnum &b)
 
bool operator== (LumiverseFloat &a, LumiverseFloat &b)
 
bool operator== (LumiverseFloat &a, float b)
 
bool operator!= (LumiverseFloat &a, LumiverseFloat &b)
 
bool operator!= (LumiverseFloat &a, float b)
 
bool operator< (LumiverseFloat &a, LumiverseFloat &b)
 
bool operator< (LumiverseFloat &a, float b)
 
bool operator< (float a, LumiverseFloat &b)
 
bool operator> (LumiverseFloat &a, LumiverseFloat &b)
 
bool operator> (LumiverseFloat &a, float b)
 
bool operator<= (LumiverseFloat &a, LumiverseFloat &b)
 
bool operator<= (LumiverseFloat &a, float b)
 
bool operator>= (LumiverseFloat &a, LumiverseFloat b)
 
bool operator>= (LumiverseFloat &a, float b)
 
LumiverseFloat operator+ (LumiverseFloat &lhs, float rhs)
 
LumiverseFloat operator+ (LumiverseFloat lhs, LumiverseFloat rhs)
 
LumiverseFloat operator- (LumiverseFloat &lhs, float rhs)
 
LumiverseFloat operator- (LumiverseFloat &lhs, LumiverseFloat &rhs)
 
LumiverseFloat operator* (LumiverseFloat &lhs, float rhs)
 
LumiverseFloat operator* (LumiverseFloat &lhs, LumiverseFloat &rhs)
 
LumiverseFloat operator/ (LumiverseFloat &lhs, float rhs)
 
LumiverseFloat operator/ (LumiverseFloat &lhs, LumiverseFloat &rhs)
 
bool operator== (LumiverseOrientation &a, LumiverseOrientation &b)
 
bool operator!= (LumiverseOrientation &a, LumiverseOrientation &b)
 
bool operator< (LumiverseOrientation &a, LumiverseOrientation &b)
 
bool operator> (LumiverseOrientation &a, LumiverseOrientation &b)
 
bool operator<= (LumiverseOrientation &a, LumiverseOrientation &b)
 
bool operator>= (LumiverseOrientation &a, LumiverseOrientation b)
 
LumiverseOrientation operator+ (LumiverseOrientation &lhs, float rhs)
 
LumiverseOrientation operator+ (LumiverseOrientation lhs, LumiverseOrientation rhs)
 
LumiverseOrientation operator- (LumiverseOrientation &lhs, float rhs)
 
LumiverseOrientation operator- (LumiverseOrientation &lhs, LumiverseOrientation &rhs)
 
LumiverseOrientation operator* (LumiverseOrientation &lhs, float rhs)
 
LumiverseOrientation operator* (LumiverseOrientation &lhs, LumiverseOrientation &rhs)
 
LumiverseOrientation operator/ (LumiverseOrientation &lhs, float rhs)
 
LumiverseOrientation operator/ (LumiverseOrientation &lhs, LumiverseOrientation &rhs)
 
bool operator== (ShowControl::Layer &lhs, ShowControl::Layer &rhs)
 Compares two layer priorities for equality. More...
 
bool operator!= (ShowControl::Layer &lhs, ShowControl::Layer &rhs)
 
bool operator< (ShowControl::Layer &lhs, ShowControl::Layer &rhs)
 Compares two layer priorities for order. More...
 
bool operator> (ShowControl::Layer &lhs, ShowControl::Layer &rhs)
 
bool operator<= (ShowControl::Layer &lhs, ShowControl::Layer &rhs)
 
bool operator>= (ShowControl::Layer &lhs, ShowControl::Layer &rhs)
 

Variables

static unordered_map< int, string > convTypeToString
 
static unordered_map< string, int > stringToConvType
 
static unordered_map< int, string > ColorModeToString
 Converts ColorMode to a string. More...
 
static unordered_map< string, ColorModeStringToColorMode
 Converts a string to ColorMode. More...
 
static unordered_map< int, Eigen::Matrix3d > RGBToXYZ
 RGB to XYZ matrices for color calculations. More...
 
static unordered_map< int, ReferenceWhite > ColorSpaceRefWhite
 Maps Color space to the Reference White it uses. More...
 
static unordered_map< int, Eigen::Vector3d > refWhites
 Reference White XYZ coordinates for standard illuminants. More...
 
static double CIE2012X [471] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.77E-03, 4.53E-03, 5.45E-03, 6.54E-03, 7.84E-03, 9.38E-03, 1.12E-02, 1.33E-02, 1.59E-02, 1.88E-02, 2.21E-02, 2.60E-02, 3.04E-02, 3.54E-02, 4.11E-02, 4.74E-02, 5.45E-02, 6.22E-02, 7.07E-02, 7.98E-02, 8.95E-02, 9.97E-02, 1.10E-01, 1.21E-01, 1.33E-01, 1.45E-01, 1.57E-01, 1.69E-01, 1.81E-01, 1.93E-01, 2.04E-01, 2.14E-01, 2.23E-01, 2.32E-01, 2.40E-01, 2.49E-01, 2.58E-01, 2.66E-01, 2.75E-01, 2.84E-01, 2.92E-01, 2.99E-01, 3.05E-01, 3.11E-01, 3.17E-01, 3.23E-01, 3.29E-01, 3.35E-01, 3.41E-01, 3.45E-01, 3.48E-01, 3.49E-01, 3.49E-01, 3.47E-01, 3.45E-01, 3.42E-01, 3.39E-01, 3.36E-01, 3.32E-01, 3.28E-01, 3.22E-01, 3.16E-01, 3.08E-01, 2.99E-01, 2.91E-01, 2.83E-01, 2.75E-01, 2.67E-01, 2.61E-01, 2.54E-01, 2.49E-01, 2.43E-01, 2.38E-01, 2.33E-01, 2.28E-01, 2.22E-01, 2.15E-01, 2.08E-01, 1.99E-01, 1.90E-01, 1.81E-01, 1.71E-01, 1.60E-01, 1.50E-01, 1.40E-01, 1.29E-01, 1.19E-01, 1.09E-01, 9.95E-02, 9.04E-02, 8.18E-02, 7.38E-02, 6.62E-02, 5.91E-02, 5.23E-02, 4.60E-02, 4.01E-02, 3.45E-02, 2.95E-02, 2.49E-02, 2.08E-02, 1.72E-02, 1.41E-02, 1.13E-02, 9.02E-03, 7.10E-03, 5.57E-03, 4.39E-03, 3.52E-03, 2.89E-03, 2.46E-03, 2.21E-03, 2.15E-03, 2.34E-03, 2.82E-03, 3.65E-03, 4.89E-03, 6.63E-03, 8.94E-03, 1.19E-02, 1.56E-02, 2.00E-02, 2.50E-02, 3.07E-02, 3.67E-02, 4.32E-02, 4.98E-02, 5.67E-02, 6.39E-02, 7.15E-02, 7.96E-02, 8.82E-02, 9.73E-02, 1.07E-01, 1.17E-01, 1.27E-01, 1.37E-01, 1.48E-01, 1.59E-01, 1.71E-01, 1.82E-01, 1.93E-01, 2.05E-01, 2.16E-01, 2.28E-01, 2.41E-01, 2.54E-01, 2.67E-01, 2.81E-01, 2.95E-01, 3.10E-01, 3.24E-01, 3.38E-01, 3.53E-01, 3.67E-01, 3.80E-01, 3.94E-01, 4.08E-01, 4.21E-01, 4.35E-01, 4.49E-01, 4.64E-01, 4.79E-01, 4.95E-01, 5.11E-01, 5.28E-01, 5.45E-01, 5.62E-01, 5.79E-01, 5.96E-01, 6.13E-01, 6.31E-01, 6.48E-01, 6.65E-01, 6.83E-01, 7.02E-01, 7.20E-01, 7.39E-01, 7.59E-01, 7.78E-01, 7.97E-01, 8.15E-01, 8.34E-01, 8.52E-01, 8.69E-01, 8.85E-01, 9.01E-01, 9.17E-01, 9.32E-01, 9.47E-01, 9.64E-01, 9.81E-01, 9.99E-01, 1.02E+00, 1.03E+00, 1.05E+00, 1.07E+00, 1.08E+00, 1.09E+00, 1.10E+00, 1.11E+00, 1.12E+00, 1.13E+00, 1.13E+00, 1.14E+00, 1.14E+00, 1.15E+00, 1.15E+00, 1.15E+00, 1.15E+00, 1.15E+00, 1.15E+00, 1.15E+00, 1.14E+00, 1.14E+00, 1.13E+00, 1.13E+00, 1.12E+00, 1.11E+00, 1.10E+00, 1.08E+00, 1.07E+00, 1.06E+00, 1.04E+00, 1.02E+00, 1.01E+00, 9.90E-01, 9.71E-01, 9.52E-01, 9.33E-01, 9.14E-01, 8.95E-01, 8.76E-01, 8.56E-01, 8.35E-01, 8.14E-01, 7.90E-01, 7.66E-01, 7.42E-01, 7.17E-01, 6.92E-01, 6.68E-01, 6.44E-01, 6.21E-01, 5.98E-01, 5.76E-01, 5.54E-01, 5.33E-01, 5.12E-01, 4.92E-01, 4.73E-01, 4.55E-01, 4.37E-01, 4.19E-01, 4.02E-01, 3.84E-01, 3.67E-01, 3.50E-01, 3.33E-01, 3.16E-01, 3.00E-01, 2.84E-01, 2.69E-01, 2.55E-01, 2.41E-01, 2.28E-01, 2.15E-01, 2.03E-01, 1.92E-01, 1.81E-01, 1.71E-01, 1.61E-01, 1.52E-01, 1.43E-01, 1.34E-01, 1.26E-01, 1.19E-01, 1.12E-01, 1.05E-01, 9.83E-02, 9.22E-02, 8.65E-02, 8.10E-02, 7.59E-02, 7.10E-02, 6.64E-02, 6.21E-02, 5.80E-02, 5.41E-02, 5.05E-02, 4.71E-02, 4.39E-02, 4.09E-02, 3.81E-02, 3.54E-02, 3.29E-02, 3.06E-02, 2.83E-02, 2.63E-02, 2.44E-02, 2.26E-02, 2.10E-02, 1.95E-02, 1.82E-02, 1.69E-02, 1.58E-02, 1.47E-02, 1.36E-02, 1.27E-02, 1.18E-02, 1.10E-02, 1.02E-02, 9.48E-03, 8.82E-03, 8.19E-03, 7.61E-03, 7.06E-03, 6.55E-03, 6.07E-03, 5.63E-03, 5.21E-03, 4.83E-03, 4.48E-03, 4.15E-03, 3.85E-03, 3.57E-03, 3.31E-03, 3.08E-03, 2.86E-03, 2.65E-03, 2.46E-03, 2.29E-03, 2.13E-03, 1.97E-03, 1.83E-03, 1.70E-03, 1.58E-03, 1.47E-03, 1.37E-03, 1.27E-03, 1.19E-03, 1.10E-03, 1.03E-03, 9.56E-04, 8.89E-04, 8.27E-04, 7.69E-04, 7.15E-04, 6.65E-04, 6.19E-04, 5.76E-04, 5.37E-04, 5.00E-04, 4.67E-04, 4.35E-04, 4.06E-04, 3.78E-04, 3.53E-04, 3.29E-04, 3.06E-04, 2.86E-04, 2.66E-04, 2.49E-04, 2.32E-04, 2.17E-04, 2.02E-04, 1.89E-04, 1.76E-04, 1.65E-04, 1.54E-04, 1.44E-04, 1.34E-04, 1.26E-04, 1.17E-04, 1.10E-04, 1.02E-04, 9.58E-05, 8.97E-05, 8.39E-05, 7.85E-05, 7.35E-05, 6.87E-05, 6.43E-05, 6.01E-05, 5.62E-05, 5.26E-05, 4.93E-05, 4.62E-05, 4.33E-05, 4.06E-05, 3.81E-05, 3.57E-05, 3.35E-05, 3.14E-05, 2.94E-05, 2.76E-05, 2.59E-05, 2.43E-05, 2.28E-05, 2.14E-05, 2.00E-05, 1.88E-05, 1.76E-05, 1.66E-05, 1.55E-05, 1.46E-05, 1.37E-05, 1.29E-05, 1.21E-05, 1.14E-05, 1.07E-05, 1.00E-05, 9.45E-06, 8.88E-06, 8.36E-06, 7.86E-06, 7.39E-06, 6.94E-06, 6.53E-06, 6.14E-06, 5.77E-06, 5.43E-06, 5.10E-06, 4.80E-06, 4.52E-06, 4.26E-06, 4.01E-06, 3.78E-06, 3.56E-06, 3.36E-06, 3.17E-06, 2.99E-06, 2.81E-06, 2.65E-06, 2.50E-06, 2.36E-06, 2.22E-06, 2.10E-06, 1.98E-06, 1.87E-06, 1.76E-06 }
 CMF for X coordinate using the proposed CIE 2012 CMF.
 
static double CIE2012Y [471] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.15E-04, 5.03E-04, 6.08E-04, 7.34E-04, 8.84E-04, 1.06E-03, 1.27E-03, 1.50E-03, 1.78E-03, 2.10E-03, 2.45E-03, 2.85E-03, 3.30E-03, 3.80E-03, 4.35E-03, 4.97E-03, 5.66E-03, 6.42E-03, 7.25E-03, 8.14E-03, 9.08E-03, 1.01E-02, 1.11E-02, 1.21E-02, 1.32E-02, 1.43E-02, 1.55E-02, 1.66E-02, 1.79E-02, 1.91E-02, 2.03E-02, 2.14E-02, 2.26E-02, 2.37E-02, 2.49E-02, 2.61E-02, 2.74E-02, 2.87E-02, 3.02E-02, 3.17E-02, 3.32E-02, 3.48E-02, 3.64E-02, 3.81E-02, 3.98E-02, 4.16E-02, 4.34E-02, 4.52E-02, 4.70E-02, 4.87E-02, 5.03E-02, 5.19E-02, 5.33E-02, 5.47E-02, 5.61E-02, 5.74E-02, 5.89E-02, 6.03E-02, 6.18E-02, 6.33E-02, 6.47E-02, 6.61E-02, 6.76E-02, 6.90E-02, 7.06E-02, 7.24E-02, 7.44E-02, 7.66E-02, 7.91E-02, 8.20E-02, 8.51E-02, 8.87E-02, 9.27E-02, 9.69E-02, 1.01E-01, 1.06E-01, 1.11E-01, 1.16E-01, 1.20E-01, 1.25E-01, 1.30E-01, 1.35E-01, 1.39E-01, 1.44E-01, 1.49E-01, 1.54E-01, 1.58E-01, 1.63E-01, 1.68E-01, 1.74E-01, 1.79E-01, 1.84E-01, 1.90E-01, 1.95E-01, 2.01E-01, 2.06E-01, 2.12E-01, 2.18E-01, 2.24E-01, 2.31E-01, 2.38E-01, 2.46E-01, 2.55E-01, 2.64E-01, 2.74E-01, 2.85E-01, 2.96E-01, 3.09E-01, 3.21E-01, 3.34E-01, 3.48E-01, 3.63E-01, 3.78E-01, 3.94E-01, 4.11E-01, 4.28E-01, 4.45E-01, 4.64E-01, 4.82E-01, 5.01E-01, 5.20E-01, 5.40E-01, 5.60E-01, 5.80E-01, 6.00E-01, 6.21E-01, 6.41E-01, 6.61E-01, 6.81E-01, 7.00E-01, 7.18E-01, 7.35E-01, 7.51E-01, 7.66E-01, 7.81E-01, 7.95E-01, 8.08E-01, 8.21E-01, 8.34E-01, 8.46E-01, 8.58E-01, 8.68E-01, 8.78E-01, 8.88E-01, 8.98E-01, 9.07E-01, 9.17E-01, 9.27E-01, 9.37E-01, 9.46E-01, 9.54E-01, 9.62E-01, 9.68E-01, 9.74E-01, 9.78E-01, 9.81E-01, 9.84E-01, 9.85E-01, 9.86E-01, 9.88E-01, 9.89E-01, 9.91E-01, 9.93E-01, 9.96E-01, 9.98E-01, 9.99E-01, 1.00E+00, 1.00E+00, 9.99E-01, 9.98E-01, 9.97E-01, 9.96E-01, 9.95E-01, 9.94E-01, 9.92E-01, 9.90E-01, 9.88E-01, 9.85E-01, 9.82E-01, 9.78E-01, 9.73E-01, 9.68E-01, 9.63E-01, 9.57E-01, 9.50E-01, 9.42E-01, 9.34E-01, 9.24E-01, 9.15E-01, 9.05E-01, 8.96E-01, 8.88E-01, 8.81E-01, 8.74E-01, 8.66E-01, 8.59E-01, 8.50E-01, 8.42E-01, 8.32E-01, 8.22E-01, 8.12E-01, 8.01E-01, 7.90E-01, 7.78E-01, 7.66E-01, 7.54E-01, 7.42E-01, 7.30E-01, 7.17E-01, 7.05E-01, 6.92E-01, 6.79E-01, 6.66E-01, 6.53E-01, 6.40E-01, 6.27E-01, 6.14E-01, 6.00E-01, 5.86E-01, 5.72E-01, 5.58E-01, 5.45E-01, 5.31E-01, 5.17E-01, 5.03E-01, 4.90E-01, 4.76E-01, 4.62E-01, 4.49E-01, 4.36E-01, 4.23E-01, 4.10E-01, 3.98E-01, 3.86E-01, 3.73E-01, 3.61E-01, 3.48E-01, 3.36E-01, 3.23E-01, 3.10E-01, 2.98E-01, 2.86E-01, 2.74E-01, 2.63E-01, 2.52E-01, 2.42E-01, 2.31E-01, 2.22E-01, 2.12E-01, 2.03E-01, 1.94E-01, 1.86E-01, 1.78E-01, 1.70E-01, 1.62E-01, 1.55E-01, 1.47E-01, 1.40E-01, 1.33E-01, 1.26E-01, 1.19E-01, 1.13E-01, 1.07E-01, 1.01E-01, 9.52E-02, 8.98E-02, 8.47E-02, 7.98E-02, 7.52E-02, 7.09E-02, 6.67E-02, 6.28E-02, 5.90E-02, 5.55E-02, 5.22E-02, 4.90E-02, 4.60E-02, 4.32E-02, 4.05E-02, 3.80E-02, 3.56E-02, 3.33E-02, 3.12E-02, 2.92E-02, 2.73E-02, 2.55E-02, 2.39E-02, 2.23E-02, 2.08E-02, 1.94E-02, 1.81E-02, 1.68E-02, 1.57E-02, 1.46E-02, 1.36E-02, 1.26E-02, 1.17E-02, 1.09E-02, 1.01E-02, 9.33E-03, 8.66E-03, 8.05E-03, 7.48E-03, 6.96E-03, 6.48E-03, 6.03E-03, 5.61E-03, 5.22E-03, 4.85E-03, 4.51E-03, 4.20E-03, 3.90E-03, 3.63E-03, 3.37E-03, 3.13E-03, 2.91E-03, 2.70E-03, 2.51E-03, 2.32E-03, 2.15E-03, 2.00E-03, 1.85E-03, 1.71E-03, 1.59E-03, 1.47E-03, 1.37E-03, 1.27E-03, 1.18E-03, 1.09E-03, 1.02E-03, 9.45E-04, 8.78E-04, 8.15E-04, 7.57E-04, 7.03E-04, 6.54E-04, 6.08E-04, 5.65E-04, 5.26E-04, 4.90E-04, 4.56E-04, 4.24E-04, 3.95E-04, 3.67E-04, 3.42E-04, 3.18E-04, 2.96E-04, 2.75E-04, 2.56E-04, 2.38E-04, 2.22E-04, 2.07E-04, 1.93E-04, 1.80E-04, 1.68E-04, 1.57E-04, 1.46E-04, 1.36E-04, 1.27E-04, 1.18E-04, 1.10E-04, 1.03E-04, 9.61E-05, 8.97E-05, 8.38E-05, 7.83E-05, 7.31E-05, 6.83E-05, 6.39E-05, 5.97E-05, 5.58E-05, 5.21E-05, 4.87E-05, 4.55E-05, 4.26E-05, 3.98E-05, 3.73E-05, 3.49E-05, 3.26E-05, 3.06E-05, 2.86E-05, 2.68E-05, 2.50E-05, 2.34E-05, 2.19E-05, 2.05E-05, 1.92E-05, 1.80E-05, 1.69E-05, 1.59E-05, 1.49E-05, 1.40E-05, 1.31E-05, 1.23E-05, 1.15E-05, 1.08E-05, 1.01E-05, 9.51E-06, 8.93E-06, 8.38E-06, 7.86E-06, 7.38E-06, 6.93E-06, 6.51E-06, 6.11E-06, 5.74E-06, 5.39E-06, 5.07E-06, 4.76E-06, 4.48E-06, 4.21E-06, 3.96E-06, 3.73E-06, 3.51E-06, 3.30E-06, 3.11E-06, 2.92E-06, 2.75E-06, 2.58E-06, 2.43E-06, 2.29E-06, 2.15E-06, 2.03E-06, 1.91E-06, 1.80E-06, 1.69E-06, 1.60E-06, 1.50E-06, 1.42E-06, 1.34E-06, 1.26E-06, 1.19E-06, 1.12E-06, 1.06E-06, 9.99E-07, 9.42E-07, 8.89E-07, 8.39E-07, 7.91E-07, 7.47E-07, 7.05E-07 }
 CMF for Y coordinate using the proposed CIE 2012 CMF.
 
static double CIE2012Z [471] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.85E-02, 2.22E-02, 2.67E-02, 3.21E-02, 3.85E-02, 4.61E-02, 5.51E-02, 6.58E-02, 7.82E-02, 9.28E-02, 1.10E-01, 1.29E-01, 1.51E-01, 1.76E-01, 2.05E-01, 2.37E-01, 2.73E-01, 3.12E-01, 3.55E-01, 4.01E-01, 4.51E-01, 5.03E-01, 5.59E-01, 6.16E-01, 6.76E-01, 7.38E-01, 8.01E-01, 8.66E-01, 9.30E-01, 9.92E-01, 1.05E+00, 1.11E+00, 1.16E+00, 1.21E+00, 1.26E+00, 1.31E+00, 1.35E+00, 1.41E+00, 1.46E+00, 1.51E+00, 1.55E+00, 1.60E+00, 1.64E+00, 1.67E+00, 1.71E+00, 1.75E+00, 1.79E+00, 1.83E+00, 1.86E+00, 1.89E+00, 1.92E+00, 1.93E+00, 1.93E+00, 1.93E+00, 1.93E+00, 1.92E+00, 1.91E+00, 1.90E+00, 1.89E+00, 1.87E+00, 1.85E+00, 1.82E+00, 1.78E+00, 1.74E+00, 1.70E+00, 1.66E+00, 1.63E+00, 1.60E+00, 1.57E+00, 1.54E+00, 1.52E+00, 1.50E+00, 1.49E+00, 1.47E+00, 1.45E+00, 1.43E+00, 1.40E+00, 1.37E+00, 1.33E+00, 1.29E+00, 1.25E+00, 1.20E+00, 1.15E+00, 1.10E+00, 1.05E+00, 9.99E-01, 9.47E-01, 8.97E-01, 8.47E-01, 8.00E-01, 7.55E-01, 7.13E-01, 6.73E-01, 6.34E-01, 5.97E-01, 5.62E-01, 5.27E-01, 4.95E-01, 4.64E-01, 4.36E-01, 4.10E-01, 3.86E-01, 3.65E-01, 3.45E-01, 3.27E-01, 3.11E-01, 2.95E-01, 2.80E-01, 2.65E-01, 2.51E-01, 2.38E-01, 2.24E-01, 2.11E-01, 1.98E-01, 1.85E-01, 1.72E-01, 1.60E-01, 1.48E-01, 1.37E-01, 1.27E-01, 1.18E-01, 1.09E-01, 1.02E-01, 9.53E-02, 8.89E-02, 8.28E-02, 7.70E-02, 7.14E-02, 6.62E-02, 6.12E-02, 5.65E-02, 5.22E-02, 4.81E-02, 4.43E-02, 4.08E-02, 3.75E-02, 3.45E-02, 3.16E-02, 2.90E-02, 2.66E-02, 2.44E-02, 2.23E-02, 2.05E-02, 1.87E-02, 1.71E-02, 1.57E-02, 1.43E-02, 1.30E-02, 1.19E-02, 1.08E-02, 9.85E-03, 8.96E-03, 8.15E-03, 7.42E-03, 6.74E-03, 6.13E-03, 5.57E-03, 5.06E-03, 4.60E-03, 4.18E-03, 3.79E-03, 3.44E-03, 3.12E-03, 2.83E-03, 2.57E-03, 2.33E-03, 2.11E-03, 1.92E-03, 1.74E-03, 1.58E-03, 1.43E-03, 1.30E-03, 1.18E-03, 1.07E-03, 9.72E-04, 8.82E-04, 8.01E-04, 7.27E-04, 6.61E-04, 6.00E-04, 5.45E-04, 4.95E-04, 4.50E-04, 4.09E-04, 3.72E-04, 3.39E-04, 3.08E-04, 2.80E-04, 2.55E-04, 2.32E-04, 2.12E-04, 1.93E-04, 1.76E-04, 1.60E-04, 1.46E-04, 1.34E-04, 1.22E-04, 1.11E-04, 1.02E-04, 9.29E-05, 8.49E-05, 7.77E-05, 7.11E-05, 6.51E-05, 5.96E-05, 5.46E-05, 5.01E-05, 4.59E-05, 4.21E-05, 3.87E-05, 3.55E-05, 3.26E-05, 3.00E-05, 2.76E-05, 2.54E-05, 2.33E-05, 2.15E-05, 1.98E-05, 1.83E-05, 1.68E-05, 1.55E-05, 1.44E-05, 1.33E-05, 1.23E-05, 1.13E-05, 1.05E-05, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00 }
 CMF for Z coordinate using the proposed CIE 2012 CMF.
 
static double CIE1964X [471] = { 1.222E-07, 1.85138E-07, 2.7883E-07, 4.1747E-07, 6.2133E-07, 9.1927E-07, 1.35198E-06, 1.97654E-06, 2.8725E-06, 4.1495E-06, 5.9586E-06, 8.5056E-06, 1.20686E-05, 1.70226E-05, 0.000023868, 0.000033266, 0.000046087, 0.000063472, 0.000086892, 0.000118246, 0.000159952, 0.00021508, 0.00028749, 0.00038199, 0.00050455, 0.00066244, 0.0008645, 0.0011215, 0.00144616, 0.00185359, 0.0023616, 0.0029906, 0.0037645, 0.0047102, 0.0058581, 0.0072423, 0.0088996, 0.0108709, 0.0131989, 0.0159292, 0.0191097, 0.022788, 0.027011, 0.031829, 0.037278, 0.0434, 0.050223, 0.057764, 0.066038, 0.075033, 0.084736, 0.095041, 0.105836, 0.117066, 0.128682, 0.140638, 0.152893, 0.165416, 0.178191, 0.191214, 0.204492, 0.21765, 0.230267, 0.242311, 0.253793, 0.264737, 0.275195, 0.285301, 0.295143, 0.304869, 0.314679, 0.324355, 0.33357, 0.342243, 0.350312, 0.357719, 0.364482, 0.370493, 0.375727, 0.380158, 0.383734, 0.386327, 0.387858, 0.388396, 0.387978, 0.386726, 0.384696, 0.382006, 0.378709, 0.374915, 0.370702, 0.366089, 0.361045, 0.355518, 0.349486, 0.342957, 0.335893, 0.328284, 0.32015, 0.311475, 0.302273, 0.292858, 0.283502, 0.274044, 0.264263, 0.254085, 0.243392, 0.232187, 0.220488, 0.208198, 0.195618, 0.183034, 0.170222, 0.157348, 0.14465, 0.132349, 0.120584, 0.109456, 0.099042, 0.089388, 0.080507, 0.072034, 0.06371, 0.055694, 0.048117, 0.041072, 0.034642, 0.028896, 0.023876, 0.019628, 0.016172, 0.0133, 0.010759, 0.008542, 0.006661, 0.005132, 0.003982, 0.003239, 0.002934, 0.003114, 0.003816, 0.005095, 0.006936, 0.009299, 0.012147, 0.015444, 0.019156, 0.02325, 0.02769, 0.032444, 0.037465, 0.042956, 0.049114, 0.05592, 0.063349, 0.071358, 0.079901, 0.088909, 0.098293, 0.107949, 0.117749, 0.127839, 0.13845, 0.149516, 0.161041, 0.172953, 0.185209, 0.197755, 0.210538, 0.22346, 0.236491, 0.249633, 0.262972, 0.276515, 0.290269, 0.304213, 0.318361, 0.332705, 0.347232, 0.361926, 0.376772, 0.391683, 0.406594, 0.421539, 0.436517, 0.451584, 0.466782, 0.482147, 0.497738, 0.513606, 0.529826, 0.54644, 0.563426, 0.580726, 0.59829, 0.616053, 0.633948, 0.651901, 0.669824, 0.687632, 0.705224, 0.722773, 0.740483, 0.758273, 0.776083, 0.793832, 0.811436, 0.828822, 0.845879, 0.862525, 0.878655, 0.894208, 0.909206, 0.923672, 0.937638, 0.951162, 0.964283, 0.977068, 0.98959, 1.00191, 1.01416, 1.0265, 1.0388, 1.051, 1.0629, 1.0743, 1.0852, 1.0952, 1.1042, 1.112, 1.11852, 1.1238, 1.128, 1.1311, 1.1332, 1.1343, 1.1343, 1.1333, 1.1312, 1.1281, 1.12399, 1.1189, 1.1129, 1.1059, 1.098, 1.0891, 1.0792, 1.0684, 1.0567, 1.044, 1.03048, 1.016, 1.0008, 0.98479, 0.96808, 0.95074, 0.9328, 0.91434, 0.89539, 0.87603, 0.856297, 0.83635, 0.81629, 0.79605, 0.77561, 0.75493, 0.73399, 0.71278, 0.69129, 0.66952, 0.647467, 0.62511, 0.60252, 0.57989, 0.55737, 0.53511, 0.51324, 0.49186, 0.47108, 0.45096, 0.431567, 0.41287, 0.39475, 0.37721, 0.36019, 0.34369, 0.32769, 0.31217, 0.29711, 0.2825, 0.268329, 0.25459, 0.2413, 0.22848, 0.21614, 0.2043, 0.19295, 0.18211, 0.17177, 0.16192, 0.152568, 0.14367, 0.1352, 0.12713, 0.11948, 0.11221, 0.10531, 0.098786, 0.09261, 0.086773, 0.0812606, 0.076048, 0.071114, 0.066454, 0.062062, 0.05793, 0.05405, 0.050412, 0.047006, 0.043823, 0.0408508, 0.038072, 0.035468, 0.033031, 0.030753, 0.028623, 0.026635, 0.024781, 0.023052, 0.021441, 0.0199413, 0.018544, 0.017241, 0.016027, 0.014896, 0.013842, 0.012862, 0.011949, 0.0111, 0.010311, 0.00957688, 0.008894, 0.0082581, 0.0076664, 0.0071163, 0.0066052, 0.0061306, 0.0056903, 0.0052819, 0.0049033, 0.00455263, 0.0042275, 0.0039258, 0.0036457, 0.0033859, 0.0031447, 0.0029208, 0.002713, 0.0025202, 0.0023411, 0.00217496, 0.0020206, 0.0018773, 0.0017441, 0.0016205, 0.0015057, 0.0013992, 0.0013004, 0.0012087, 0.0011236, 0.00104476, 0.00097156, 0.0009036, 0.00084048, 0.00078187, 0.00072745, 0.0006769, 0.00062996, 0.00058637, 0.00054587, 0.000508258, 0.0004733, 0.0004408, 0.00041058, 0.00038249, 0.00035638, 0.00033211, 0.00030955, 0.00028858, 0.00026909, 0.000250969, 0.00023413, 0.00021847, 0.00020391, 0.00019035, 0.00017773, 0.00016597, 0.00015502, 0.0001448, 0.00013528, 0.00012639, 0.0001181, 0.00011037, 0.00010315, 0.000096427, 0.000090151, 0.000084294, 0.00007883, 0.000073729, 0.000068969, 6.45258E-05, 0.000060376, 0.0000565, 0.00005288, 0.000049498, 0.000046339, 0.000043389, 0.000040634, 0.00003806, 0.000035657, 3.34117E-05, 0.000031315, 0.000029355, 0.000027524, 0.000025811, 0.000024209, 0.000022711, 0.000021308, 0.000019994, 0.000018764, 1.76115E-05, 0.000016532, 0.000015521, 0.000014574, 0.000013686, 0.000012855, 0.000012075, 0.000011345, 0.000010659, 0.000010017, 9.41363E-06, 8.8479E-06, 8.3171E-06, 0.000007819, 7.3516E-06, 0.000006913, 6.5015E-06, 6.1153E-06, 5.7529E-06, 5.4127E-06, 5.09347E-06, 4.7938E-06, 4.5125E-06, 4.2483E-06, 4.0002E-06, 3.7671E-06, 0.000003548, 3.3421E-06, 3.1485E-06, 2.9665E-06, 2.79531E-06, 2.6345E-06, 2.4834E-06, 2.3414E-06, 2.2078E-06, 0.000002082, 1.9636E-06, 1.8519E-06, 1.7465E-06, 1.6471E-06, 1.55314E-06 }
 CMF for X coordinate using the CIE 1964 CMF.
 
static double CIE1964Y [471] = { 1.3398E-08, 2.0294E-08, 3.056E-08, 4.574E-08, 6.805E-08, 1.0065E-07, 1.4798E-07, 2.1627E-07, 3.142E-07, 4.537E-07, 6.511E-07, 9.288E-07, 1.3175E-06, 1.8572E-06, 0.000002602, 0.000003625, 0.000005019, 0.000006907, 0.000009449, 0.000012848, 0.000017364, 0.000023327, 0.00003115, 0.00004135, 0.00005456, 0.00007156, 0.0000933, 0.00012087, 0.00015564, 0.0001992, 0.0002534, 0.0003202, 0.0004024, 0.0005023, 0.0006232, 0.0007685, 0.0009417, 0.0011478, 0.0013903, 0.001674, 0.0020044, 0.002386, 0.002822, 0.003319, 0.00388, 0.004509, 0.005209, 0.005985, 0.006833, 0.007757, 0.008756, 0.009816, 0.010918, 0.012058, 0.013237, 0.014456, 0.015717, 0.017025, 0.018399, 0.019848, 0.021391, 0.022992, 0.024598, 0.026213, 0.027841, 0.029497, 0.031195, 0.032927, 0.034738, 0.036654, 0.038676, 0.040792, 0.042946, 0.045114, 0.047333, 0.049602, 0.051934, 0.054337, 0.056822, 0.059399, 0.062077, 0.064737, 0.067285, 0.069764, 0.072218, 0.074704, 0.077272, 0.079979, 0.082874, 0.086, 0.089456, 0.092947, 0.096275, 0.099535, 0.102829, 0.106256, 0.109901, 0.113835, 0.118167, 0.122932, 0.128201, 0.133457, 0.138323, 0.143042, 0.147787, 0.152761, 0.158102, 0.163941, 0.170362, 0.177425, 0.18519, 0.193025, 0.200313, 0.207156, 0.213644, 0.21994, 0.22617, 0.232467, 0.239025, 0.245997, 0.253589, 0.261876, 0.270643, 0.279645, 0.288694, 0.297665, 0.306469, 0.315035, 0.323335, 0.331366, 0.339133, 0.34786, 0.358326, 0.370001, 0.382464, 0.395379, 0.408482, 0.421588, 0.434619, 0.447601, 0.460777, 0.47434, 0.4882, 0.50234, 0.51674, 0.53136, 0.54619, 0.56118, 0.57629, 0.5915, 0.606741, 0.62215, 0.63783, 0.65371, 0.66968, 0.68566, 0.70155, 0.71723, 0.73257, 0.74746, 0.761757, 0.77534, 0.78822, 0.80046, 0.81214, 0.82333, 0.83412, 0.8446, 0.85487, 0.86504, 0.875211, 0.88537, 0.89537, 0.90515, 0.91465, 0.92381, 0.93255, 0.94081, 0.94852, 0.9556, 0.961988, 0.96754, 0.97223, 0.97617, 0.97946, 0.9822, 0.98452, 0.98652, 0.98832, 0.99002, 0.991761, 0.99353, 0.99523, 0.99677, 0.99809, 0.99911, 0.99977, 1, 0.99971, 0.99885, 0.99734, 0.99526, 0.99274, 0.98975, 0.9863, 0.98238, 0.97798, 0.97311, 0.96774, 0.96189, 0.955552, 0.948601, 0.940981, 0.932798, 0.924158, 0.915175, 0.905954, 0.896608, 0.887249, 0.877986, 0.868934, 0.860164, 0.851519, 0.842963, 0.834393, 0.825623, 0.816764, 0.807544, 0.797947, 0.787893, 0.777405, 0.76649, 0.755309, 0.743845, 0.73219, 0.720353, 0.708281, 0.696055, 0.683621, 0.671048, 0.658341, 0.645545, 0.632718, 0.619815, 0.606887, 0.593878, 0.580781, 0.567653, 0.55449, 0.541228, 0.527963, 0.514634, 0.501363, 0.488124, 0.474935, 0.461834, 0.448823, 0.435917, 0.423153, 0.410526, 0.398057, 0.385835, 0.373951, 0.362311, 0.350863, 0.339554, 0.328309, 0.317118, 0.305936, 0.294737, 0.283493, 0.272222, 0.26099, 0.249877, 0.238946, 0.228254, 0.217853, 0.20778, 0.198072, 0.188748, 0.179828, 0.171285, 0.163059, 0.155151, 0.147535, 0.140211, 0.13317, 0.1264, 0.119892, 0.11364, 0.107633, 0.10187, 0.096347, 0.091063, 0.08601, 0.081187, 0.076583, 0.072198, 0.068024, 0.064052, 0.060281, 0.056697, 0.053292, 0.050059, 0.046998, 0.044096, 0.041345, 0.0387507, 0.0362978, 0.0339832, 0.0318004, 0.0297395, 0.0277918, 0.0259551, 0.0242263, 0.0226017, 0.0210779, 0.0196505, 0.0183153, 0.0170686, 0.0159051, 0.0148183, 0.0138008, 0.0128495, 0.0119607, 0.0111303, 0.0103555, 0.0096332, 0.0089599, 0.0083324, 0.0077488, 0.0072046, 0.0066975, 0.0062251, 0.005785, 0.0053751, 0.0049941, 0.0046392, 0.0043093, 0.0040028, 0.00371774, 0.00345262, 0.00320583, 0.00297623, 0.00276281, 0.00256456, 0.00238048, 0.00220971, 0.00205132, 0.00190449, 0.00176847, 0.00164236, 0.00152535, 0.00141672, 0.00131595, 0.00122239, 0.00113555, 0.00105494, 0.00098014, 0.00091066, 0.00084619, 0.00078629, 0.00073068, 0.00067899, 0.00063101, 0.00058644, 0.00054511, 0.00050672, 0.00047111, 0.00043805, 0.00040741, 0.000378962, 0.000352543, 0.000328001, 0.000305208, 0.000284041, 0.000264375, 0.000246109, 0.000229143, 0.000213376, 0.00019873, 0.000185115, 0.000172454, 0.000160678, 0.00014973, 0.00013955, 0.000130086, 0.00012129, 0.000113106, 0.000105501, 0.000098428, 0.000091853, 0.000085738, 0.000080048, 0.000074751, 0.000069819, 0.000065222, 0.000060939, 0.000056942, 0.000053217, 0.000049737, 0.000046491, 0.000043464, 0.000040635, 0.000038, 3.55405E-05, 3.32448E-05, 3.11006E-05, 0.000029099, 2.72307E-05, 0.000025486, 2.38561E-05, 2.23332E-05, 2.09104E-05, 1.95808E-05, 1.83384E-05, 1.71777E-05, 1.60934E-05, 0.00001508, 1.41336E-05, 0.000013249, 1.24226E-05, 1.16499E-05, 1.09277E-05, 1.02519E-05, 9.6196E-06, 9.0281E-06, 0.000008474, 7.9548E-06, 7.4686E-06, 7.0128E-06, 6.5858E-06, 6.1857E-06, 5.8107E-06, 0.000005459, 5.1298E-06, 4.8206E-06, 4.5312E-06, 4.2591E-06, 4.0042E-06, 3.76473E-06, 3.53995E-06, 3.32914E-06, 3.13115E-06, 2.94529E-06, 2.77081E-06, 2.60705E-06, 2.45329E-06, 2.30894E-06, 2.17338E-06, 2.04613E-06, 1.92662E-06, 1.8144E-06, 1.70895E-06, 1.60988E-06, 1.51677E-06, 1.42921E-06, 1.34686E-06, 1.26945E-06, 1.19662E-06, 1.12809E-06, 1.06368E-06, 1.00313E-06, 9.4622E-07, 8.9263E-07, 8.4216E-07, 7.9464E-07, 7.4978E-07, 7.0744E-07, 6.6748E-07, 6.297E-07 }
 CMF for Y coordinate using the CIE 1964 CMF.
 
static double CIE1964Z [471] = { 5.35027E-07, 8.1072E-07, 1.2212E-06, 1.8287E-06, 2.7222E-06, 4.0283E-06, 5.9257E-06, 8.6651E-06, 0.000012596, 0.000018201, 2.61437E-05, 0.00003733, 0.000052987, 0.000074764, 0.00010487, 0.00014622, 0.00020266, 0.00027923, 0.00038245, 0.00052072, 0.000704776, 0.00094823, 0.0012682, 0.0016861, 0.0022285, 0.0029278, 0.0038237, 0.0049642, 0.0064067, 0.0082193, 0.0104822, 0.013289, 0.016747, 0.02098, 0.026127, 0.032344, 0.039802, 0.048691, 0.05921, 0.071576, 0.0860109, 0.10274, 0.122, 0.14402, 0.16899, 0.19712, 0.22857, 0.26347, 0.3019, 0.34387, 0.389366, 0.43797, 0.48922, 0.5429, 0.59881, 0.65676, 0.71658, 0.77812, 0.84131, 0.90611, 0.972542, 1.0389, 1.1031, 1.1651, 1.2249, 1.2825, 1.3382, 1.3926, 1.4461, 1.4994, 1.55348, 1.6072, 1.6589, 1.7082, 1.7548, 1.7985, 1.8392, 1.8766, 1.9105, 1.9408, 1.96728, 1.9891, 2.0057, 2.0174, 2.0244, 2.0273, 2.0264, 2.0223, 2.0153, 2.006, 1.9948, 1.9814, 1.9653, 1.9464, 1.9248, 1.9007, 1.8741, 1.8451, 1.8139, 1.7806, 1.74537, 1.7091, 1.6723, 1.6347, 1.5956, 1.5549, 1.5122, 1.4673, 1.4199, 1.37, 1.31756, 1.2624, 1.205, 1.1466, 1.088, 1.0302, 0.97383, 0.91943, 0.86746, 0.81828, 0.772125, 0.72829, 0.68604, 0.64553, 0.60685, 0.57006, 0.53522, 0.50234, 0.4714, 0.44239, 0.415254, 0.390024, 0.366399, 0.344015, 0.322689, 0.302356, 0.283036, 0.264816, 0.247848, 0.232318, 0.218502, 0.205851, 0.193596, 0.181736, 0.170281, 0.159249, 0.148673, 0.138609, 0.129096, 0.120215, 0.112044, 0.10471, 0.098196, 0.092361, 0.087088, 0.082248, 0.077744, 0.073456, 0.069268, 0.06506, 0.060709, 0.056457, 0.052609, 0.049122, 0.045954, 0.04305, 0.040368, 0.037839, 0.035384, 0.032949, 0.030451, 0.028029, 0.025862, 0.02392, 0.022174, 0.020584, 0.019127, 0.01774, 0.016403, 0.015064, 0.013676, 0.012308, 0.011056, 0.009915, 0.008872, 0.007918, 0.00703, 0.006223, 0.005453, 0.004714, 0.003988, 0.003289, 0.002646, 0.002063, 0.001533, 0.001091, 0.000711, 0.000407, 0.000184, 0.000047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
 CMF for Z coordinate using the CIE 1964 CMF.
 
static unordered_map< string, vector< double > > gelsCoarse
 A list of gels and samples of their transmission rates at 20nm intervals starting at 360nm and ending at 740nm. More...
 
static unordered_map< string, double > gelsTrans
 A list of gel transmission percentages.
 
static unordered_map< int, string > oriToString
 Converts orientation to string. More...
 
static unordered_map< string, int > stringToOri
 

Detailed Description

Contains all core Lumiverse functions and variables.

Enumeration Type Documentation

Selects the color mode for a LumiverseColor.

Enumerator
ADDITIVE 

Color represents a LED source light.

SUBTRACTIVE 

Color represents a filter system.

BASIC_RGB 

Color has no basis vectors and assumes a default RGB valued color. Uses the sRGB color space.

BASIC_CMY 

Color has no basis vectors and assumes a default CMY subtractive system.

Enumeration maps to a function that performs the appropriate conversion from Lumiverse value to DMX value.

Enumerator
FLOAT_TO_SINGLE 

Converts a floating point to a single-byte DMX value (0-255)

FLOAT_TO_FINE 

Converts a floating point to a double-byte DMX value (0-65535)

ENUM 

Converts a LumiverseEnum to a single-byte DMX value (0-255)

RGB_REPEAT2 

Converts a floating point value to a single-byte DMX value and outputs it twice offset by 3.

RGB_REPEAT3 

Converts a floating point value to a single-byte DMX value and outputs it three times offset by 3.

RGB_REPEAT4 

Converts a floating point value to a single-byte DMX value and outputs it four times offset by 3.

COLOR_RGB 

Converts a color with RGB parameters to single-byte (0-255) DMX parameters.

COLOR_RGBW 

Converts a color with RGBW parameters to singly-byte (0-255) DMX parameters.

COLOR_LUSTRPLUS 

Converts a color with RWAGCBI parameters (in that order) to DMX paramters.

ORI_TO_FINE 

Converts an orientation to a double-byte DMX value (0-65535)

Log detail level.

Enumerator
LDEBUG 

Debugging info

INFO 

Status messages

WARN 

Warnings

ERR 

Recoverable Errors

CRITICAL 

Potentially fatal errors / more severe errors

FATAL 

Program's gonna crash now / something really bad happened.

Selects a RGB color space to use in color conversion functions.

Enumerator
sRGB 

sRGB color space. D65 reference white. See http://en.wikipedia.org/wiki/SRGB

Function Documentation

bool Lumiverse::operator< ( ShowControl::Layer lhs,
ShowControl::Layer rhs 
)
inline

Compares two layer priorities for order.

Returns
True if the priority of lhs is lower than the priority for rhs.
bool Lumiverse::operator< ( LumiverseEnum a,
LumiverseEnum b 
)
inline

Compares the numeric values of two enumerations.

While it doesn't make too much sense to compare enums, you can compare where they are in their numeric range. That's what that </> ops will compare

bool Lumiverse::operator<= ( LumiverseEnum a,
LumiverseEnum b 
)
inline
bool Lumiverse::operator== ( ShowControl::Layer lhs,
ShowControl::Layer rhs 
)
inline

Compares two layer priorities for equality.

Returns
True if the priorities of the two layers are equal.
bool Lumiverse::operator== ( LumiverseEnum a,
LumiverseEnum b 
)
inline

Compares two enums for equality.

Tests if the current options are the same and if the current tweak values are the same. Does not check to see if the two enums have the same options.

bool Lumiverse::operator> ( LumiverseEnum a,
LumiverseEnum b 
)
inline
bool Lumiverse::operator>= ( LumiverseEnum a,
LumiverseEnum b 
)
inline
template<size_t D, typename T >
static bool Lumiverse::parseArnoldParameter ( const std::string &  value,
ArnoldParameterVector< D, T > &  vector 
)
static

Parses a formatted string into a ArnoldParameterVector instance.

Parameters
valueA formatted string.
vectorThe returned vector.
Returns
If there is error.

Variable Documentation

unordered_map<int, string> Lumiverse::ColorModeToString
static
Initial value:
=
{
{ ADDITIVE, "ADDITIVE" }, { SUBTRACTIVE, "SUBTRACTIVE" },
{ BASIC_RGB, "BASIC_RGB" }, { BASIC_CMY, "BASIC_CMY" }
}
Definition: LumiverseColor.h:27
Definition: LumiverseColor.h:24
Definition: LumiverseColor.h:25
Definition: LumiverseColor.h:26

Converts ColorMode to a string.

unordered_map<int, ReferenceWhite> Lumiverse::ColorSpaceRefWhite
static
Initial value:
=
{
{ sRGB, D65 }
}
Definition: LumiverseColorLib.h:30

Maps Color space to the Reference White it uses.

unordered_map<int, string> Lumiverse::convTypeToString
static
Initial value:
= {
{ FLOAT_TO_SINGLE, "FLOAT_TO_SINGLE" }, { FLOAT_TO_FINE, "FLOAT_TO_FINE" },
{ ENUM, "ENUM" }, { RGB_REPEAT2, "RGB_REPEAT2" }, { RGB_REPEAT3, "RGB_REPEAT3" },
{ RGB_REPEAT4, "RGB_REPEAT4" }, { COLOR_RGB, "COLOR_RGB" }, { COLOR_RGBW, "COLOR_RGBW" },
{ ORI_TO_FINE, "ORI_TO_FINE" }, { COLOR_LUSTRPLUS, "COLOR_LUSTRPLUS" }
}
Definition: DMXDevicePatch.h:27
Definition: DMXDevicePatch.h:26
Definition: DMXDevicePatch.h:21
Definition: DMXDevicePatch.h:18
Definition: DMXDevicePatch.h:22
Definition: DMXDevicePatch.h:25
Definition: DMXDevicePatch.h:23
Definition: DMXDevicePatch.h:24
Definition: DMXDevicePatch.h:20
Definition: DMXDevicePatch.h:19
unordered_map<string, vector<double> > Lumiverse::gelsCoarse
static

A list of gels and samples of their transmission rates at 20nm intervals starting at 360nm and ending at 740nm.

Note: Values for Rosco filters are pulled directly from tables provided by Rosco. Lee filters are estimated based on my best reading of the provided graphs.

unordered_map<int, string> Lumiverse::oriToString
static
Initial value:
= {
{ DEGREE, "degree" }, { RADIAN, "radian" }
}

Converts orientation to string.

unordered_map<int, Eigen::Vector3d> Lumiverse::refWhites
static
Initial value:
=
{
{ D65, Eigen::Vector3d(95.047, 100.00, 108.883) },
{ D50, Eigen::Vector3d(96.4212, 100.0, 82.5188) },
{ A, Eigen::Vector3d(109.844, 100.0, 35.55976) }
}

Reference White XYZ coordinates for standard illuminants.

unordered_map<int, Eigen::Matrix3d> Lumiverse::RGBToXYZ
static
Initial value:
=
{
{ sRGB, (Eigen::Matrix3d() << 0.4124564, 0.3575761, 0.1804375,
0.2126729, 0.7151522, 0.0721750,
0.0193339, 0.1191920, 0.9503041).finished() },
{ sharpRGB, (Eigen::Matrix3d() << 0.8156, 0.0472, 0.1372,
0.3791, 0.5769, 0.0440,
-0.0123, 0.0167, 0.9955).finished() }
}
Definition: LumiverseColorLib.h:30

RGB to XYZ matrices for color calculations.

unordered_map<string, ColorMode> Lumiverse::StringToColorMode
static
Initial value:
=
{
{ "ADDITIVE", ADDITIVE }, { "SUBTRACTIVE", SUBTRACTIVE },
{ "BASIC_RGB", BASIC_RGB }, { "BASIC_CMY", BASIC_CMY }
}
Definition: LumiverseColor.h:27
Definition: LumiverseColor.h:24
Definition: LumiverseColor.h:25
Definition: LumiverseColor.h:26

Converts a string to ColorMode.

unordered_map<string, int> Lumiverse::stringToConvType
static
Initial value:
= {
{ "FLOAT_TO_SINGLE", FLOAT_TO_SINGLE }, { "FLOAT_TO_FINE", FLOAT_TO_FINE },
{ "ENUM", ENUM }, { "RGB_REPEAT2", RGB_REPEAT2 }, { "RGB_REPEAT3", RGB_REPEAT3 },
{ "RGB_REPEAT4", RGB_REPEAT4 }, { "COLOR_RGB", COLOR_RGB }, { "COLOR_RGBW", COLOR_RGBW },
{ "ORI_TO_FINE", ORI_TO_FINE }, { "COLOR_LUSTRPLUS", COLOR_LUSTRPLUS }
}
Definition: DMXDevicePatch.h:27
Definition: DMXDevicePatch.h:26
Definition: DMXDevicePatch.h:21
Definition: DMXDevicePatch.h:18
Definition: DMXDevicePatch.h:22
Definition: DMXDevicePatch.h:25
Definition: DMXDevicePatch.h:23
Definition: DMXDevicePatch.h:24
Definition: DMXDevicePatch.h:20
Definition: DMXDevicePatch.h:19
unordered_map<string, int> Lumiverse::stringToOri
static
Initial value:
= {
{ "degree", DEGREE }, { "radian", RADIAN }
}

Converts string to orientation.