[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57277] branches/multiview/source/blender: multiview : merging from github branch

Dalai Felinto dfelinto at gmail.com
Fri Jun 7 09:48:30 CEST 2013


Revision: 57277
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57277
Author:   dfelinto
Date:     2013-06-07 07:48:30 +0000 (Fri, 07 Jun 2013)
Log Message:
-----------
multiview : merging from github branch

NOTE: this is the version of the second patch sent for review
(with fix for Windows)

github: 5da9bd010078c65385775d7f6baabf10737170b8
http://github.com/dfelinto/blender/tree/multiview

note: this is trunk/svn revision: 57266

Modified Paths:
--------------
    branches/multiview/source/blender/editors/space_image/image_draw.c
    branches/multiview/source/blender/imbuf/intern/openexr/openexr_api.cpp
    branches/multiview/source/blender/makesrna/intern/rna_nodetree.c

Modified: branches/multiview/source/blender/editors/space_image/image_draw.c
===================================================================
--- branches/multiview/source/blender/editors/space_image/image_draw.c	2013-06-07 01:06:01 UTC (rev 57276)
+++ branches/multiview/source/blender/editors/space_image/image_draw.c	2013-06-07 07:48:30 UTC (rev 57277)
@@ -823,6 +823,19 @@
 		BLI_lock_thread(LOCK_DRAW_IMAGE);
 	}
 
+	/* view == 0 shows stereo */
+	if ((sima->iuser.flag & IMA_STEREO3D) &&
+		sima->iuser.view == 0) {
+		if (sima->iuser.eye == STEREO_LEFT_ID) {
+			sima->iuser.pass = sima->iuser.pass_left;
+			sima->iuser.multi_index = sima->iuser.multi_index_left;
+		}
+		else { //STEREO_RIGHT_ID
+			sima->iuser.pass = sima->iuser.pass_right;
+			sima->iuser.multi_index = sima->iuser.multi_index_right;
+		}
+	}
+
 	ibuf = ED_space_image_acquire_buffer(sima, &lock);
 
 	/* draw the image or grid */

Modified: branches/multiview/source/blender/imbuf/intern/openexr/openexr_api.cpp
===================================================================
--- branches/multiview/source/blender/imbuf/intern/openexr/openexr_api.cpp	2013-06-07 01:06:01 UTC (rev 57276)
+++ branches/multiview/source/blender/imbuf/intern/openexr/openexr_api.cpp	2013-06-07 07:48:30 UTC (rev 57277)
@@ -526,7 +526,7 @@
 	int width, height;
 	int mipmap;
 
-	StringVector multiView;
+	StringVector *multiView;
 	int parts;
 
 	ListBase channels;  /* flattened out, ExrChannel */
@@ -588,22 +588,28 @@
 }
 
 /* multiview functions */
-static StringVector imb_exr_multiView(void *handle)
+} // extern "C"
+static StringVector *imb_exr_multiView(void *handle)
 {
 	ExrHandle *data = (ExrHandle *)handle;
 	return data->multiView;
 }
 
+
+
+extern "C"
+{
+
 void IMB_exr_add_view(void *handle, const char *name)
 {
 	ExrHandle *data = (ExrHandle *)handle;
-	data->multiView.push_back(name);
+	data->multiView->push_back(name);
 }
 
 void IMB_exr_get_multiView_name(void *handle, int view_id, char *view)
 {
-	StringVector views = imb_exr_multiView(handle);
-	std::string retstr ( view_id >= views.size() ? "" : &(views[view_id])[0] );
+	StringVector *views = imb_exr_multiView(handle);
+	std::string retstr ( view_id >= views->size() ? "" : &((*views)[view_id])[0] );
 
 	BLI_strncpy(view, &(retstr)[0], sizeof(view));
 }
@@ -611,14 +617,14 @@
 int IMB_exr_get_multiView_count(void *handle)
 {
 	ExrHandle *data = (ExrHandle *) handle;
-	return data->multiView.size();
+	return data->multiView->size();
 }
 
-static int imb_exr_get_multiView_id(StringVector *views, const char *name)
+static int imb_exr_get_multiView_id(StringVector *views, const std::string name)
 {
 	int count = 0;
-	for (StringVector::const_iterator i = (*views).begin(); i != (*views).end(); ++i) {
-		if (strcmp(name, &(*i)[0])==0)
+	for (StringVector::const_iterator i = (*views).begin(); count < (*views).size(); ++i) {
+		if (name == *i)
 			return count;
 		else
 			count ++;
@@ -628,12 +634,13 @@
 	return -1;
 }
 
-static StringVector imb_exr_get_views(MultiPartInputFile *file)
+static void imb_exr_get_views(MultiPartInputFile *file, StringVector *views)
 {
-	StringVector views;
 	if(file->parts() == 1) {
 		if(hasMultiView(file->header(0))) {
-			return multiView(file->header(0));
+			StringVector sv = multiView(file->header(0));
+			for (StringVector::const_iterator i = sv.begin(); i != sv.end(); ++i)
+				views->push_back(*i);
 		}
 	}
 
@@ -642,12 +649,10 @@
 		if(file->header(p).hasView())
 			view=file->header(p).view();
 
-		if (imb_exr_get_multiView_id(&views, &view[0]) == -1)
-			views.push_back(view);
+		if (imb_exr_get_multiView_id(views, view) == -1)
+			(*views).push_back(view);
 
 	}
-
-	return views;
 }
 
 static const char *imb_exr_insert_view_name(const char* passname, const char* view)
@@ -734,7 +739,7 @@
 	echan->rect = rect;
 
 	/* quick look up */
-	echan->view_id = std::max(0, imb_exr_get_multiView_id(&data->multiView, &(echan->m->view)[0]));
+	echan->view_id = std::max(0, imb_exr_get_multiView_id(data->multiView, echan->m->view));
 
 	exr_printf("added channel %s\n", echan->name);
 	BLI_addtail(&data->channels, echan);
@@ -799,15 +804,15 @@
 
 	header.insert("BlenderMultiChannel", StringAttribute("Blender V2.43"));
 
-	int numparts = data->multiView.size();
+	int numparts = data->multiView->size();
 
 	/* copy header from all parts of input to our header array
 	 * those temporary files have one part per view */
 	for (int i = 0; i < numparts; i++)
 	{
 		headers.push_back (header);
-		headers[headers.size()-1].setView(data->multiView[i]);
-		headers[headers.size()-1].setName(data->multiView[i]);
+		headers[headers.size()-1].setView((*(data->multiView))[i]);
+		headers[headers.size()-1].setName((*(data->multiView))[i]);
 	}
 
 	exr_printf("\nIMB_exrtile_begin_write\n");
@@ -920,7 +925,7 @@
 
 	/* this set the part number to be used in IMB_exrmultiview_write_channels() */
 	data->parts = SplitChannels(channels.begin(), channels.end());
-	if (splitviews) data->parts = data->multiView.size();
+	if (splitviews) data->parts = data->multiView->size();
 
 	for (i=0, echan = (ExrChannel *)data->channels.first; echan; echan = echan->next, i++) {
 		echan->m->name = channels[i].name;
@@ -995,7 +1000,8 @@
 			data->width = *width  = dw.max.x - dw.min.x + 1;
 			data->height = *height = dw.max.y - dw.min.y + 1;
 
-			data->multiView = imb_exr_get_views(data->ifile);
+			data->multiView = new StringVector();
+			imb_exr_get_views(data->ifile, data->multiView);
 
 			std::vector<MultiViewChannelName> channels;
 			GetChannelsInMultiPartFile(*data->ifile, channels);
@@ -1243,7 +1249,7 @@
 	ExrPass *pass;
 
 	/* add views to RenderResult */
-	for (StringVector::const_iterator i = data->multiView.begin(); i != data->multiView.end(); ++i) {
+	for (StringVector::const_iterator i = data->multiView->begin(); i != data->multiView->end(); ++i) {
 		addview(base, &(*i)[0]);
 	}
 
@@ -1411,7 +1417,8 @@
 	std::vector<MultiViewChannelName> channels;
 	GetChannelsInMultiPartFile(*data->ifile, channels);
 
-	data->multiView = imb_exr_get_views(data->ifile);
+	data->multiView = new StringVector();
+	imb_exr_get_views(data->ifile, data->multiView);
 
 	for(size_t i = 0; i < channels.size(); i++) {
 		IMB_exr_add_channel(data, NULL, &(channels[i].name)[0], &(channels[i].view)[0], 0, 0, NULL);

Modified: branches/multiview/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- branches/multiview/source/blender/makesrna/intern/rna_nodetree.c	2013-06-07 01:06:01 UTC (rev 57276)
+++ branches/multiview/source/blender/makesrna/intern/rna_nodetree.c	2013-06-07 07:48:30 UTC (rev 57277)
@@ -2533,7 +2533,7 @@
 	bNode *node = (bNode *)ptr->data;
 	Image *ima = (Image *)node->id;
 
-	if (!ima || !(ima->rr)) return NULL;
+	if (!ima || !(ima->rr)) return 0;
 
 	return RE_layers_have_name(ima->rr);
 }
@@ -2544,7 +2544,7 @@
 	Image *ima = (Image *)node->id;
 	int views;
 
-	if (!ima || !(ima->rr)) return NULL;
+	if (!ima || !(ima->rr)) return 0;
 
 	views = BLI_countlist(&ima->rr->views);
 	return views > 1;




More information about the Bf-blender-cvs mailing list