MaterialX 1.39.4
Loading...
Searching...
No Matches
OcioColorManagementSystem.h
1//
2// Copyright Contributors to the MaterialX Project
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#ifndef MATERIALX_OCIO_COLOR_MANAGEMENT_SYSTEM_H
7#define MATERIALX_OCIO_COLOR_MANAGEMENT_SYSTEM_H
8
9#ifdef MATERIALX_BUILD_OCIO
10
13
15
17
18#include <map>
19
20MATERIALX_NAMESPACE_BEGIN
21
22// Opaque class to insulate from the full OCIO API
23class OcioColorManagementSystemImpl;
24
26using OcioColorManagementSystemPtr = std::shared_ptr<class OcioColorManagementSystem>;
27
30class MX_GENSHADER_API OcioColorManagementSystem : public DefaultColorManagementSystem
31{
32 public:
33 virtual ~OcioColorManagementSystem();
34
36 static OcioColorManagementSystemPtr createFromEnv(string target);
37
39 static OcioColorManagementSystemPtr createFromFile(const string& filename, string target);
40
42 static OcioColorManagementSystemPtr createFromBuiltinConfig(const string& configName, string target);
43
45 const string& getName() const override;
46
48 bool hasImplementation(const string& implName) const override;
49
51 ShaderNodeImplPtr createImplementation(const string& implName) const override;
52
54 string getGpuProcessorCode(const string& implName, const string& functionName) const;
55
57 static const string IMPL_PREFIX;
58
60 static const string OCIO_SOURCE_URI;
61
62 protected:
64 NodeDefPtr getNodeDef(const ColorSpaceTransform& transform) const override;
65
68 const char* getSupportedColorSpaceName(const char* colorSpace) const;
69
71 OcioColorManagementSystem(OcioColorManagementSystemImpl*);
72
73 private:
74 std::unique_ptr<OcioColorManagementSystemImpl> _impl;
75};
76
77MATERIALX_NAMESPACE_END
78
79#endif // MATERIALX_BUILD_OCIO
80
81#endif
Default color management system implementation.
Definition element subclasses.
shared_ptr< NodeDef > NodeDefPtr
A shared pointer to a NodeDef.
Definition Definition.h:32
shared_ptr< ShaderNodeImpl > ShaderNodeImplPtr
Shared pointer to a ShaderNodeImpl.
Definition Library.h:39
virtual bool hasImplementation(const string &) const
Returns true if the CMS can create a shader node implementation for a locally managed CMS transform.
Definition ColorManagementSystem.h:68
virtual ShaderNodeImplPtr createImplementation(const string &) const
Create an CMS node implementation for a locally managed transform.
Definition ColorManagementSystem.h:71
Class for a default color management system.
Definition DefaultColorManagementSystem.h:22
NodeDefPtr getNodeDef(const ColorSpaceTransform &transform) const override
Returns a nodedef for a given transform.
const string & getName() const override
Return the DefaultColorManagementSystem name.