[Bf-blender-cvs] [56cf38b] multiview: Code cleanup: create image_add_view function

Dalai Felinto noreply at git.blender.org
Fri Feb 6 02:44:19 CET 2015


Commit: 56cf38b00a36e8f02e6bf239d931d22d4ea331d7
Author: Dalai Felinto
Date:   Thu Feb 5 21:50:30 2015 -0200
Branches: multiview
https://developer.blender.org/rB56cf38b00a36e8f02e6bf239d931d22d4ea331d7

Code cleanup: create image_add_view function

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

M	source/blender/blenkernel/intern/image.c

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

diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 230a1c2..b10e8af 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -103,6 +103,7 @@ static SpinLock image_spin;
 static size_t image_num_files(struct Image *ima);
 static ImBuf *image_acquire_ibuf(Image *ima, ImageUser *iuser, void **lock_r);
 static void image_update_views_format(Scene *scene, Image *ima);
+static void image_add_view(Image *ima, const char *viewname, const char *filepath);
 
 /* max int, to indicate we don't store sequences in ibuf */
 #define IMA_NO_INDEX    0x7FEFEFEF
@@ -862,7 +863,6 @@ Image *BKE_image_add_generated(Main *bmain, unsigned int width, unsigned int hei
 
 		for (view_id = 0; view_id < 2; view_id++) {
 			ImBuf *ibuf;
-			ImageView *iv;
 			ibuf = add_ibuf_size(width, height, ima->name, depth, floatbuf, gen_type, color, &ima->colorspace_settings);
 			image_assign_ibuf(ima, ibuf, stereo3d ? view_id : IMA_NO_INDEX, 0);
 
@@ -870,9 +870,7 @@ Image *BKE_image_add_generated(Main *bmain, unsigned int width, unsigned int hei
 			IMB_freeImBuf(ibuf);
 			if (!stereo3d) break;
 
-			iv = MEM_mallocN(sizeof(ImageView), "Viewer Image View");
-			BLI_strncpy(iv->name, names[view_id], sizeof(iv->name));
-			BLI_addtail(&ima->views, iv);
+			image_add_view(ima, names[view_id], "");
 		}
 
 		ima->ok = IMA_OK_LOADED;
@@ -2354,13 +2352,10 @@ Image *BKE_image_verify_viewer(int type, const char *name)
 static void image_viewer_create_views(const RenderData *rd, Image *ima)
 {
 	SceneRenderView *srv;
-	ImageView *iv;
 	for (srv = rd->views.first; srv; srv = srv->next) {
 		if (BKE_scene_render_view_active(rd, srv) == false)
 			continue;
-		iv = MEM_mallocN(sizeof(ImageView), "Viewer Image View");
-		BLI_strncpy(iv->name, srv->name, sizeof(iv->name));
-		BLI_addtail(&ima->views, iv);
+		image_add_view(ima, srv->name, "");
 	}
 }
 
@@ -2852,23 +2847,22 @@ bool BKE_image_save_openexr_multiview(Image *ima, ImBuf *ibuf, const char *filep
 
 /**************************** multiview load openexr *********************************/
 
-#ifdef WITH_OPENEXR
-static void image_add_view_cb(void *base, const char *str)
+static void image_add_view(Image *ima, const char *viewname, const char *filepath)
 {
-	Image *ima = base;
 	ImageView *iv;
 
 	iv = MEM_mallocN(sizeof(ImageView), "Viewer Image View");
-	BLI_strncpy(iv->name, str, sizeof(iv->name));
+	BLI_strncpy(iv->name, viewname, sizeof(iv->name));
+	BLI_strncpy(iv->filepath, filepath, sizeof(iv->filepath));
 
 	/* For stereo drawing we need to ensure:
 	 * STEREO_LEFT_NAME  == STEREO_LEFT_ID and
 	 * STEREO_RIGHT_NAME == STEREO_RIGHT_ID */
 
-	if (STREQ(str, STEREO_LEFT_NAME)) {
+	if (STREQ(viewname, STEREO_LEFT_NAME)) {
 		BLI_addhead(&ima->views, iv);
 	}
-	else if (STREQ(str, STEREO_RIGHT_NAME)) {
+	else if (STREQ(viewname, STEREO_RIGHT_NAME)) {
 		ImageView *left_iv = BLI_findstring(&ima->views, STEREO_LEFT_NAME, offsetof(ImageView, name));
 
 		if (left_iv == NULL) {
@@ -2883,6 +2877,13 @@ static void image_add_view_cb(void *base, const char *str)
 	}
 }
 
+#ifdef WITH_OPENEXR
+static void image_add_view_cb(void *base, const char *str)
+{
+	Image *ima = base;
+	image_add_view(ima, str, ima->name);
+}
+
 static void image_add_buffer_cb(void *base, const char *str, ImBuf *ibuf, const int frame)
 {
 	Image *ima = base;
@@ -4429,10 +4430,7 @@ static void image_update_views_format(Scene *scene, Image *ima)
 		ima->flag |= IMA_IS_STEREO;
 
 		for (i = 0; i < 2; i++) {
-			iv = MEM_mallocN(sizeof(ImageView), "Image View Stereo (open)");
-			BLI_strncpy(iv->name, names[i], sizeof(iv->name));
-			BLI_strncpy(iv->filepath, ima->name, sizeof(iv->filepath));
-			BLI_addtail(&ima->views, iv);
+			image_add_view(ima, names[i], ima->name);
 		}
 
 		ima->views_format = R_IMF_VIEWS_STEREO_3D;
@@ -4453,11 +4451,9 @@ static void image_update_views_format(Scene *scene, Image *ima)
 		/* create all the image views */
 		for (srv = scene->r.views.first; srv; srv = srv->next) {
 			if (BKE_scene_render_view_active(&scene->r, srv)) {
-				iv = MEM_mallocN(sizeof(ImageView), "Image View (open)");
-				BLI_strncpy(iv->name, srv->name, sizeof(iv->name));
-
-				BLI_snprintf(iv->filepath, sizeof(iv->filepath), "%s%s%s", prefix, srv->suffix, ext);
-				BLI_addtail(&ima->views, iv);
+				char filepath[FILE_MAX];
+				BLI_snprintf(filepath, sizeof(filepath), "%s%s%s", prefix, srv->suffix, ext);
+				image_add_view(ima, srv->name, filepath);
 			}
 		}




More information about the Bf-blender-cvs mailing list