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. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to