Merging r46469 through r46494 from trunk into soc-2011-tomato
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 10 May 2012 11:20:15 +0000 (11:20 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 10 May 2012 11:20:15 +0000 (11:20 +0000)
1  2 
extern/libmv/bundle.sh
source/blender/editors/space_clip/clip_editor.c

diff --combined extern/libmv/bundle.sh
index 9baad88a7e2a63f9d35870e4a4c2e365cef98d07,3f58097b88107efb0afa9203298be47f2fdcd7f4..3f877508c464f13df4aaca62189f74455eb3b65e
@@@ -1,14 -1,16 +1,16 @@@
  #!/bin/sh
  
+ if [ "x$1" = "x--i-really-know-what-im-doing" ] ; then
+   echo Proceeding as requested by command line ...
+ else
+   echo "*** Please run again with --i-really-know-what-im-doing ..."
+   exit 1
+ fi
  #BRANCH="keir"
  #BRANCH="Matthias-Fauconneau"
  BRANCH="Nazg-Gul"
  
- if [ -d ./.svn ]; then
-   echo "This script is supposed to work only when using git-svn"
-   exit 1
- fi
  repo="git://github.com/${BRANCH}/libmv.git"
  tmp=`mktemp -d`
  
@@@ -22,8 -24,8 +24,10 @@@ for p in `cat ./patches/series`; d
    cat ./patches/$p | patch -d $tmp/libmv -p1
  done
  
- rm -rf libmv
- rm -rf `find third_party/ -mindepth 1 -maxdepth 1 | grep -v ceres | grep -v CMake | grep -c SCons`
+ find libmv -type f -not -iwholename '*.svn*' -exec rm -rf {} \;
 -find third_party -type f -not -iwholename '*.svn*' -exec rm -rf {} \;
++find third_party -type f -not -iwholename '*.svn*' -not -iwholename '*third_party/ceres*' \
++    -not -iwholename '*third_party/SConscript*' -not -iwholename '*third_party/CMakeLists.txt*' \
++    -exec rm -rf {} \;
  
  cat "files.txt" | while read f; do
    mkdir -p `dirname $f`
@@@ -37,14 -39,14 +41,14 @@@ chmod 664 ./third_party/glog/src/window
  sources=`find ./libmv -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//\t/' | sort -d`
  headers=`find ./libmv -type f -iname '*.h' | sed -r 's/^\.\//\t/' | sort -d`
  
 -third_sources=`find ./third_party -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | grep -v glog | sed -r 's/^\.\//\t/' | sort -d`
 -third_headers=`find ./third_party -type f -iname '*.h' | grep -v glog | sed -r 's/^\.\//\t/' | sort -d`
 +third_sources=`find ./third_party -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | grep -v glog | grep -v ceres | sed -r 's/^\.\//\t/' | sort -d`
 +third_headers=`find ./third_party -type f -iname '*.h' | grep -v glog | grep -v ceres | sed -r 's/^\.\//\t/' | sort -d`
  
  third_glog_sources=`find ./third_party -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | grep glog | grep -v windows | sed -r 's/^\.\//\t\t/' | sort -d`
  third_glog_headers=`find ./third_party -type f -iname '*.h' | grep glog | grep -v windows | sed -r 's/^\.\//\t\t/' | sort -d`
  
  src_dir=`find ./libmv -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \; | sed -r 's/^\.\//\t/' | sort -d | uniq`
 -src_third_dir=`find ./third_party -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \; | sed -r 's/^\.\//\t/'  | sort -d | uniq`
 +src_third_dir=`find ./third_party -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \;  | grep -v ceres | sed -r 's/^\.\//\t/'  | sort -d | uniq`
  src=""
  win_src=""
  for x in $src_dir $src_third_dir; do
@@@ -124,7 -126,6 +128,7 @@@ set(IN
        third_party/ssba
        third_party/ldl/Include
        ../colamd/Include
 +      third_party/ceres/include
  )
  
  set(INC_SYS
@@@ -219,8 -220,6 +223,8 @@@ add_definitions
  )
  
  blender_add_lib(extern_libmv "\${SRC}" "\${INC}" "\${INC_SYS}")
 +
 +add_subdirectory(third_party)
  EOF
  
  cat > SConscript << EOF
@@@ -247,7 -246,7 +251,7 @@@ defs.append('GOOGLE_GLOG_DLL_DECL='
  src = env.Glob("*.cpp")
  $src
  
 -incs = '. ../Eigen3'
 +incs = '. ../Eigen3 third_party/ceres/include'
  incs += ' ' + env['BF_PNG_INC']
  incs += ' ' + env['BF_ZLIB_INC']
  
@@@ -282,6 -281,4 +286,6 @@@ else
  incs += ' ./third_party/ssba ./third_party/ldl/Include ../colamd/Include'
  
  env.BlenderLib ( libname = 'extern_libmv', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137], compileflags=cflags_libmv, cc_compileflags=ccflags_libmv, cxx_compileflags=cxxflags_libmv )
 +
 +SConscript(['third_party/SConscript'])
  EOF
index abbb1789d27f409b90aee813aeb64b77b9f4232e,b3ac535ab9d4b4f04ee2304df0cabe4b55fc80f9..efea806160e3e9b535611d24f0a967968e63be9d
  #include "MEM_guardedalloc.h"
  
  #include "BKE_main.h"
 +#include "BKE_mask.h"
  #include "BKE_movieclip.h"
  #include "BKE_context.h"
  #include "BKE_tracking.h"
  
 +#include "DNA_mask_types.h"
  #include "DNA_object_types.h" /* SELECT */
  
  #include "BLI_utildefines.h"
@@@ -129,32 -127,6 +129,32 @@@ int ED_space_clip_tracking_frame_poll(b
        return FALSE;
  }
  
 +int ED_space_clip_maskediting_poll(bContext *C)
 +{
 +      SpaceClip *sc = CTX_wm_space_clip(C);
 +
 +      if (sc && sc->clip) {
 +              return ED_space_clip_show_maskedit(sc);
 +      }
 +
 +      return FALSE;
 +}
 +
 +int ED_space_clip_maskediting_mask_poll(bContext *C)
 +{
 +      if (ED_space_clip_maskediting_poll(C)) {
 +              MovieClip *clip = CTX_data_edit_movieclip(C);
 +
 +              if (clip) {
 +                      SpaceClip *sc= CTX_wm_space_clip(C);
 +
 +                      return sc->mask != NULL;
 +              }
 +      }
 +
 +      return FALSE;
 +}
 +
  /* ******** editing functions ******** */
  
  void ED_space_clip_set(bContext *C, bScreen *screen, SpaceClip *sc, MovieClip *clip)
@@@ -198,11 -170,6 +198,11 @@@ MovieClip *ED_space_clip(SpaceClip *sc
        return sc->clip;
  }
  
 +Mask *ED_space_clip_mask(SpaceClip *sc)
 +{
 +      return sc->mask;
 +}
 +
  ImBuf *ED_space_clip_get_buffer(SpaceClip *sc)
  {
        if (sc->clip) {
@@@ -247,42 -214,6 +247,42 @@@ void ED_space_clip_size(SpaceClip *sc, 
        }
  }
  
 +void ED_space_clip_mask_size(SpaceClip *sc, int *width, int *height)
 +{
 +      if(!sc->mask) {
 +              *width= 0;
 +              *height= 0;
 +      } else {
 +              float aspx, aspy;
 +
 +              ED_space_clip_size(sc, width, height);
 +              ED_space_clip_aspect(sc, &aspx, &aspy);
 +
 +              *width *= aspx;
 +              *height *= aspy;
 +      }
 +}
 +
 +void ED_space_clip_mask_aspect(SpaceClip *sc, float *aspx, float *aspy)
 +{
 +      int w, h;
 +
 +      ED_space_clip_aspect(sc, aspx, aspy);
 +        ED_space_clip_size(sc, &w, &h);
 +
 +      *aspx *= (float)w;
 +      *aspy *= (float)h;
 +
 +      if(*aspx < *aspy) {
 +              *aspy= *aspy / *aspx;
 +              *aspx= 1.0f;
 +      }
 +      else {
 +              *aspx= *aspx / *aspy;
 +              *aspy= 1.0f;
 +      }
 +}
 +
  void ED_space_clip_zoom(SpaceClip *sc, ARegion *ar, float *zoomx, float *zoomy)
  {
        int width, height;
@@@ -525,16 -456,11 +525,11 @@@ int ED_space_clip_load_movieclip_buffer
  
        if (need_rebind) {
                int width = ibuf->x, height = ibuf->y;
-               float *frect = NULL, *fscalerect = NULL;
-               unsigned int *rect = NULL, *scalerect = NULL;
                int need_recreate = 0;
  
                if (width > GL_MAX_TEXTURE_SIZE || height > GL_MAX_TEXTURE_SIZE)
                        return 0;
  
-               rect = ibuf->rect;
-               frect = ibuf->rect_float;
                /* if image resolution changed (e.g. switched to proxy display) texture need to be recreated */
                need_recreate = context->image_width != ibuf->x || context->image_height != ibuf->y;
  
                        glBindTexture(GL_TEXTURE_2D, context->texture);
                }
  
-               if (frect)
-                       glTexImage2D(GL_TEXTURE_2D, 0,  GL_RGBA16,  width, height, 0, GL_RGBA, GL_FLOAT, frect);
-               else
-                       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, rect);
+               if (ibuf->rect_float) {
+                       if (ibuf->rect == NULL)
+                               IMB_rect_from_float(ibuf);
+               }
+               if (ibuf->rect)
+                       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect);
  
                /* store settings */
                context->texture_allocated = 1;
                context->image_width = ibuf->x;
                context->image_height = ibuf->y;
                context->framenr = sc->user.framenr;
-               if (fscalerect)
-                       MEM_freeN(fscalerect);
-               if (scalerect)
-                       MEM_freeN(scalerect);
        }
        else {
                /* displaying exactly the same image which was loaded t oa texture,
@@@ -614,8 -538,6 +607,8 @@@ void ED_space_clip_free_texture_buffer(
        }
  }
  
 +/* ******** masking editing related functions ******** */
 +
  int ED_space_clip_show_trackedit(SpaceClip *sc)
  {
        if (sc) {
  
        return FALSE;
  }
 +
 +int ED_space_clip_show_maskedit(SpaceClip *sc)
 +{
 +      if (sc) {
 +              return sc->mode == SC_MODE_MASKEDITING;
 +      }
 +
 +      return FALSE;
 +}
 +
 +void ED_space_clip_set_mask(bContext *C, SpaceClip *sc, Mask *mask)
 +{
 +      sc->mask = mask;
 +
 +      if(sc->mask && sc->mask->id.us==0)
 +              sc->clip->id.us = 1;
 +
 +      if(C)
 +              WM_event_add_notifier(C, NC_MASK|NA_SELECTED, mask);
 +}