From b927d196969bd0bb28ba300a31df3d294443df26 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 5 Dec 2018 12:06:48 +0100 Subject: Color management: Query default view from display Solves weird situation when default display name is queried from OCIO, but Default view being assumed to be set for it. Now view is initialized to a default view of that display. --- source/blender/blenkernel/intern/colortools.c | 26 ++++++++++++++++---------- source/blender/blenkernel/intern/image.c | 3 ++- source/blender/blenkernel/intern/scene.c | 3 ++- 3 files changed, 20 insertions(+), 12 deletions(-) (limited to 'source/blender/blenkernel/intern') diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index 108e188fe92..bd006c8b832 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -1569,17 +1569,23 @@ void BKE_color_managed_display_settings_copy(ColorManagedDisplaySettings *new_se BLI_strncpy(new_settings->display_device, settings->display_device, sizeof(new_settings->display_device)); } -void BKE_color_managed_view_settings_init(ColorManagedViewSettings *settings) +void BKE_color_managed_view_settings_init( + ColorManagedViewSettings *view_settings, + const ColorManagedDisplaySettings *display_settings) { - /* OCIO_TODO: use default view transform here when OCIO is completely integrated - * and proper versioning stuff is added. - * for now use NONE to be compatible with all current files - */ - BLI_strncpy(settings->view_transform, "Default", sizeof(settings->view_transform)); - BLI_strncpy(settings->look, "None", sizeof(settings->look)); - - settings->gamma = 1.0f; - settings->exposure = 0.0f; + struct ColorManagedDisplay *display = + IMB_colormanagement_display_get_named( + display_settings->display_device); + BLI_strncpy( + view_settings->view_transform, + IMB_colormanagement_display_get_default_view_transform_name(display), + sizeof(view_settings->view_transform)); + /* TODO(sergey): Find a way to make look query more reliable with non + * default configuration. */ + BLI_strncpy(view_settings->look, "None", sizeof(view_settings->look)); + + view_settings->gamma = 1.0f; + view_settings->exposure = 0.0f; } void BKE_color_managed_view_settings_copy(ColorManagedViewSettings *new_settings, diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index f1a921650f0..fc8e992915e 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1402,7 +1402,8 @@ void BKE_imformat_defaults(ImageFormatData *im_format) im_format->compress = 15; BKE_color_managed_display_settings_init(&im_format->display_settings); - BKE_color_managed_view_settings_init(&im_format->view_settings); + BKE_color_managed_view_settings_init(&im_format->view_settings, + &im_format->display_settings); } void BKE_imbuf_to_image_format(struct ImageFormatData *im_format, const ImBuf *imbuf) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 7a6f1ec85b4..e8aebb2dbaa 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -763,7 +763,8 @@ void BKE_scene_init(Scene *sce) colorspace_name = IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_DEFAULT_SEQUENCER); BKE_color_managed_display_settings_init(&sce->display_settings); - BKE_color_managed_view_settings_init(&sce->view_settings); + BKE_color_managed_view_settings_init(&sce->view_settings, + &sce->display_settings); BLI_strncpy(sce->sequencer_colorspace_settings.name, colorspace_name, sizeof(sce->sequencer_colorspace_settings.name)); -- cgit v1.2.3