7#if defined(WITH_OPENCOLORIO)
22LibOCIODisplay::LibOCIODisplay(
const int index,
const LibOCIOConfig &config) : config_(&config)
24 const OCIO_NAMESPACE::ConstConfigRcPtr &ocio_config = config.get_ocio_config();
28 name_ = ocio_config->getDisplay(index);
31 const int num_views = ocio_config->getNumViews(name_.c_str());
33 report_error(
"Invalid OpenColorIO configuration: negative number of views");
36 views_.reserve(num_views);
37 for (
const int view_index :
IndexRange(num_views)) {
38 const char *view_name = ocio_config->getView(name_.c_str(), view_index);
39 views_.append_as(view_index, view_name);
46 for (
const LibOCIOView &
view : views_) {
47 if (
view.name() == name) {
54int LibOCIODisplay::get_num_views()
const
59const View *LibOCIODisplay::get_view_by_index(
const int index)
const
61 if (index < 0 || index >= views_.size()) {
64 return &views_[index];
67const CPUProcessor *LibOCIODisplay::get_to_scene_linear_cpu_processor()
const
69 return to_scene_linear_cpu_processor_.get([&]() -> std::unique_ptr<CPUProcessor> {
70 DisplayParameters display_parameters;
71 display_parameters.from_colorspace = OCIO_NAMESPACE::ROLE_SCENE_LINEAR;
72 display_parameters.view = get_default_view()->name();
73 display_parameters.display = name_;
74 display_parameters.inverse =
true;
75 OCIO_NAMESPACE::ConstProcessorRcPtr ocio_processor = create_ocio_display_processor(
76 *config_, display_parameters);
77 if (!ocio_processor) {
81 OCIO_NAMESPACE::ConstCPUProcessorRcPtr ocio_cpu_processor =
82 ocio_processor->getDefaultCPUProcessor();
83 if (!ocio_cpu_processor) {
87 return std::make_unique<LibOCIOCPUProcessor>(ocio_cpu_processor);
91const CPUProcessor *LibOCIODisplay::get_from_scene_linear_cpu_processor()
const
93 return from_scene_linear_cpu_processor_.get([&]() -> std::unique_ptr<CPUProcessor> {
94 DisplayParameters display_parameters;
95 display_parameters.from_colorspace = OCIO_NAMESPACE::ROLE_SCENE_LINEAR;
96 display_parameters.view = get_default_view()->name();
97 display_parameters.display = name_;
98 OCIO_NAMESPACE::ConstProcessorRcPtr ocio_processor = create_ocio_display_processor(
99 *config_, display_parameters);
100 if (!ocio_processor) {
104 OCIO_NAMESPACE::ConstCPUProcessorRcPtr ocio_cpu_processor =
105 ocio_processor->getDefaultCPUProcessor();
106 if (!ocio_cpu_processor) {
110 return std::make_unique<LibOCIOCPUProcessor>(ocio_cpu_processor);
static void View(GHOST_IWindow *window, bool stereo, int eye=0)