Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2022-01-10 10:57:53 +0300
committerJeroen Bakker <jeroen@blender.org>2022-01-10 10:59:00 +0300
commit6beaa297918b24de00d26886e981312b041748b0 (patch)
treec81515e9f1c9e65dbb789e56c1032624db167fca /source/blender/makesrna/intern/rna_nodetree.c
parenteb7333e772bd9313bf3530eb02e0d036563efe90 (diff)
Compositing Convert color space node
Compositor node to convert between color spaces. Conversion is skipped when converting between the same color spaces or to or from data spaces. Implementation done for tiled and full frame compositor. Reviewed By: Blendify, jbakker Differential Revision: https://developer.blender.org/D12481
Diffstat (limited to 'source/blender/makesrna/intern/rna_nodetree.c')
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 98de40ead93..d7da36295c1 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -52,6 +52,7 @@
#include "rna_internal.h"
#include "rna_internal_types.h"
+#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
@@ -4666,6 +4667,55 @@ bool rna_NodeSocketMaterial_default_value_poll(PointerRNA *UNUSED(ptr), PointerR
return ma->gp_style == NULL;
}
+static int rna_NodeConvertColorSpace_from_color_space_get(struct PointerRNA *ptr)
+{
+ bNode *node = (bNode *)ptr->data;
+ NodeConvertColorSpace *node_storage = node->storage;
+ return IMB_colormanagement_colorspace_get_named_index(node_storage->from_color_space);
+}
+
+static void rna_NodeConvertColorSpace_from_color_space_set(struct PointerRNA *ptr, int value)
+{
+ bNode *node = (bNode *)ptr->data;
+ NodeConvertColorSpace *node_storage = node->storage;
+ const char *name = IMB_colormanagement_colorspace_get_indexed_name(value);
+
+ if (name && name[0]) {
+ BLI_strncpy(node_storage->from_color_space, name, sizeof(node_storage->from_color_space));
+ }
+}
+static int rna_NodeConvertColorSpace_to_color_space_get(struct PointerRNA *ptr)
+{
+ bNode *node = (bNode *)ptr->data;
+ NodeConvertColorSpace *node_storage = node->storage;
+ return IMB_colormanagement_colorspace_get_named_index(node_storage->to_color_space);
+}
+
+static void rna_NodeConvertColorSpace_to_color_space_set(struct PointerRNA *ptr, int value)
+{
+ bNode *node = (bNode *)ptr->data;
+ NodeConvertColorSpace *node_storage = node->storage;
+ const char *name = IMB_colormanagement_colorspace_get_indexed_name(value);
+
+ if (name && name[0]) {
+ BLI_strncpy(node_storage->to_color_space, name, sizeof(node_storage->to_color_space));
+ }
+}
+
+static const EnumPropertyItem *rna_NodeConvertColorSpace_color_space_itemf(
+ bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
+{
+ EnumPropertyItem *items = NULL;
+ int totitem = 0;
+
+ IMB_colormanagement_colorspace_items_add(&items, &totitem);
+ RNA_enum_item_end(&items, &totitem);
+
+ *r_free = true;
+
+ return items;
+}
+
#else
static const EnumPropertyItem prop_image_layer_items[] = {
@@ -7313,6 +7363,42 @@ static void def_cmp_distance_matte(StructRNA *srna)
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
}
+static void def_cmp_convert_color_space(StructRNA *srna)
+{
+ PropertyRNA *prop;
+ RNA_def_struct_sdna_from(srna, "NodeConvertColorSpace", "storage");
+
+ static const EnumPropertyItem color_space_items[] = {
+ {0,
+ "NONE",
+ 0,
+ "None",
+ "Do not perform any color transform on load, treat colors as in scene linear space "
+ "already"},
+ {0, NULL, 0, NULL, NULL},
+ };
+
+ prop = RNA_def_property(srna, "from_color_space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_ENUM_NO_CONTEXT);
+ RNA_def_property_enum_items(prop, color_space_items);
+ RNA_def_property_enum_funcs(prop,
+ "rna_NodeConvertColorSpace_from_color_space_get",
+ "rna_NodeConvertColorSpace_from_color_space_set",
+ "rna_NodeConvertColorSpace_color_space_itemf");
+ RNA_def_property_ui_text(prop, "From", "Color space of the input image");
+ RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+ prop = RNA_def_property(srna, "to_color_space", PROP_ENUM, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_ENUM_NO_CONTEXT);
+ RNA_def_property_enum_items(prop, color_space_items);
+ RNA_def_property_enum_funcs(prop,
+ "rna_NodeConvertColorSpace_to_color_space_get",
+ "rna_NodeConvertColorSpace_to_color_space_set",
+ "rna_NodeConvertColorSpace_color_space_itemf");
+ RNA_def_property_ui_text(prop, "To", "Color space of the output image");
+ RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+}
+
static void def_cmp_color_spill(StructRNA *srna)
{
PropertyRNA *prop;