[Bf-blender-cvs] [c95e71a] multiview: Compositor: use ths suffix (not the view name) for the File Output filenames

Dalai Felinto noreply at git.blender.org
Wed Sep 17 14:55:00 CEST 2014


Commit: c95e71a5feee06f2a19ada2d31eb0786a7fc7b02
Author: Dalai Felinto
Date:   Wed Sep 17 14:54:46 2014 +0200
Branches: multiview
https://developer.blender.org/rBc95e71a5feee06f2a19ada2d31eb0786a7fc7b02

Compositor: use ths suffix (not the view name) for the File Output filenames

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

M	source/blender/blenkernel/BKE_scene.h
M	source/blender/blenkernel/intern/image.c
M	source/blender/blenkernel/intern/scene.c
M	source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
M	source/blender/compositor/operations/COM_OutputFileOperation.cpp
M	source/blender/editors/object/object_bake_api.c
M	source/blender/editors/render/render_opengl.c
M	source/blender/editors/screen/screendump.c
M	source/blender/editors/space_image/image_ops.c
M	source/blender/render/intern/source/pipeline.c

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

diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index d8ace5a..7ab63a5 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -153,7 +153,8 @@ bool BKE_scene_render_view_first(const struct RenderData *rd, const char *viewna
 bool BKE_scene_render_view_last(const struct RenderData *rd, const char *viewname);
 struct SceneRenderView *BKE_scene_render_view_findindex(const struct RenderData *rd, const int view_id);
 size_t BKE_scene_view_get_id(const struct RenderData *rd, const char *viewname);
-void BKE_scene_view_get_filepath(struct Scene *scene, const char *filepath, const char *view, char *r_filepath);
+void BKE_scene_view_get_filepath(const struct RenderData *rd, const char *filepath, const char *view, char *r_filepath);
+void BKE_scene_view_get_suffix(const struct RenderData *rd, const char *viewname, char *r_suffix);
 void BKE_scene_videos_dimensions(const struct RenderData *rd, const size_t width, const size_t height, size_t *r_width, size_t *r_height);
 size_t BKE_scene_num_videos(const struct RenderData *rd);
 
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 7c6c495..3da615a 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -932,7 +932,7 @@ static void image_memorypack_multiview(Scene *scene, Image *ima)
 		/* if the image was a R_IMF_VIEWS_STEREO_3D we need to create
 		 *  new names for the new individual views */
 		if (totfiles == 1)
-			BKE_scene_view_get_filepath(scene, ima->name, iv->name, iv->filepath);
+			BKE_scene_view_get_filepath(&scene->r, ima->name, iv->name, iv->filepath);
 
 		IMB_saveiff(ibuf, iv->filepath, IB_rect | IB_mem);
 
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 7a87cd1..bc5dc7a 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -2202,21 +2202,37 @@ size_t BKE_scene_view_get_id(const RenderData *rd, const char *viewname)
 	return 0;
 }
 
-void BKE_scene_view_get_filepath(Scene *scene, const char *filepath, const char *view, char *r_filepath)
+/* When multiview is not used the filepath is as usual (e.g., Image.jpg).
+ * When multiview is on, even if only one view is enabled the view is incorporated
+ * into the file name (e.g., Image_L.jpg). That allows for the user to re-render
+ * individual views.
+ **/
+void BKE_scene_view_get_filepath(const RenderData *rd, const char *filepath, const char *viewname, char *r_filepath)
 {
 	SceneRenderView *srv;
 	char suffix[FILE_MAX];
 
-	srv = BLI_findstring(&scene->r.views, view, offsetof(SceneRenderView, name));
+	srv = BLI_findstring(&rd->views, viewname, offsetof(SceneRenderView, name));
 	if (srv)
 		BLI_strncpy(suffix, srv->suffix, sizeof(suffix));
 	else
-		BLI_strncpy(suffix, view, sizeof(suffix));
+		BLI_strncpy(suffix, viewname, sizeof(suffix));
 
 	BLI_strncpy(r_filepath, filepath, FILE_MAX);
 	BLI_path_view(r_filepath, suffix);
 }
 
+void BKE_scene_view_get_suffix(const RenderData *rd, const char *viewname, char *r_suffix)
+{
+	SceneRenderView *srv;
+
+	srv = BLI_findstring(&rd->views, viewname, offsetof(SceneRenderView, name));
+	if (srv)
+		BLI_strncpy(r_suffix, srv->suffix, sizeof(r_suffix));
+	else
+		BLI_strncpy(r_suffix, viewname, sizeof(r_suffix));
+}
+
 void BKE_scene_videos_dimensions(const RenderData *rd, const size_t width, const size_t height, size_t *r_width, size_t *r_height)
 {
 	if ((rd->scemode & R_MULTIVIEW) &&
diff --git a/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp b/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
index 79a4439..d37c341 100644
--- a/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
+++ b/source/blender/compositor/operations/COM_OutputFileMultiViewOperation.cpp
@@ -105,7 +105,7 @@ void OutputOpenExrSingleLayerMultiViewOperation::deinitExecution()
 		char filename[FILE_MAX];
 
 		BKE_makepicstring_from_type(filename, this->m_path, bmain->name, this->m_rd->cfra, R_IMF_IMTYPE_OPENEXR,
-		                            (this->m_rd->scemode & R_EXTENSION), true, "");
+		                            (this->m_rd->scemode & R_EXTENSION), true, NULL);
 
 		exrhandle = this->get_handle(filename);
 		add_exr_channels(exrhandle, NULL, this->m_datatype, this->m_viewName, width, this->m_outputBuffer);
@@ -188,7 +188,7 @@ void OutputOpenExrMultiLayerMultiViewOperation::deinitExecution()
 		char filename[FILE_MAX];
 
 		BKE_makepicstring_from_type(filename, this->m_path, bmain->name, this->m_rd->cfra, R_IMF_IMTYPE_MULTILAYER,
-		                            (this->m_rd->scemode & R_EXTENSION), true, "");
+		                            (this->m_rd->scemode & R_EXTENSION), true, NULL);
 
 		exrhandle = this->get_handle(filename);
 
diff --git a/source/blender/compositor/operations/COM_OutputFileOperation.cpp b/source/blender/compositor/operations/COM_OutputFileOperation.cpp
index 408407b..1528146 100644
--- a/source/blender/compositor/operations/COM_OutputFileOperation.cpp
+++ b/source/blender/compositor/operations/COM_OutputFileOperation.cpp
@@ -29,6 +29,7 @@
 #include "BKE_image.h"
 #include "BKE_global.h"
 #include "BKE_main.h"
+#include "BKE_scene.h"
 
 #include "DNA_color_types.h"
 
@@ -155,6 +156,7 @@ void OutputSingleLayerOperation::deinitExecution()
 		ImBuf *ibuf = IMB_allocImBuf(this->getWidth(), this->getHeight(), this->m_format->planes, 0);
 		Main *bmain = G.main; /* TODO, have this passed along */
 		char filename[FILE_MAX];
+		char suffix[FILE_MAX];
 		
 		ibuf->channels = size;
 		ibuf->rect_float = this->m_outputBuffer;
@@ -164,9 +166,11 @@ void OutputSingleLayerOperation::deinitExecution()
 		IMB_colormanagement_imbuf_for_write(ibuf, true, false, m_viewSettings, m_displaySettings,
 		                                    this->m_format);
 
+		BKE_scene_view_get_suffix(this->m_rd, this->m_viewName, suffix);
+
 		BKE_makepicstring(filename, this->m_path, bmain->name, this->m_rd->cfra, this->m_format,
-		                  (this->m_rd->scemode & R_EXTENSION) != 0, true, this->m_viewName);
-		
+		                  (this->m_rd->scemode & R_EXTENSION) != 0, true, suffix);
+
 		if (0 == BKE_imbuf_write(ibuf, filename, this->m_format))
 			printf("Cannot save Node File Output to %s\n", filename);
 		else
@@ -235,10 +239,12 @@ void OutputOpenExrMultiLayerOperation::deinitExecution()
 	if (width != 0 && height != 0) {
 		Main *bmain = G.main; /* TODO, have this passed along */
 		char filename[FILE_MAX];
+		char suffix[FILE_MAX];
 		void *exrhandle = IMB_exr_get_handle();
 
+		BKE_scene_view_get_suffix(this->m_rd, this->m_viewName, suffix);
 		BKE_makepicstring_from_type(filename, this->m_path, bmain->name, this->m_rd->cfra, R_IMF_IMTYPE_MULTILAYER,
-		                            (this->m_rd->scemode & R_EXTENSION) != 0, true, this->m_viewName);
+		                            (this->m_rd->scemode & R_EXTENSION) != 0, true, suffix);
 		BLI_make_existing_file(filename);
 
 		for (unsigned int i = 0; i < this->m_layers.size(); ++i) {
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index b905bf5..66da6fa 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -914,7 +914,7 @@ cage_cleanup:
 				BakeData *bake = &scene->r.bake;
 				char name[FILE_MAX];
 
-				BKE_makepicstring_from_type(name, filepath, bmain->name, 0, bake->im_format.imtype, true, false, "");
+				BKE_makepicstring_from_type(name, filepath, bmain->name, 0, bake->im_format.imtype, true, false, NULL);
 
 				if (is_automatic_name) {
 					BLI_path_suffix(name, FILE_MAX, ob_low->id.name + 2, "_");
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index 0faf7da..595c27f 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -452,7 +452,7 @@ static void screen_opengl_render_write(OGLRender *oglrender)
 	rr = RE_AcquireResultRead(oglrender->re);
 
 	BKE_makepicstring(name, scene->r.pic, oglrender->bmain->name, scene->r.cfra,
-	                  &scene->r.im_format, (scene->r.scemode & R_EXTENSION) != 0, false, "");
+	                  &scene->r.im_format, (scene->r.scemode & R_EXTENSION) != 0, false, NULL);
 
 	/* write images as individual images or stereo */
 	ok = RE_WriteRenderViewsImage(oglrender->reports, rr, scene, false, name);
@@ -718,7 +718,7 @@ static bool screen_opengl_render_anim_step(bContext *C, wmOperator *op)
 
 	if (!is_movie) {
 		BKE_makepicstring(name, scene->r.pic, oglrender->bmain->name, scene->r.cfra,
-		                  &scene->r.im_format, (scene->r.scemode & R_EXTENSION) != 0, true, "");
+		                  &scene->r.im_format, (scene->r.scemode & R_EXTENSION) != 0, true, NULL);
 
 		if ((scene->r.mode & R_NO_OVERWRITE) && BLI_exists(name)) {
 			BKE_reportf(op->reports, RPT_INFO, "Skipping existing frame \"%s\"", name);
diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c
index 10e891c..d8d1b99 100644
--- a/source/blender/editors/screen/screendump.c
+++ b/source/blender/editors/screen/screendump.c
@@ -379,7 +379,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float
 				int ok;
 				
 				BKE_makepicstring(name, rd.pic, sj->bmain->name, rd.cfra,
-				                  &rd.im_format, (rd.scemode & R_EXTENSION) != 0, true, "");
+				                  &rd.im_format, (rd.scemode & R_EXTENSION) != 0, true, NULL);
 				
 				ibuf->rect = sj->dumprect;
 				ok = BKE_imbuf_write(ibuf, name, &rd.im_format);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index c6ec9f5..5bbfe6b 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -1742,7 +1742,7 @@ static bool save_image_doit(bContext *C, SpaceImage *sima, wmOperator *op, SaveI
 				                        ((ImageView *) BLI_findlink(&ima->views, i))->name;
 
 				if (is_multilayer) {
-					BKE_scene_v

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list