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)
|
||||
{
|
||||
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])
|
||||
{
|
||||
const ColorManagedViewSettings *view_settings = (ColorManagedViewSettings *)ptr->data;
|
||||
@@ -744,12 +734,6 @@ static std::optional<std::string> rna_ColorManagedSequencerColorspaceSettings_pa
|
||||
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)
|
||||
{
|
||||
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(
|
||||
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. */
|
||||
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";
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
switch (GS(id->name)) {
|
||||
case ID_SCE: {
|
||||
Scene *scene = (Scene *)id;
|
||||
|
||||
if (&scene->r.im_format == imf) {
|
||||
if (match(&scene->r.im_format)) {
|
||||
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 "..";
|
||||
return std::nullopt;
|
||||
}
|
||||
case ID_NT: {
|
||||
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 (&((NodeImageMultiFile *)node->storage)->format == imf) {
|
||||
if (match(&((NodeImageMultiFile *)node->storage)->format)) {
|
||||
char node_name_esc[sizeof(node->name) * 2];
|
||||
BLI_str_escape(node_name_esc, node->name, sizeof(node_name_esc));
|
||||
return fmt::format("nodes[\"{}\"].format", node_name_esc);
|
||||
}
|
||||
else {
|
||||
bNodeSocket *sock;
|
||||
|
||||
for (sock = static_cast<bNodeSocket *>(node->inputs.first); sock; sock = sock->next) {
|
||||
LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) {
|
||||
NodeImageMultiFileSocket *sockdata = static_cast<NodeImageMultiFileSocket *>(
|
||||
sock->storage);
|
||||
if (&sockdata->format == imf) {
|
||||
socket->storage);
|
||||
if (match(&sockdata->format)) {
|
||||
char node_name_esc[sizeof(node->name) * 2];
|
||||
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:
|
||||
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)
|
||||
{
|
||||
RenderData *rd = (RenderData *)ptr->data;
|
||||
|
||||
@@ -10,13 +10,8 @@ import unittest
|
||||
def process_rna_struct(self, struct, rna_path):
|
||||
# These paths are currently known failures of `path_from_id`.
|
||||
KNOWN_FAILURES = {
|
||||
"view_settings",
|
||||
"display_settings",
|
||||
"colorspace_settings",
|
||||
"render.views[\"left\"]",
|
||||
"render.views[\"right\"]",
|
||||
"display_settings",
|
||||
"colorspace_settings",
|
||||
"uv_layers[\"UVMap\"]",
|
||||
"uv_layers[\"UVMap\"]",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user