[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