[Bf-blender-cvs] [59bf863] multiview: Merge remote-tracking branch 'origin/master' into multiview
Dalai Felinto
noreply at git.blender.org
Wed Oct 15 00:51:06 CEST 2014
Commit: 59bf8632734372ddc264af9db358cc9095dc88c5
Author: Dalai Felinto
Date: Tue Oct 14 18:38:26 2014 -0300
Branches: multiview
https://developer.blender.org/rB59bf8632734372ddc264af9db358cc9095dc88c5
Merge remote-tracking branch 'origin/master' into multiview
Note: this also includes some house-keeping in the image_buttons.c to
handle the recent changes in the file.
Conflicts:
release/datafiles/locale
source/blender/blenloader/intern/versioning_270.c
source/blender/editors/space_image/image_buttons.c
===================================================================
===================================================================
diff --cc source/blender/blenloader/intern/versioning_270.c
index 985c037,bd1b5f2..eb5ed13
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -411,90 -419,20 +424,107 @@@ void blo_do_versions_270(FileData *fd,
}
}
+ if (!DNA_struct_elem_find(fd->filesdna, "bStretchToConstraint", "float", "bulge_min")) {
+ Object *ob;
+
+ /* Update Transform constraint (again :|). */
+ for (ob = main->object.first; ob; ob = ob->id.next) {
+ do_version_constraints_stretch_to_limits(&ob->constraints);
+
+ if (ob->pose) {
+ /* Bones constraints! */
+ bPoseChannel *pchan;
+ for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
+ do_version_constraints_stretch_to_limits(&pchan->constraints);
+ }
+ }
+ }
+ }
++
+ {
+ if (!DNA_struct_elem_find(fd->filesdna, "RenderData", "ListBase", "views")) {
+ Scene *scene;
+ SceneRenderView *srv;
+ for (scene = main->scene.first; scene; scene = scene->id.next) {
+ BKE_scene_add_render_view(scene, STEREO_LEFT_NAME);
+ srv = (SceneRenderView *)scene->r.views.first;
+ BLI_strncpy(srv->suffix, "_L", sizeof(srv->suffix));
+
+ BKE_scene_add_render_view(scene, STEREO_RIGHT_NAME);
+ srv = (SceneRenderView *)scene->r.views.last;
+ BLI_strncpy(srv->suffix, "_R", sizeof(srv->suffix));
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "View3D", "char", "stereo_camera")) {
+ bScreen *screen;
+ for (screen = main->screen.first; screen; screen = screen->id.next) {
+ ScrArea *sa;
+ for (sa = screen->areabase.first; sa; sa = sa->next) {
+ SpaceLink *sl;
+
+ for (sl = sa->spacedata.first; sl; sl = sl->next) {
+ switch (sl->spacetype) {
+ case SPACE_VIEW3D:
+ {
+ View3D *v3d = (View3D *)sl;
+ v3d->stereo3d_camera = STEREO_3D_ID;
+ v3d->stereo3d_flag |= V3D_S3D_DISPPLANE;
+ v3d->stereo3d_convergence_alpha = 0.15f;
+ v3d->stereo3d_volume_alpha = 0.05f;
+ break;
+ }
+ case SPACE_IMAGE:
+ {
+ SpaceImage *sima = (SpaceImage *) sl;
+ sima->iuser.flag |= IMA_SHOW_STEREO;
+ sima->iuser.passtype = SCE_PASS_COMBINED;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Camera", "CameraStereoSettings", "stereo")) {
+ Camera *cam;
+ for (cam = main->camera.first; cam; cam = cam->id.next) {
+ cam->stereo.interocular_distance = 0.065;
+ cam->stereo.convergence_distance = 30.f * 0.065;
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Image", "Stereo3dFormat", "*stereo3d_format")) {
+ Image *ima;
+ for (ima = main->image.first; ima; ima = ima->id.next) {
+ ima->stereo3d_format = MEM_callocN(sizeof(Stereo3dFormat), "Image Stereo 3d Format");
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Image", "ListBase", "packedfiles")) {
+ Image *ima;
+ for (ima = main->image.first; ima; ima = ima->id.next) {
+ if (ima->packedfile) {
+ ImagePackedFile *imapf = MEM_mallocN(sizeof(ImagePackedFile), "Image Packed File");
+ BLI_addtail(&ima->packedfiles, imapf);
+
+ imapf->packedfile = ima->packedfile;
+ BLI_strncpy(imapf->filepath, ima->name, FILE_MAX);
+ ima->packedfile = NULL;
+ }
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "wmWindow", "Stereo3dFormat", "*stereo3d_format")) {
+ wmWindowManager *wm;
+ wmWindow *win;
+
+ for (wm = main->wm.first; wm; wm = wm->id.next) {
+ for (win = wm->windows.first; win; win = win->next) {
+ win->stereo3d_format = MEM_callocN(sizeof(Stereo3dFormat), "Stereo Display 3d Format");
+ }
+ }
+ }
+ }
}
diff --cc source/blender/editors/space_image/image_buttons.c
index fa38857,154437a..7fda23c
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@@ -373,20 -382,30 +383,31 @@@ static const char *ui_imageuser_pass_fa
}
}
--static void ui_imageuser_pass_menu(bContext *UNUSED(C), uiLayout *layout, void *ptrpair_p)
++static void ui_imageuser_pass_menu(bContext *UNUSED(C), uiLayout *layout, void *rnd_pt)
{
- void **ptrpair = ptrpair_p;
- void **rnd_data = ptrpair_p;
++ void **rnd_data = rnd_pt;
uiBlock *block = uiLayoutGetBlock(layout);
- // RenderResult *rr = ptrpair[0];
- ImageUser *iuser = ptrpair[1];
- /* rl==NULL means composite result */
- RenderLayer *rl = ptrpair[2];
+ Image *image = rnd_data[0];
+ ImageUser *iuser = rnd_data[1];
+ /* (rpass_index == -1) means composite result */
+ const int rpass_index = GET_INT_FROM_POINTER(rnd_data[2]);
+ Scene *scene = iuser->scene;
+ RenderResult *rr;
+ RenderLayer *rl;
RenderPass rpass_fake = {NULL};
RenderPass *rpass;
const char *fake_name;
int nr;
+ int passflag = 0;
+ /* may have been freed since drawing */
+ rr = BKE_image_acquire_renderresult(scene, image);
+ if (UNLIKELY(rr == NULL)) {
+ return;
+ }
+
+ rl = BLI_findlink(&rr->layers, rpass_index);
+
uiBlockSetCurLayout(block, layout);
uiLayoutColumn(layout, false);
@@@ -424,57 -436,10 +445,69 @@@ final
}
BLI_assert(nr == -1);
+
+ BKE_image_release_renderresult(scene, image);
}
+/**************************** view menus *****************************/
- static void ui_imageuser_view_menu_rr(bContext *UNUSED(C), uiLayout *layout, void *ptrpair_p)
++static void ui_imageuser_view_menu_rr(bContext *UNUSED(C), uiLayout *layout, void *rnd_pt)
+{
- void **ptrpair = ptrpair_p;
++ void **rnd_data = rnd_pt;
+ uiBlock *block = uiLayoutGetBlock(layout);
- RenderResult *rr = ptrpair[0];
- ImageUser *iuser = ptrpair[1];
++ Image *image = rnd_data[0];
++ ImageUser *iuser = rnd_data[1];
++ RenderResult *rr;
+ RenderView *rview;
+ int nr;
++ Scene *scene = iuser->scene;
++
++ /* may have been freed since drawing */
++ rr = BKE_image_acquire_renderresult(scene, image);
++ if (UNLIKELY(rr == NULL)) {
++ return;
++ }
+
+ uiBlockSetCurLayout(block, layout);
+ uiLayoutColumn(layout, false);
+
+ uiDefBut(block, LABEL, 0, IFACE_("View"),
+ 0, 0, UI_UNIT_X * 5, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiItemS(layout);
+
+ nr = (rr ? BLI_countlist(&rr->views) : 0) - 1;
+ for (rview = rr ? rr->views.last : NULL; rview; rview = rview->prev, nr--) {
+ uiDefButS(block, BUTM, B_NOP, IFACE_(rview->name), 0, 0,
+ UI_UNIT_X * 5, UI_UNIT_X, &iuser->view, (float) nr, 0.0, 0, -1, "");
+ }
++
++ BKE_image_release_renderresult(scene, image);
+}
+
- static void ui_imageuser_view_menu_multiview(bContext *UNUSED(C), uiLayout *layout, void *ptrpair_p)
++static void ui_imageuser_view_menu_multiview(bContext *UNUSED(C), uiLayout *layout, void *rnd_pt)
+{
- void **ptrpair = ptrpair_p;
++ void **rnd_data = rnd_pt;
+ uiBlock *block = uiLayoutGetBlock(layout);
- Image *ima = ptrpair[3];
- ImageUser *iuser = ptrpair[1];
++ Image *image = rnd_data[0];
++ ImageUser *iuser = rnd_data[1];
+ int nr;
+ ImageView *iv;
+
+ uiBlockSetCurLayout(block, layout);
+ uiLayoutColumn(layout, false);
+
+ uiDefBut(block, LABEL, 0, IFACE_("View"),
+ 0, 0, UI_UNIT_X * 5, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiItemS(layout);
+
- nr = BLI_countlist(&ima->views) - 1;
- for (iv = ima->views.last; iv; iv = iv->prev, nr--) {
++ nr = BLI_countlist(&image->views) - 1;
++ for (iv = image->views.last; iv; iv = iv->prev, nr--) {
+ uiDefButS(block, BUTM, B_NOP, IFACE_(iv->name), 0, 0,
+ UI_UNIT_X * 5, UI_UNIT_X, &iuser->view, (float) nr, 0.0, 0, -1, "");
+ }
+}
+
/* 5 layer button callbacks... */
static void image_multi_cb(bContext *C, void *rr_v, void *iuser_v)
{
@@@ -583,12 -536,10 +616,11 @@@ static void uiblock_layer_pass_buttons(
wmenu1 = (2 * w) / 5;
wmenu2 = (3 * w) / 5;
wmenu3 = (3 * w) / 6;
+ wmenu4 = (3 * w) / 6;
- rnd_pt[0] = rr;
+ rnd_pt[0] = image;
rnd_pt[1] = iuser;
rnd_pt[2] = NULL;
- rnd_pt[3] = NULL;
/* menu buts */
if (render_slot) {
@@@ -606,19 -557,19 +638,21 @@@
if (rr) {
RenderPass *rpass;
+ RenderView *rview;
+ int rpass_index;
/* layer */
fake_name = ui_imageuser_layer_fake_name(rr);
- rl = BLI_findlink(&rr->layers, iuser->layer - (fake_name ? 1 : 0));
- rnd_pt[2] = rl;
+ rpass_index = iuser->layer - (fake_name ? 1 : 0);
+ rl = BLI_findlink(&rr->layers, rpass_index);
+ rnd_pt[2] = SET_INT_IN_POINTER(rpass_index);
- display_name = rl ? rl->name : (fake_name ? fake_name : "");
- but = uiDefMenuBut(block, ui_imageuser_layer_menu, rnd_pt, display_name, 0, 0, wmenu2, UI_UNIT_Y, TIP_("Select Layer"));
- uiButSetFunc(but, image_multi_cb, rr, iuser);
- uiButSetMenuFromPulldown(but);
-
+ if (RE_layers_have_name(rr)) {
+ display_name = rl ? rl->name : (fake_name ? fake_name : "");
+ but = uiDefMenuBut(block, ui_imageuser_layer_menu, rnd_pt, display_name, 0, 0, wmenu2, UI_UNIT_Y, TIP_("Select Layer"));
+ uiButSetFunc(but, image_multi_cb, rr, iuser);
+ uiButSetMenuFromPulldown(but);
+ }
/* pass */
fake_name = ui_imageuser_pass_fake_name(rl);
@@@ -628,36 -579,6 +662,35 @@@
but = uiDefMenuBut(block, ui_imageuser_pass_menu, rnd_pt, display_name, 0, 0, wmenu3, UI_UNIT_Y, TIP_("Select Pass"));
uiButSetFunc(but, image_multi_cb, rr, iuser);
uiButSetMenuFromPulldown(but);
+
+ /* view */
+ if (BLI_countlist(&rr->views) > 1 && !show_stereo) {
+ rview = BLI_findlink(&rr->views, iuser->view);
+ display_name = rview ? rview->name : "";
+
+ but = uiDefMenuBut(block, ui_imageuser_view_menu_rr, rnd_pt, display_name, 0, 0, wmenu4, UI_UNIT_Y, TIP_("Select View"));
+ uiButSetFunc(but, image_multi_cb, rr, iuser);
+ uiButSetMenuFromPulldown(but);
+ }
+ }
+
+ /* stereo image */
+ else if (((image->flag & IMA_IS_STEREO) && (!show_stereo)) ||
+ ((image->flag & IMA_IS_MULTIVIEW) && ((image->flag & IMA_IS_STEREO) == 0)))
+ {
+ ImageView *iv;
+ int nr = 0;
- rnd_pt[3] = image;
+
+ for (iv = image->views.first; iv; iv = iv->next) {
+ if (nr++ == iuser->view) {
+ display_name = iv->name;
+ break;
+ }
+ }
+
+ but = uiDefMenuBut(block
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list