[Bf-blender-cvs] [ebdedf8] multiview: Merge remote-tracking branch 'origin/master' into multiview

Dalai Felinto noreply at git.blender.org
Wed Feb 4 14:38:24 CET 2015


Commit: ebdedf8a9646edf6b4cd5122b601213651c947ec
Author: Dalai Felinto
Date:   Wed Feb 4 11:19:01 2015 -0200
Branches: multiview
https://developer.blender.org/rBebdedf8a9646edf6b4cd5122b601213651c947ec

Merge remote-tracking branch 'origin/master' into multiview

The conflict solving included a change in openexr_api.cpp (to have
COMBINED always on head) that I'm not sure I should go ahead with.

So this little bit may be reverted later.

Conflicts:
	intern/cycles/blender/blender_camera.cpp
	source/blender/blenkernel/BKE_sequencer.h
	source/blender/blenkernel/intern/image.c
	source/blender/blenkernel/intern/sequencer.c
	source/blender/blenkernel/intern/writeframeserver.c
	source/blender/editors/include/ED_view3d.h
	source/blender/editors/sculpt_paint/paint_image_proj.c
	source/blender/editors/space_sequencer/sequencer_edit.c
	source/blender/imbuf/IMB_imbuf_types.h
	source/blender/imbuf/intern/openexr/openexr_api.cpp
	source/blender/makesdna/DNA_image_types.h
	source/blender/makesrna/intern/rna_image.c
	source/blender/render/intern/source/render_result.c
	source/blender/windowmanager/intern/wm_files.c

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



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

diff --cc intern/cycles/blender/blender_camera.cpp
index f30b992,16f555c..74151c3
--- a/intern/cycles/blender/blender_camera.cpp
+++ b/intern/cycles/blender/blender_camera.cpp
@@@ -521,7 -520,26 +525,27 @@@ static void blender_camera_view_subset(
  	*cam_box = cam * (1.0f/cam_aspect);
  }
  
 -static void blender_camera_border_subset(BL::RenderSettings b_render,
++static void blender_camera_border_subset(BL::RenderEngine b_engine,
++                                         BL::RenderSettings b_render,
+                                          BL::Scene b_scene,
+                                          BL::SpaceView3D b_v3d,
+                                          BL::RegionView3D b_rv3d,
+                                          BL::Object b_ob,
+                                          int width, int height,
+                                          const BoundBox2D &border,
+                                          BoundBox2D *result)
+ {
+ 	/* Determine camera viewport subset. */
+ 	BoundBox2D view_box, cam_box;
 -	blender_camera_view_subset(b_render, b_scene, b_ob, b_v3d, b_rv3d, width, height,
++	blender_camera_view_subset(b_engine, b_render, b_scene, b_ob, b_v3d, b_rv3d, width, height,
+ 	                           &view_box, &cam_box);
+ 
+ 	/* Determine viewport subset matching given border. */
+ 	cam_box = cam_box.make_relative_to(view_box);
+ 	*result = cam_box.subset(border);
+ }
+ 
 -static void blender_camera_border(BlenderCamera *bcam, BL::RenderSettings b_render, BL::Scene b_scene, BL::SpaceView3D b_v3d,
 +static void blender_camera_border(BlenderCamera *bcam, BL::RenderEngine b_engine, BL::RenderSettings b_render, BL::Scene b_scene, BL::SpaceView3D b_v3d,
  	BL::RegionView3D b_rv3d, int width, int height)
  {
  	bool is_camera_view;
@@@ -551,20 -566,36 +572,38 @@@
  	if(!b_ob)
  		return;
  
+ 	/* Determine camera border inside the viewport. */
+ 	BoundBox2D full_border;
 -	blender_camera_border_subset(b_render,
++	blender_camera_border_subset(b_engine,
++	                             b_render,
+ 	                             b_scene,
+ 	                             b_v3d,
+ 	                             b_rv3d,
+ 	                             b_ob,
+ 	                             width, height,
+ 	                             full_border,
+ 	                             &bcam->viewport_camera_border);
+ 
+ 	if(!b_render.use_border()) {
+ 		return;
+ 	}
+ 
  	bcam->border.left = b_render.border_min_x();
  	bcam->border.right = b_render.border_max_x();
  	bcam->border.bottom = b_render.border_min_y();
  	bcam->border.top = b_render.border_max_y();
  
- 	/* determine camera viewport subset */
- 	BoundBox2D view_box, cam_box;
- 
- 	blender_camera_view_subset(b_engine, b_render, b_scene, b_ob, b_v3d, b_rv3d, width, height,
- 		&view_box, &cam_box);
- 
- 	/* determine viewport subset matching camera border */
- 	cam_box = cam_box.make_relative_to(view_box);
- 	bcam->border = cam_box.subset(bcam->border).clamp();
+ 	/* Determine viewport subset matching camera border. */
 -	blender_camera_border_subset(b_render,
++	blender_camera_border_subset(b_engine,
++	                             b_render,
+ 	                             b_scene,
+ 	                             b_v3d,
+ 	                             b_rv3d,
+ 	                             b_ob,
+ 	                             width, height,
+ 	                             bcam->border,
+ 	                             &bcam->border);
+ 	bcam->border.clamp();
  }
  
  void BlenderSync::sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height)
diff --cc release/scripts/startup/bl_ui/space_sequencer.py
index c03f02e,834973a..121902c
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@@ -1076,39 -1094,9 +1094,39 @@@ class SEQUENCER_PT_grease_pencil_tools(
      bl_region_type = 'UI'
  
      # NOTE: this is just a wrapper around the generic GP tools panel
- 	# It contains access to some essential tools usually found only in
- 	# toolbar, which doesn't exist here...
+     # It contains access to some essential tools usually found only in
+     # toolbar, which doesn't exist here...
  
  
 +class SEQUENCER_PT_stereo_3d(SequencerButtonsPanel, Panel):
 +    bl_label = "Stereoscopy"
 +    bl_options = {'DEFAULT_CLOSED'}
 +
 +    @classmethod
 +    def poll(cls, context):
 +        if not cls.has_sequencer(context):
 +            return False
 +
 +        strip = act_strip(context)
 +        if not strip:
 +            return False
 +
 +        return (strip.type in {'IMAGE', 'MOVIE'} and
 +                context.scene.render.use_multiview)
 +
 +    def draw(self, context):
 +        layout = self.layout
 +
 +        strip = act_strip(context)
 +
 +        col = layout
 +        col.label(text="Views Format:")
 +        col.row().prop(strip, "views_format", expand=True)
 +
 +        box = col.box()
 +        box.active = strip.views_format == 'STEREO_3D'
 +        box.template_image_stereo_3d(strip.stereo_3d_format)
 +
 +
  if __name__ == "__main__":  # only for live edit.
      bpy.utils.register_module(__name__)
diff --cc source/blender/blenkernel/BKE_sequencer.h
index c698f9f,6b9c4fa..8663c4c
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@@ -239,7 -237,7 +240,7 @@@ struct StripElem *BKE_sequencer_give_st
  void BKE_sequencer_update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_seq, int len_change, int ibuf_change);
  bool BKE_sequencer_input_have_to_preprocess(const SeqRenderData *context, struct Sequence *seq, float cfra);
  
- void BKE_sequencer_proxy_rebuild_context(struct Main *bmain, struct Scene *scene, struct Sequence *seq, ListBase *queue);
 -struct SeqIndexBuildContext *BKE_sequencer_proxy_rebuild_context(struct Main *bmain, struct Scene *scene, struct Sequence *seq, struct GSet *file_list);
++void BKE_sequencer_proxy_rebuild_context(struct Main *bmain, struct Scene *scene, struct Sequence *seq, struct GSet *file_list, ListBase *queue);
  void BKE_sequencer_proxy_rebuild(struct SeqIndexBuildContext *context, short *stop, short *do_update, float *progress);
  void BKE_sequencer_proxy_rebuild_finish(struct SeqIndexBuildContext *context, bool stop);
  
diff --cc source/blender/blenkernel/intern/image.c
index 294b65a,b405e0a..8d7ddd4
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@@ -1003,31 -858,9 +1003,31 @@@ void BKE_image_memorypack(Scene *scene
  	IMB_freeImBuf(ibuf);
  }
  
 +void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath)
 +{
 +	const size_t totfiles = image_num_files(ima);
 +
 +	if (totfiles == 1) {
 +		ImagePackedFile *imapf = MEM_mallocN(sizeof(ImagePackedFile), "Image packed file");
 +		BLI_addtail(&ima->packedfiles, imapf);
 +		imapf->packedfile = newPackedFile(reports, ima->name, basepath);
 +		BLI_strncpy(imapf->filepath, ima->name, sizeof(imapf->filepath));
 +	}
 +	else {
 +		ImageView *iv;
 +		for (iv = ima->views.first; iv; iv = iv->next) {
 +			ImagePackedFile *imapf = MEM_mallocN(sizeof(ImagePackedFile), "Image packed file");
 +			BLI_addtail(&ima->packedfiles, imapf);
 +
 +			imapf->packedfile = newPackedFile(reports, iv->filepath, basepath);
 +			BLI_strncpy(imapf->filepath, iv->filepath, sizeof(imapf->filepath));
 +		}
 +	}
 +}
 +
  void BKE_image_tag_time(Image *ima)
  {
- 	ima->lastused = (int)PIL_check_seconds_timer();
+ 	ima->lastused = PIL_check_seconds_timer_i();
  }
  
  #if 0
@@@ -3174,74 -2594,46 +3174,79 @@@ static ImBuf *image_load_sequence_multi
  
  static ImBuf *image_load_movie_file(Image *ima, ImageUser *iuser, int frame)
  {
 -	struct ImBuf *ibuf = NULL;
 -
 -	ima->lastframe = frame;
 -
 -	if (ima->anim == NULL) {
 -		char str[FILE_MAX];
 +	struct ImBuf **ibuf_arr;
 +	struct ImBuf *r_ibuf;
 +	const bool is_multiview = (ima->flag & IMA_IS_MULTIVIEW) != 0;
 +	const size_t totfiles = image_num_files(ima);
 +	const size_t totviews = is_multiview ? BLI_listbase_count(&ima->views) : 1;
 +	size_t i;
 +	ImageAnim *ia;
 +
 +	ibuf_arr = MEM_mallocN(sizeof(ImBuf *) * totviews, "Image Views (movie) Imbufs");
 +
 +	if ((BKE_image_has_anim(ima) == false) ||
 +	    totfiles != BLI_listbase_count_ex(&ima->anims, totfiles + 1))
 +	{
+ 		int flags = IB_rect;
 +		image_free_anims(ima);
 +
+ 		if (ima->flag & IMA_DEINTERLACE) {
+ 			flags |= IB_animdeinterlace;
+ 		}
+ 
 -		BKE_image_user_file_path(iuser, ima, str);
 +		for (i = 0; i < totfiles; i++) {
 +			char str[FILE_MAX];
 +			ImageUser iuser_t;
 +
 +			/* allocate the ImageAnim */
 +			ia = MEM_mallocN(sizeof(ImageAnim), "Image Anim");
 +			BLI_addtail(&ima->anims, ia);
 +
 +			if (iuser)
 +				iuser_t = *iuser;
 +			else
 +				iuser_t.framenr = ima->lastframe;
 +
 +			iuser_t.view = i;
 +
 +			BKE_image_user_file_path(&iuser_t, ima, str);
  
 -		/* FIXME: make several stream accessible in image editor, too*/
 -		ima->anim = openanim(str, flags, 0, ima->colorspace_settings.name);
 +			/* FIXME: make several stream accessible in image editor, too*/
- 			ia->anim = openanim(str, IB_rect, 0, ima->colorspace_settings.name);
++			ia->anim = openanim(str, flags, 0, ima->colorspace_settings.name);
  
 -		/* let's initialize this user */
 -		if (ima->anim && iuser && iuser->frames == 0)
 -			iuser->frames = IMB_anim_get_duration(ima->anim,
 -			                                      IMB_TC_RECORD_RUN);
 +			/* let's initialize this user */
 +			if (ia->anim && iuser && iuser->frames == 0)
 +				iuser->frames = IMB_anim_get_duration(ia->anim,
- 			                                          IMB_TC_RECORD_RUN);
++				                                      IMB_TC_RECORD_RUN);
 +		}
  	}
  
 -	if (ima->anim) {
 -		int dur = IMB_anim_get_duration(ima->anim,
 -		                                IMB_TC_RECORD_RUN);
 -		int fra = frame - 1;
 +	if (BKE_image_has_anim(ima)) {
 +		for (i = 0, ia = ima->anims.first; ia; ia = ia->next, i++) {
 +			int dur = IMB_anim_get_duration(ia->anim,
 +			                                IMB_TC_RECORD_RUN);
 +			int fra = frame - 1;
 +
 +			if (fra < 0) fra = 0;
 +			if (fra > (dur - 1)) fra = dur - 1;
 +			ibuf_arr[i] = IMB_makeSingleUser(
 +			         

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list