Fix #135217: ColorManage Settings RNA paths incomplete/wrong
`ColorManagedDisplaySettings`, `ColorManagedViewSettings`,
`ColorManagedInputColorspaceSettings` were affected since these are used
from multiple places (Scene, File output nodes, ..).
Similar to how we are getting the path for `ImageFormatSettings` (which
pretty much has the distinction logic already), we can do so for the
ColorManage Settings as well (piggbacking on the already correct path to
the `ImageFormatSettings`.
With this, we can also remove these "known failures" from the test
introduced in 4032b853c3.
Pull Request: https://projects.blender.org/blender/blender/pulls/135238
This commit is contained in:
committed by
Philipp Oeser
parent
559d7575a6
commit
9855c11d2c
@@ -493,11 +493,6 @@ static void rna_ColorManagedDisplaySettings_display_device_update(Main *bmain,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> rna_ColorManagedDisplaySettings_path(const PointerRNA * /*ptr*/)
|
|
||||||
{
|
|
||||||
return "display_settings";
|
|
||||||
}
|
|
||||||
|
|
||||||
static int rna_ColorManagedViewSettings_view_transform_get(PointerRNA *ptr)
|
static int rna_ColorManagedViewSettings_view_transform_get(PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
ColorManagedViewSettings *view = (ColorManagedViewSettings *)ptr->data;
|
ColorManagedViewSettings *view = (ColorManagedViewSettings *)ptr->data;
|
||||||
@@ -587,11 +582,6 @@ static void rna_ColorManagedViewSettings_use_curves_set(PointerRNA *ptr, bool va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> rna_ColorManagedViewSettings_path(const PointerRNA * /*ptr*/)
|
|
||||||
{
|
|
||||||
return "view_settings";
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rna_ColorManagedViewSettings_whitepoint_get(PointerRNA *ptr, float value[3])
|
static void rna_ColorManagedViewSettings_whitepoint_get(PointerRNA *ptr, float value[3])
|
||||||
{
|
{
|
||||||
const ColorManagedViewSettings *view_settings = (ColorManagedViewSettings *)ptr->data;
|
const ColorManagedViewSettings *view_settings = (ColorManagedViewSettings *)ptr->data;
|
||||||
@@ -744,12 +734,6 @@ static std::optional<std::string> rna_ColorManagedSequencerColorspaceSettings_pa
|
|||||||
return "sequencer_colorspace_settings";
|
return "sequencer_colorspace_settings";
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> rna_ColorManagedInputColorspaceSettings_path(
|
|
||||||
const PointerRNA * /*ptr*/)
|
|
||||||
{
|
|
||||||
return "colorspace_settings";
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rna_ColorManagement_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
|
static void rna_ColorManagement_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
ID *id = ptr->owner_id;
|
ID *id = ptr->owner_id;
|
||||||
|
|||||||
@@ -391,6 +391,10 @@ std::optional<std::string> rna_Node_ImageUser_path(const PointerRNA *ptr);
|
|||||||
std::optional<std::string> rna_CameraBackgroundImage_image_or_movieclip_user_path(
|
std::optional<std::string> rna_CameraBackgroundImage_image_or_movieclip_user_path(
|
||||||
const PointerRNA *ptr);
|
const PointerRNA *ptr);
|
||||||
|
|
||||||
|
std::optional<std::string> rna_ColorManagedDisplaySettings_path(const PointerRNA *ptr);
|
||||||
|
std::optional<std::string> rna_ColorManagedViewSettings_path(const PointerRNA *ptr);
|
||||||
|
std::optional<std::string> rna_ColorManagedInputColorspaceSettings_path(const PointerRNA *ptr);
|
||||||
|
|
||||||
/* Node socket subtypes for group interface. */
|
/* Node socket subtypes for group interface. */
|
||||||
void rna_def_node_socket_interface_subtypes(BlenderRNA *brna);
|
void rna_def_node_socket_interface_subtypes(BlenderRNA *brna);
|
||||||
|
|
||||||
|
|||||||
@@ -1238,41 +1238,38 @@ static std::optional<std::string> rna_BakeSettings_path(const PointerRNA * /*ptr
|
|||||||
return "render.bake";
|
return "render.bake";
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> rna_ImageFormatSettings_path(const PointerRNA *ptr)
|
static std::optional<std::string> rna_ImageFormatSettings_path(
|
||||||
|
const PointerRNA *ptr, blender::FunctionRef<bool(ImageFormatData *)> match)
|
||||||
{
|
{
|
||||||
ImageFormatData *imf = (ImageFormatData *)ptr->data;
|
|
||||||
ID *id = ptr->owner_id;
|
ID *id = ptr->owner_id;
|
||||||
|
|
||||||
switch (GS(id->name)) {
|
switch (GS(id->name)) {
|
||||||
case ID_SCE: {
|
case ID_SCE: {
|
||||||
Scene *scene = (Scene *)id;
|
Scene *scene = (Scene *)id;
|
||||||
|
|
||||||
if (&scene->r.im_format == imf) {
|
if (match(&scene->r.im_format)) {
|
||||||
return "render.image_settings";
|
return "render.image_settings";
|
||||||
}
|
}
|
||||||
else if (&scene->r.bake.im_format == imf) {
|
else if (match(&scene->r.bake.im_format)) {
|
||||||
return "render.bake.image_settings";
|
return "render.bake.image_settings";
|
||||||
}
|
}
|
||||||
return "..";
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
case ID_NT: {
|
case ID_NT: {
|
||||||
bNodeTree *ntree = (bNodeTree *)id;
|
bNodeTree *ntree = (bNodeTree *)id;
|
||||||
bNode *node;
|
|
||||||
|
|
||||||
for (node = static_cast<bNode *>(ntree->nodes.first); node; node = node->next) {
|
for (const bNode *node : ntree->all_nodes()) {
|
||||||
if (node->type_legacy == CMP_NODE_OUTPUT_FILE) {
|
if (node->type_legacy == CMP_NODE_OUTPUT_FILE) {
|
||||||
if (&((NodeImageMultiFile *)node->storage)->format == imf) {
|
if (match(&((NodeImageMultiFile *)node->storage)->format)) {
|
||||||
char node_name_esc[sizeof(node->name) * 2];
|
char node_name_esc[sizeof(node->name) * 2];
|
||||||
BLI_str_escape(node_name_esc, node->name, sizeof(node_name_esc));
|
BLI_str_escape(node_name_esc, node->name, sizeof(node_name_esc));
|
||||||
return fmt::format("nodes[\"{}\"].format", node_name_esc);
|
return fmt::format("nodes[\"{}\"].format", node_name_esc);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
bNodeSocket *sock;
|
LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) {
|
||||||
|
|
||||||
for (sock = static_cast<bNodeSocket *>(node->inputs.first); sock; sock = sock->next) {
|
|
||||||
NodeImageMultiFileSocket *sockdata = static_cast<NodeImageMultiFileSocket *>(
|
NodeImageMultiFileSocket *sockdata = static_cast<NodeImageMultiFileSocket *>(
|
||||||
sock->storage);
|
socket->storage);
|
||||||
if (&sockdata->format == imf) {
|
if (match(&sockdata->format)) {
|
||||||
char node_name_esc[sizeof(node->name) * 2];
|
char node_name_esc[sizeof(node->name) * 2];
|
||||||
BLI_str_escape(node_name_esc, node->name, sizeof(node_name_esc));
|
BLI_str_escape(node_name_esc, node->name, sizeof(node_name_esc));
|
||||||
|
|
||||||
@@ -1286,13 +1283,52 @@ static std::optional<std::string> rna_ImageFormatSettings_path(const PointerRNA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "..";
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return "..";
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::optional<std::string> rna_ImageFormatSettings_path(const PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
ImageFormatData *data = static_cast<ImageFormatData *>(ptr->data);
|
||||||
|
return rna_ImageFormatSettings_path(ptr, [&](ImageFormatData *imf) { return imf == data; });
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<std::string> rna_ColorManagedDisplaySettings_path(const PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
ColorManagedDisplaySettings *data = static_cast<ColorManagedDisplaySettings *>(ptr->data);
|
||||||
|
std::optional<std::string> path = rna_ImageFormatSettings_path(
|
||||||
|
ptr, [&](ImageFormatData *imf) { return &imf->display_settings == data; });
|
||||||
|
if (path) {
|
||||||
|
return *path + ".display_settings";
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<std::string> rna_ColorManagedViewSettings_path(const PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
ColorManagedViewSettings *data = static_cast<ColorManagedViewSettings *>(ptr->data);
|
||||||
|
std::optional<std::string> path = rna_ImageFormatSettings_path(
|
||||||
|
ptr, [&](ImageFormatData *imf) { return &imf->view_settings == data; });
|
||||||
|
if (path) {
|
||||||
|
return *path + ".view_settings";
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<std::string> rna_ColorManagedInputColorspaceSettings_path(const PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
ColorManagedColorspaceSettings *data = static_cast<ColorManagedColorspaceSettings *>(ptr->data);
|
||||||
|
std::optional<std::string> path = rna_ImageFormatSettings_path(
|
||||||
|
ptr, [&](ImageFormatData *imf) { return &imf->linear_colorspace_settings == data; });
|
||||||
|
if (path) {
|
||||||
|
return *path + ".linear_colorspace_settings";
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
static int rna_RenderSettings_threads_get(PointerRNA *ptr)
|
static int rna_RenderSettings_threads_get(PointerRNA *ptr)
|
||||||
{
|
{
|
||||||
RenderData *rd = (RenderData *)ptr->data;
|
RenderData *rd = (RenderData *)ptr->data;
|
||||||
|
|||||||
@@ -10,13 +10,8 @@ import unittest
|
|||||||
def process_rna_struct(self, struct, rna_path):
|
def process_rna_struct(self, struct, rna_path):
|
||||||
# These paths are currently known failures of `path_from_id`.
|
# These paths are currently known failures of `path_from_id`.
|
||||||
KNOWN_FAILURES = {
|
KNOWN_FAILURES = {
|
||||||
"view_settings",
|
|
||||||
"display_settings",
|
|
||||||
"colorspace_settings",
|
|
||||||
"render.views[\"left\"]",
|
"render.views[\"left\"]",
|
||||||
"render.views[\"right\"]",
|
"render.views[\"right\"]",
|
||||||
"display_settings",
|
|
||||||
"colorspace_settings",
|
|
||||||
"uv_layers[\"UVMap\"]",
|
"uv_layers[\"UVMap\"]",
|
||||||
"uv_layers[\"UVMap\"]",
|
"uv_layers[\"UVMap\"]",
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user