Blender V4.3
COM_ConvertColorSpaceOperation.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2021 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6
7#include "BLI_string.h"
8
9namespace blender::compositor {
10
17
19{
20 this->settings_ = node_color_space;
21}
22
24{
25 if (BLI_strnlen(settings_->from_color_space, sizeof(settings_->from_color_space)) == 0 ||
26 BLI_strnlen(settings_->to_color_space, sizeof(settings_->to_color_space)) == 0)
27 {
28 return;
29 }
30
31 int in_colorspace_index = IMB_colormanagement_colorspace_get_named_index(
32 settings_->from_color_space);
33 int out_colorspace_index = IMB_colormanagement_colorspace_get_named_index(
34 settings_->to_color_space);
35
36 if (in_colorspace_index == 0 || out_colorspace_index == 0) {
37 return;
38 }
39
41 settings_->to_color_space);
42}
43
45 const rcti &area,
47{
48 for (BuffersIterator<float> it = output->iterate_with(inputs, area); !it.is_end(); ++it) {
49 copy_v4_v4(it.out, it.in(0));
50 }
51
52 if (color_processor_ != nullptr) {
53 output->apply_processor(*color_processor_, area);
54 }
55}
56
58{
59 if (color_processor_ != nullptr) {
60 IMB_colormanagement_processor_free(color_processor_);
61 }
62 this->color_processor_ = nullptr;
63}
64
65} // namespace blender::compositor
MINLINE void copy_v4_v4(float r[4], const float a[4])
int char char int int int int size_t BLI_strnlen(const char *str, size_t maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
Definition string.c:909
ColormanageProcessor * IMB_colormanagement_colorspace_processor_new(const char *from_colorspace, const char *to_colorspace)
int IMB_colormanagement_colorspace_get_named_index(const char *name)
void IMB_colormanagement_processor_free(ColormanageProcessor *cm_processor)
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void set_settings(NodeConvertColorSpace *node_color_space)
a MemoryBuffer contains access to the data
void add_output_socket(DataType datatype)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator