Add function to check nanoColor compatibility of a color space
Since nanoColor is a light weight version of OCIO, it will not support all color spaces. For example, color spaces that use a FileTransform won't be supported. Applications that want to create file formats that support nanoColor need a way of determining what level of interop is possible for a given color space. There are several possible scenarios:
- The color space is in a nanoColor built-in config, defined via a name string. A function is needed to quickly check if a color space is part of a built-in config without instantiating a built-in config.
- The color space may be serialized as a custom color space. This may depend on what level of custom color space capability is available in a given file format.
- The color space is nanoColor compatible but may not be serialized in the file format.
- The color space uses functionality not present in nanoColor (e.g. LUTs).
For scenario 1, the following signature is proposed:
bool builtinConfigHasColorSpace(const char* builtinConfigID, const ConstConfigRcPtr & config, const ConstColorSpaceRcPtr & cs);
For scenarios 2-4, a function is needed that will check against a series of profiles (for example, does the color space only involve a MatrixTransform, ExponentTransform, or ExponentWithLinearTransform).
bool Config::colorSpaceCompatibility(const ConstColorSpaceRcPtr & cs, CSProfileType colorSpaceProfile);
Examples of useful profiles might be:
- NanoColorCompatible
- MatrixExponentCompatible
- UsesFileTransforms
- UsesLUTs