[Bf-blender-cvs] [c603a755bdd] blender2.7: Color management: Query default view from display

Sergey Sharybin noreply at git.blender.org
Mon Mar 11 11:30:06 CET 2019


Commit: c603a755bdd2792ee1a821baad45b58f78b8bfc6
Author: Sergey Sharybin
Date:   Wed Dec 5 12:06:48 2018 +0100
Branches: blender2.7
https://developer.blender.org/rBc603a755bdd2792ee1a821baad45b58f78b8bfc6

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.

===================================================================

M	source/blender/blenkernel/BKE_colortools.h
M	source/blender/blenkernel/intern/colortools.c
M	source/blender/blenkernel/intern/image.c
M	source/blender/blenkernel/intern/scene.c
M	source/blender/imbuf/IMB_colormanagement.h
M	source/blender/imbuf/intern/colormanagement.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h
index 9e1f17f6285..da54d66d766 100644
--- a/source/blender/blenkernel/BKE_colortools.h
+++ b/source/blender/blenkernel/BKE_colortools.h
@@ -87,18 +87,26 @@ void                scopes_update(struct Scopes *scopes, struct ImBuf *ibuf, con
 void                scopes_free(struct Scopes *scopes);
 void                scopes_new(struct Scopes *scopes);
 
-void BKE_color_managed_display_settings_init(struct ColorManagedDisplaySettings *settings);
-void BKE_color_managed_display_settings_copy(struct ColorManagedDisplaySettings *new_settings,
-                                             const struct ColorManagedDisplaySettings *settings);
+void BKE_color_managed_display_settings_init(
+        struct ColorManagedDisplaySettings *settings);
+void BKE_color_managed_display_settings_copy(
+        struct ColorManagedDisplaySettings *new_settings,
+        const struct ColorManagedDisplaySettings *settings);
 
-void BKE_color_managed_view_settings_init(struct ColorManagedViewSettings *settings);
-void BKE_color_managed_view_settings_copy(struct ColorManagedViewSettings *new_settings,
-                                          const struct ColorManagedViewSettings *settings);
+void BKE_color_managed_view_settings_init(
+        struct ColorManagedViewSettings *settings,
+        const struct ColorManagedDisplaySettings *display_settings);
+void BKE_color_managed_view_settings_copy(
+        struct ColorManagedViewSettings *new_settings,
+        const struct ColorManagedViewSettings *settings);
 void BKE_color_managed_view_settings_free(struct ColorManagedViewSettings *settings);
 
-void BKE_color_managed_colorspace_settings_init(struct ColorManagedColorspaceSettings *colorspace_settings);
-void BKE_color_managed_colorspace_settings_copy(struct ColorManagedColorspaceSettings *colorspace_settings,
-                                                const struct ColorManagedColorspaceSettings *settings);
-bool BKE_color_managed_colorspace_settings_equals(const struct ColorManagedColorspaceSettings *settings1,
-                                                  const struct ColorManagedColorspaceSettings *settings2);
+void BKE_color_managed_colorspace_settings_init(
+        struct ColorManagedColorspaceSettings *colorspace_settings);
+void BKE_color_managed_colorspace_settings_copy(
+        struct ColorManagedColorspaceSettings *colorspace_settings,
+        const struct ColorManagedColorspaceSettings *settings);
+bool BKE_color_managed_colorspace_settings_equals(
+        const struct ColorManagedColorspaceSettings *settings1,
+        const struct ColorManagedColorspaceSettings *settings2);
 #endif
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index 97c923c312b..9ec41467a26 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -1484,17 +1484,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 bf8edf5c71f..2e98b75f383 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -1482,7 +1482,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 b479cfb8c58..418fcb7ac39 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -799,7 +799,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));
 
diff --git a/source/blender/imbuf/IMB_colormanagement.h b/source/blender/imbuf/IMB_colormanagement.h
index 753021fa5ca..537d91cd75f 100644
--- a/source/blender/imbuf/IMB_colormanagement.h
+++ b/source/blender/imbuf/IMB_colormanagement.h
@@ -132,6 +132,8 @@ const char *IMB_colormanagement_display_get_indexed_name(int index);
 const char *IMB_colormanagement_display_get_default_name(void);
 struct ColorManagedDisplay *IMB_colormanagement_display_get_named(const char *name);
 const char *IMB_colormanagement_display_get_none_name(void);
+const char *IMB_colormanagement_display_get_default_view_transform_name(
+        struct ColorManagedDisplay *display);
 
 /* ** View funcrions ** */
 int IMB_colormanagement_view_get_named_index(const char *name);
diff --git a/source/blender/imbuf/intern/colormanagement.c b/source/blender/imbuf/intern/colormanagement.c
index a95c15a9442..c95ba831309 100644
--- a/source/blender/imbuf/intern/colormanagement.c
+++ b/source/blender/imbuf/intern/colormanagement.c
@@ -2352,6 +2352,12 @@ const char *IMB_colormanagement_display_get_none_name(void)
 	return colormanage_display_get_default_name();
 }
 
+const char *IMB_colormanagement_display_get_default_view_transform_name(
+        struct ColorManagedDisplay *display)
+{
+	return colormanage_view_get_default_name(display);
+}
+
 /*********************** View functions *************************/
 
 const char *colormanage_view_get_default_name(const ColorManagedDisplay *display)



More information about the Bf-blender-cvs mailing list