diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-03-11 20:21:05 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-03-22 16:15:20 +0300 |
commit | 3b5224b57c3cfc39a7998ecfc482e13bd6940e68 (patch) | |
tree | 1111ceb0a6501b7de81d4e0e59b6d424c9773665 /source/blender/compositor/nodes | |
parent | 2ebcb7fab3e237b7d00de3088c34780cd24f397b (diff) |
Cleanup: refactor passing of color management settings for image save
Make a copy of ImageFormatData that contains the effective color management
settings, and pass that along to the various functions. This will make it
possible to add more complex logic later.
For compositing nodes, passing along view and display settings through
many functions made it harder to add additional settings, so just get those
from the scene now.
Differential Revision: https://developer.blender.org/D14401
Diffstat (limited to 'source/blender/compositor/nodes')
4 files changed, 12 insertions, 14 deletions
diff --git a/source/blender/compositor/nodes/COM_OutputFileNode.cc b/source/blender/compositor/nodes/COM_OutputFileNode.cc index ab5898c526d..f69511d88e6 100644 --- a/source/blender/compositor/nodes/COM_OutputFileNode.cc +++ b/source/blender/compositor/nodes/COM_OutputFileNode.cc @@ -106,36 +106,33 @@ void OutputFileNode::convert_to_operations(NodeConverter &converter, if (is_multiview && format->views_format == R_IMF_VIEWS_MULTIVIEW) { output_operation = new OutputOpenExrSingleLayerMultiViewOperation( + context.get_scene(), context.get_render_data(), context.get_bnodetree(), input->get_data_type(), format, path, - context.get_view_settings(), - context.get_display_settings(), context.get_view_name(), sockdata->save_as_render); } else if ((!is_multiview) || (format->views_format == R_IMF_VIEWS_INDIVIDUAL)) { - output_operation = new OutputSingleLayerOperation(context.get_render_data(), + output_operation = new OutputSingleLayerOperation(context.get_scene(), + context.get_render_data(), context.get_bnodetree(), input->get_data_type(), format, path, - context.get_view_settings(), - context.get_display_settings(), context.get_view_name(), sockdata->save_as_render); } else { /* R_IMF_VIEWS_STEREO_3D */ - output_operation = new OutputStereoOperation(context.get_render_data(), + output_operation = new OutputStereoOperation(context.get_scene(), + context.get_render_data(), context.get_bnodetree(), input->get_data_type(), format, path, sockdata->layer, - context.get_view_settings(), - context.get_display_settings(), context.get_view_name(), sockdata->save_as_render); } diff --git a/source/blender/compositor/nodes/COM_SplitViewerNode.cc b/source/blender/compositor/nodes/COM_SplitViewerNode.cc index 0e7db05980a..d02bc6e773d 100644 --- a/source/blender/compositor/nodes/COM_SplitViewerNode.cc +++ b/source/blender/compositor/nodes/COM_SplitViewerNode.cc @@ -24,6 +24,7 @@ void SplitViewerNode::convert_to_operations(NodeConverter &converter, NodeInput *image2Socket = this->get_input_socket(1); Image *image = (Image *)this->get_bnode()->id; ImageUser *image_user = (ImageUser *)this->get_bnode()->storage; + Scene *scene = context.get_scene(); SplitOperation *split_viewer_operation = new SplitOperation(); split_viewer_operation->set_split_percentage(this->get_bnode()->custom1); @@ -36,8 +37,8 @@ void SplitViewerNode::convert_to_operations(NodeConverter &converter, ViewerOperation *viewer_operation = new ViewerOperation(); viewer_operation->set_image(image); viewer_operation->set_image_user(image_user); - viewer_operation->set_view_settings(context.get_view_settings()); - viewer_operation->set_display_settings(context.get_display_settings()); + viewer_operation->set_view_settings(&scene->view_settings); + viewer_operation->set_display_settings(&scene->display_settings); viewer_operation->set_render_data(context.get_render_data()); viewer_operation->set_view_name(context.get_view_name()); diff --git a/source/blender/compositor/nodes/COM_TextureNode.cc b/source/blender/compositor/nodes/COM_TextureNode.cc index 216df59cc47..be5f7b90e11 100644 --- a/source/blender/compositor/nodes/COM_TextureNode.cc +++ b/source/blender/compositor/nodes/COM_TextureNode.cc @@ -17,8 +17,7 @@ void TextureNode::convert_to_operations(NodeConverter &converter, bNode *editor_node = this->get_bnode(); Tex *texture = (Tex *)editor_node->id; TextureOperation *operation = new TextureOperation(); - const ColorManagedDisplaySettings *display_settings = context.get_display_settings(); - bool scene_color_manage = !STREQ(display_settings->display_device, "None"); + bool scene_color_manage = !STREQ(context.get_scene()->display_settings.display_device, "None"); operation->set_texture(texture); operation->set_render_data(context.get_render_data()); operation->set_scene_color_manage(scene_color_manage); diff --git a/source/blender/compositor/nodes/COM_ViewerNode.cc b/source/blender/compositor/nodes/COM_ViewerNode.cc index 1b335abc4d7..ebef331c62f 100644 --- a/source/blender/compositor/nodes/COM_ViewerNode.cc +++ b/source/blender/compositor/nodes/COM_ViewerNode.cc @@ -37,8 +37,9 @@ void ViewerNode::convert_to_operations(NodeConverter &converter, viewer_operation->set_render_data(context.get_render_data()); viewer_operation->set_view_name(context.get_view_name()); - viewer_operation->set_view_settings(context.get_view_settings()); - viewer_operation->set_display_settings(context.get_display_settings()); + Scene *scene = context.get_scene(); + viewer_operation->set_view_settings(&scene->view_settings); + viewer_operation->set_display_settings(&scene->display_settings); viewer_operation->set_canvas_input_index(0); if (!image_socket->is_linked()) { |