Index: /trunk/src/calc_field.m
===================================================================
--- /trunk/src/calc_field.m	(revision 396)
+++ /trunk/src/calc_field.m	(revision 397)
@@ -23,5 +23,5 @@
 % file, depending on the scalar
 
-function [DataOut,errormsg]=calc_field(FieldName,DataIn,VelType,XI,YI)
+function [DataOut,errormsg]=calc_field(FieldName,DataIn,Coord_interp)
 
 %list of defined scalars to display in menus (in addition to 'ima_cor').
@@ -66,38 +66,43 @@
     
     %% interpolation with new civ data
-    if isfield(DataIn,'SubRange') &&(strcmp(VelType,'filter1')||strcmp(VelType,'filter2'))
+    if isfield(DataIn,'SubRange') && isfield(DataIn,'Coord_tps')&& exist('Coord_interp','var')
+        DataOut.ListGlobalAttribute=DataIn.ListGlobalAttribute; %reproduce global attribute
+        for ilist=1:numel(DataOut.ListGlobalAttribute)
+            DataOut.(DataOut.ListGlobalAttribute{ilist})=DataIn.(DataIn.ListGlobalAttribute{ilist});
+        end
+        DataOut.ListVarName={'coord_y','coord_x','FF'};
+        DataOut.VarDimName{1}='coord_y';
+        DataOut.VarDimName{2}='coord_x';
         XMax=max(max(DataIn.SubRange(1,:,:)));% extrema of the coordinates
         YMax=max(max(DataIn.SubRange(2,:,:)));
         XMin=min(min(DataIn.SubRange(1,:,:)));
         YMin=min(min(DataIn.SubRange(2,:,:)));
-        if ~(exist('XI','var')&&exist('YI','var'))
-            Mesh=sqrt((YMax-YMin)*(XMax-XMin)/numel(DataIn.Coord_tps(:,1,:)));%2D
-            xI=XMin:Mesh:XMax;
-            yI=YMin:Mesh:YMax;
-            [XI,YI]=meshgrid(xI,yI);% interpolation grid
-            XI=reshape(XI,[],1);
-            YI=reshape(YI,[],1);
-        end
-        DataOut.ListGlobalAttribute=DataIn.ListGlobalAttribute; %reproduce global attribute
-        for ilist=1:numel(DataOut.ListGlobalAttribute)
-            DataOut.(DataOut.ListGlobalAttribute{ilist})=DataIn.(DataIn.ListGlobalAttribute{ilist});
-        end
-        DataOut.ListVarName={'coord_y','coord_x','FF'};
-        DataOut.VarDimName{1}='coord_y';
-        DataOut.VarDimName{2}='coord_x';
-        DataOut.coord_y=[yI(1) yI(end)];
-        DataOut.coord_x=[xI(1) xI(end)];
-        switch FieldName{1}
-            case {'velocity','u','v'}
-                DataOut.U=zeros(size(XI));
-                DataOut.V=zeros(size(XI));
-            case 'vort'
-                DataOut.vort=zeros(size(XI));
-            case 'div'
-                DataOut.div=zeros(size(XI));
-            case 'strain'
-                DataOut.strain=zeros(size(XI));
-        end
-        nbval=zeros(size(XI));
+        %         if ~exist('Coord_interp','var')
+        %             Mesh=sqrt((YMax-YMin)*(XMax-XMin)/numel(DataIn.Coord_tps(:,1,:)));%2D
+        %             xI=XMin:Mesh:XMax;
+        %             yI=YMin:Mesh:YMax;
+        %             [XI,YI]=meshgrid(xI,yI);% interpolation grid
+        %             Coord_interp(:,1)=reshape(XI,[],1);
+        %             Coord_interp(:,2)=reshape(YI,[],1);
+        %             DataOut.coord_y=[yI(1) yI(end)];
+        %             DataOut.coord_x=[xI(1) xI(end)];
+        %      end
+        check_der=0;
+        check_val=0;
+        for ilist=1:length(FieldName)
+            switch FieldName{ilist}
+                case 'velocity'
+                    check_val=1;
+                    DataOut.U=zeros(size(Coord_interp,1));
+                    DataOut.V=zeros(size(Coord_interp,1));
+                case{'vort','div','strain'}% case of spatial derivatives
+                    check_der=1;
+                    DataOut.(FieldName{ilist})=zeros(size(Coord_interp,1));
+                otherwise % case of a scalar
+                    check_val=1;
+                    DataOut.(FieldName{ilist})=zeros(size(Coord_interp,1));
+            end
+        end
+        nbval=zeros(size(Coord_interp,1));
         NbSubDomain=size(DataIn.SubRange,3);
         for isub=1:NbSubDomain
@@ -107,65 +112,67 @@
                 nbvec_sub=numel(find(DataIn.Indices_tps(:,isub)));
             end
-            ind_sel=find(XI>=DataIn.SubRange(1,1,isub) & XI<=DataIn.SubRange(1,2,isub) & YI>=DataIn.SubRange(2,1,isub) & YI<=DataIn.SubRange(2,2,isub));
+            ind_sel=find(Coord_interp>=DataIn.SubRange(:,1,isub) & Coord_interp<=DataIn.SubRange(:,2,isub));
             %rho smoothing parameter
-            epoints = [XI(ind_sel) YI(ind_sel)];% coordinates of interpolation sites
-            ctrs=DataIn.Coord_tps(1:nbvec_sub,:,isub);%(=initial points) ctrs
+            %                 epoints = Coord_interp(ind_sel) ;% coordinates of interpolation sites
+            %                 ctrs=DataIn.Coord_tps(1:nbvec_sub,:,isub);%(=initial points) ctrs
             nbval(ind_sel)=nbval(ind_sel)+1;% records the number of values for eacn interpolation point (in case of subdomain overlap)
+            if check_val
+                EM = tps_eval(Coord_interp(ind_sel),DataIn.Coord_tps(1:nbvec_sub,:,isub));%kernels for calculating the velocity from tps 'sources'
+            end
+            if check_der
+                [EMDX,EMDY] = tps_eval_dxy(Coord_interp(ind_sel),DataIn.Coord_tps(1:nbvec_sub,:,isub));%kernels for calculating the spatial derivatives from tps 'sources'
+            end
+            for ilist=1:length(FieldName)
+                switch FieldName{ilist}
+                    case 'velocity'
+                        ListFields={'U', 'V'};
+                        VarAttributes{1}.Role='vector_x';
+                        VarAttributes{2}.Role='vector_y';
+                        DataOut.U(ind_sel)=DataOut.U(ind_sel)+EM *DataIn.U_tps(1:nbvec_sub+3,isub);
+                        DataOut.V(ind_sel)=DataOut.V(ind_sel)+EM *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    case 'u'
+                        ListFields={'U'};
+                        VarAttributes{1}.Role='scalar';
+                        DataOut.U(ind_sel)=DataOut.U(ind_sel)+EM *DataIn.U_tps(1:nbvec_sub+3,isub);
+                    case 'v'
+                        ListFields={'V'};
+                        VarAttributes{1}.Role='scalar';
+                        DataOut.V(ind_sel)=DataOut.V(ind_sel)+EM *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    case 'vort'
+                        ListFields={'vort'};
+                        VarAttributes{1}.Role='scalar';
+                        DataOut.vort(ind_sel)=DataOut.vort(ind_sel)+EMDY *DataIn.U_tps(1:nbvec_sub+3,isub)-EMDX *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    case 'div'
+                        ListFields={'div'};
+                        VarAttributes{1}.Role='scalar';
+                        DataOut.div(ind_sel)=DataOut.div(ind_sel)+EMDX*DataIn.U_tps(1:nbvec_sub+3,isub)+EMDY *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    case 'strain'
+                        ListFields={'strain'};
+                        VarAttributes{1}.Role='scalar';
+                        DataOut.strain(ind_sel)=DataOut.strain(ind_sel)+EMDY*DataIn.U_tps(1:nbvec_sub+3,isub)+EMDX *DataIn.V_tps(1:nbvec_sub+3,isub);
+                end
+            end
+            DataOut.FF=nbval==0; %put errorflag to 1 for points outside the interpolation rang
+            DataOut.FF=reshape(DataOut.FF,numel(yI),numel(xI));
+            nbval(nbval==0)=1;
             switch FieldName{1}
                 case {'velocity','u','v'}
-                    EM = tps_eval(epoints,ctrs);%kernels for calculating the velocity from tps 'sources'
-                case{'vort','div','strain'}
-                    [EMDX,EMDY] = tps_eval_dxy(epoints,ctrs);%kernels for calculating the spatial derivatives from tps 'sources'
-            end
-            switch FieldName{1}
-                case 'velocity'
-                    ListFields={'U', 'V'};
-                    VarAttributes{1}.Role='vector_x';
-                    VarAttributes{2}.Role='vector_y';
-                    DataOut.U(ind_sel)=DataOut.U(ind_sel)+EM *DataIn.U_tps(1:nbvec_sub+3,isub);
-                    DataOut.V(ind_sel)=DataOut.V(ind_sel)+EM *DataIn.V_tps(1:nbvec_sub+3,isub);
-                case 'u'
-                    ListFields={'U'};
-                    VarAttributes{1}.Role='scalar';
-                    DataOut.U(ind_sel)=DataOut.U(ind_sel)+EM *DataIn.U_tps(1:nbvec_sub+3,isub);
-                case 'v'
-                    ListFields={'V'};
-                    VarAttributes{1}.Role='scalar';
-                    DataOut.V(ind_sel)=DataOut.V(ind_sel)+EM *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    DataOut.U=reshape(DataOut.U./nbval,numel(yI),numel(xI));
+                    DataOut.V=reshape(DataOut.V./nbval,numel(yI),numel(xI));
                 case 'vort'
-                    ListFields={'vort'};
-                    VarAttributes{1}.Role='scalar';
-                    DataOut.vort(ind_sel)=DataOut.vort(ind_sel)+EMDY *DataIn.U_tps(1:nbvec_sub+3,isub)-EMDX *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    DataOut.vort=reshape(DataOut.vort,numel(yI),numel(xI));
                 case 'div'
-                    ListFields={'div'};
-                    VarAttributes{1}.Role='scalar';
-                    DataOut.div(ind_sel)=DataOut.div(ind_sel)+EMDX*DataIn.U_tps(1:nbvec_sub+3,isub)+EMDY *DataIn.V_tps(1:nbvec_sub+3,isub);
+                    DataOut.div=reshape(DataOut.div,numel(yI),numel(xI));
                 case 'strain'
-                    ListFields={'strain'};
-                    VarAttributes{1}.Role='scalar';
-                    DataOut.strain(ind_sel)=DataOut.strain(ind_sel)+EMDY*DataIn.U_tps(1:nbvec_sub+3,isub)+EMDX *DataIn.V_tps(1:nbvec_sub+3,isub);
-            end
-        end
-        DataOut.FF=nbval==0; %put errorflag to 1 for points outside the interpolation rang      
-        DataOut.FF=reshape(DataOut.FF,numel(yI),numel(xI));
-        nbval(nbval==0)=1;
-        switch FieldName{1}
-              case {'velocity','u','v'}
-        DataOut.U=reshape(DataOut.U./nbval,numel(yI),numel(xI));
-        DataOut.V=reshape(DataOut.V./nbval,numel(yI),numel(xI));
-            case 'vort'
-        DataOut.vort=reshape(DataOut.vort,numel(yI),numel(xI));
-            case 'div'
-        DataOut.div=reshape(DataOut.div,numel(yI),numel(xI));
-            case 'strain'
-           DataOut.strain=reshape(DataOut.strain,numel(yI),numel(xI));
-        end
-        DataOut.ListVarName=[DataOut.ListVarName ListFields];
-        for ilist=3:numel(DataOut.ListVarName)
-            DataOut.VarDimName{ilist}={'coord_y','coord_x'};
-        end
-        DataOut.VarAttribute={[],[]};
-        DataOut.VarAttribute{3}.Role='errorflag';
-        DataOut.VarAttribute=[DataOut.VarAttribute VarAttributes];
+                    DataOut.strain=reshape(DataOut.strain,numel(yI),numel(xI));
+            end
+            DataOut.ListVarName=[DataOut.ListVarName ListFields];
+            for ilist=3:numel(DataOut.ListVarName)
+                DataOut.VarDimName{ilist}={'coord_y','coord_x'};
+            end
+            DataOut.VarAttribute={[],[]};
+            DataOut.VarAttribute{3}.Role='errorflag';
+            DataOut.VarAttribute=[DataOut.VarAttribute VarAttributes];
+        end
     else
         
@@ -200,5 +207,5 @@
             DataOut.VarAttribute{nbcoord+ivar}.Role=RoleList{ivar};
             DataOut.VarAttribute{nbcoord+ivar}.units=units_cell{ivar};
-            eval(['DataOut.' ListVarName{ivar} '=ValueList{ivar};'])
+            DataOut.(ListVarName{ivar})=ValueList{ivar};
         end
     end
Index: /trunk/src/civ.m
===================================================================
--- /trunk/src/civ.m	(revision 396)
+++ /trunk/src/civ.m	(revision 397)
@@ -520,14 +520,29 @@
             dt=0.04;%default
             if exist([RootName ext_imadoc],'file')==2
-                info=aviinfo([RootName ext_imadoc]);%read infos on the avi movie
-                dt=1/info.FramesPerSecond;%time interval between successive frames
-                MaxIndex_i=info.NumFrames;%number of frames
-            end
-            time=(dt*(0:MaxIndex_i-1))';%list of image times
-            TimeUnit='s';
-    end
-    set(handles.ImaDoc,'BackgroundColor',[1 1 1])% set display box back to whiter
-end
-
+                hhh=which('videoreader');
+                if isempty(hhh)%use old video function of matlab
+                    imainfo=aviinfo([RootName ext_imadoc]);%read infos on the avi movie
+                    dt=1/imainfo.FramesPerSecond;%time interval between successive frames
+                    MaxIndex_i=imainfo.NumFrames;%number of frames
+                    %         XmlData.Time=(0:1/imainfo.FramesPerSecond:(imainfo.NumFrames-1)/imainfo.FramesPerSecond)';
+                    %         nbfield=imainfo.NumFrames;
+                    %         set(handles.Dt_txt,'String',['Dt=' num2str(1000/imainfo.FramesPerSecond) 'ms']);%display the elementary time interval in millisec
+                    %         ColorType=imainfo.ImageType;%='truecolor' for color images
+                else %use video function videoreader of matlab
+                    imainfo=get(videoreader([RootName ext_imadoc]));%read infos on the avi movie
+                    dt=1/imainfo.FrameRate;%time interval between successive frames
+                    MaxIndex_i=imainfo.NumberOfFrames;%number of frames
+                    %         XmlData.Time=(0:1/imainfo.FrameRate:(imainfo.NumberOfFrames-1)/imainfo.FrameRate)';
+                    %         nbfield=imainfo.NumberOfFrames;
+                    %         set(handles.Dt_txt,'String',['Dt=' num2str(1000/imainfo.FrameRate) 'ms']);%display the elementary time interval in millisec
+                    %         ColorType='truecolor';
+                end
+                
+                time=(dt*(0:MaxIndex_i-1))';%list of image times
+                TimeUnit='s';
+            end
+            set(handles.ImaDoc,'BackgroundColor',[1 1 1])% set display box back to whiter
+    end
+end
 %% timing display
 %show the reference image edit box if relevant (not needed for movies or in the absence of time information
@@ -1223,9 +1238,15 @@
             Param.Civ1.Time=((time(i2_civ1(ifile)+1,j2_civ1(j)+1)+time(i1_civ1(ifile)+1,j1_civ1(j)+1))/2);
             Param.Civ1.term_a=num2stra(j1_civ1(j),nom_type_nc);%UTILITE?
-            Param.Civ1.term_b=num2stra(j2_civ1(j),nom_type_nc);%    
-            ImageInfo=imfinfo(filecell.ima1.civ1{1,1});%read the first image to get the size
+            Param.Civ1.term_b=num2stra(j2_civ1(j),nom_type_nc);%
+            form=imformats(regexprep(get(handles.ImaExt,'String'),'^.',''));%look for image formats
+            if isempty(form)
+                ImageInfo=get(VideoReader(filecell.ima1.civ1{1,1}));
+                Param.Civ1.ImageBitDepth=ImageInfo.BitsPerPixel/3;
+            else
+                ImageInfo=imfinfo(filecell.ima1.civ1{1,1});%read the first image to get the size
+                Param.Civ1.ImageBitDepth=ImageInfo.BitDepth;
+            end
             Param.Civ1.ImageWidth=ImageInfo.Width;
             Param.Civ1.ImageHeight=ImageInfo.Height;
-            Param.Civ1.ImageBitDepth=ImageInfo.BitDepth;
             Param.Civ1.i1=i1_civ1;
             Param.Civ1.i2=i2_civ1;
@@ -1394,11 +1415,16 @@
                 end
             end
-            ImageInfo=imfinfo(filecell.ima1.civ2{1,1});%read the first image to get the size
+            form=imformats(regexprep(get(handles.ImaExt,'String'),'^.',''));%look for image formats
+            if isempty(form)
+                ImageInfo=get(VideoReader(filecell.ima1.civ2{1,1}));
+                Param.Civ2.ImageBitDepth=ImageInfo.BitsPerPixel/3;
+            else
+                ImageInfo=imfinfo(filecell.ima1.civ2{1,1});%read the first image to get the size
+                Param.Civ2.ImageBitDepth=ImageInfo.BitDepth;
+            end
             Param.Civ2.ImageWidth=ImageInfo.Width;
             Param.Civ2.ImageHeight=ImageInfo.Height;
-            Param.Civ2.ImageBitDepth=ImageInfo.BitDepth;
             Param.Civ2.i1=i1_civ2;
             Param.Civ2.i2=i2_civ2;
-            % TODO: case of movie   
             switch CivMode
                 case 'CivX'
@@ -3928,6 +3954,6 @@
     par_civ1.ImageHeight=size(Data.A,1);
     par_civ1.Mask='all';% will provide only the grid set for PIV, no image correlation
-    par_civ1.i1=i1_civ1;
-    par_civ1.i2=i2_civ1;
+    par_civ1.i1=1;%i1_civ1;
+    par_civ1.i2=2;%i2_civ1;
     Param.Civ1=par_civ1;
     Grid=civ_matlab(Param);% get the grid of x, y positions set for PIV 
Index: /trunk/src/civ_matlab.m
===================================================================
--- /trunk/src/civ_matlab.m	(revision 396)
+++ /trunk/src/civ_matlab.m	(revision 397)
@@ -72,9 +72,9 @@
         end
     else
-        if isfield(par_civ1,'ImageA') && ischar(par_civ1.ImageA) % case with no image: only the PIV grid is calculated
+        if isfield(par_civ1,'ImageA')&&(ischar(par_civ1.ImageA)||strcmp(class(par_civ1.ImageA),'VideoReader')) % case with no image: only the PIV grid is calculated
             [Field,ParamOut,errormsg] = read_field(par_civ1.ImageA,par_civ1.FileTypeA,[],par_civ1.i1);
             par_civ1.ImageA=Field.A;%imread(par_civ1.ImageA);%[Field,ParamOut,errormsg] = read_field(ObjectName,FileType,ParamIn,num)
         end
-        if isfield(par_civ1,'ImageB')&& ischar(par_civ1.ImageB)
+        if isfield(par_civ1,'ImageB')&& (ischar(par_civ1.ImageB)||strcmp(class(par_civ1.ImageA),'VideoReader'))
             [Field,ParamOut,errormsg] = read_field(par_civ1.ImageB,par_civ1.FileTypeB,[],par_civ1.i2);
             par_civ1.ImageB=Field.A;%=imread(par_civ1.ImageB);
@@ -177,10 +177,13 @@
     Data.Patch1_Threshold=Param.Patch1.MaxDiff;
     Data.Patch1_SubDomain=Param.Patch1.SubdomainSize;
+    nbvar=length(Data.ListVarName);
     Data.ListVarName=[Data.ListVarName {'Civ1_U_smooth','Civ1_V_smooth','Civ1_SubRange','Civ1_NbSites','Civ1_Coord_tps','Civ1_U_tps','Civ1_V_tps'}];
     Data.VarDimName=[Data.VarDimName {'NbVec1','NbVec1',{'NbCoord','Two','NbSubDomain1'},{'NbSubDomain1'},...
              {'NbVec1Sub','NbCoord','NbSubDomain1'},{'Nbtps1','NbSubDomain1'},{'Nbtps1','NbSubDomain1'}}];
-    nbvar=length(Data.ListVarName);
-    Data.VarAttribute{nbvar-1}.Role='vector_x';
-    Data.VarAttribute{nbvar}.Role='vector_y';
+    Data.VarAttribute{nbvar+1}.Role='vector_x';
+    Data.VarAttribute{nbvar+2}.Role='vector_y';
+    Data.VarAttribute{nbvar+5}.Role='coord_tps';
+    Data.VarAttribute{nbvar+6}.Role='vector_x_tps';
+    Data.VarAttribute{nbvar+7}.Role='vector_y_tps';
     Data.Civ1_U_smooth=zeros(size(Data.Civ1_X));
     Data.Civ1_V_smooth=zeros(size(Data.Civ1_X));
@@ -204,11 +207,17 @@
     par_civ2=Param.Civ2;
     if ~isfield (Param,'Civ1') || ~strcmp(Param.Civ1.ImageA,par_civ2.ImageA)
-        par_civ2.ImageA=imread(Param.Civ2.ImageA);%read first image if not already done for civ1
+        %read first image if not already done for civ1
+        [Field,ParamOut,errormsg] = read_field(par_civ2.ImageA,par_civ2.FileTypeA,[],par_civ2.i1);
+        par_civ2.ImageA=Field.A;
+        %      par_civ2.ImageA=imread(Param.Civ2.ImageA);
     else
         par_civ2.ImageA=par_civ1.ImageA;
     end
     if ~isfield (Param,'Civ1') || ~strcmp(Param.Civ1.ImageB,par_civ2.ImageB)
-        par_civ2.ImageB=imread(Param.Civ2.ImageB);%read second image if not already done for civ1
-         else
+        %read first image if not already done for civ1
+        [Field,ParamOut,errormsg] = read_field(par_civ2.ImageB,par_civ2.FileTypeB,[],par_civ2.i2);
+        par_civ2.ImageB=Field.A;
+        %      par_civ2.ImageB=imread(Param.Civ2.ImageB);
+    else
         par_civ2.ImageB=par_civ1.ImageB;
     end
@@ -330,5 +339,5 @@
     else
         Data.ListVarName=[Data.ListVarName {'Civ2_FF'}];
-        Data.VarDimName=[Data.VarDimName {'nbvec2'}];
+        Data.VarDimName=[Data.VarDimName {'NbVec2'}];
         nbvar=length(Data.ListVarName);
         Data.VarAttribute{nbvar}.Role='errorflag';    
@@ -345,5 +354,6 @@
     Data.Patch2_Threshold=Param.Patch2.MaxDiff;
     Data.Patch2_SubDomain=Param.Patch2.SubdomainSize;
-    Data.ListVarName=[Data.ListVarName {'Civ2_U_Diff','Civ2_V_Diff','Civ2_SubRange','Civ2_NbSites','Civ2_Coord_tps','Civ2_U_tps','Civ2_V_tps'}];
+    nbvar=length(Data.ListVarName);
+    Data.ListVarName=[Data.ListVarName {'Civ2_U_smooth','Civ2_V_smooth','Civ2_SubRange','Civ2_NbSites','Civ2_Coord_tps','Civ2_U_tps','Civ2_V_tps'}];
     Data.VarDimName=[Data.VarDimName {'NbVec2','NbVec2',{'NbCoord','Two','NbSubDomain2'},{'NbSubDomain2'},...
              {'NbVec2Sub','NbCoord','NbSubDomain2'},{'Nbtps2','NbSubDomain2'},{'Nbtps2','NbSubDomain2'}}];
@@ -351,9 +361,12 @@
 %     Data.VarDimName=[Data.VarDimName {'NbVec2','NbVec2',{'NbSubDomain2','Two'},{'NbSubDomain2','Two'},...
 %              {'NbVec2Sub','NbSubDomain2'},{'NbVec2Sub','NbSubDomain2'},{'Nbtps2','NbSubDomain2'},{'Nbtps2','NbSubDomain2'},{'NbVec2Sub','NbSubDomain2'}}];
-    nbvar=length(Data.ListVarName);
-    Data.VarAttribute{nbvar-1}.Role='vector_x';
-    Data.VarAttribute{nbvar}.Role='vector_y';
-    Data.Civ2_U_Diff=zeros(size(Data.Civ2_X));
-    Data.Civ2_V_Diff=zeros(size(Data.Civ2_X));
+
+        Data.VarAttribute{nbvar+1}.Role='vector_x';
+    Data.VarAttribute{nbvar+2}.Role='vector_y';
+    Data.VarAttribute{nbvar+5}.Role='coord_tps';
+    Data.VarAttribute{nbvar+6}.Role='vector_x_tps';
+    Data.VarAttribute{nbvar+7}.Role='vector_y_tps';
+    Data.Civ2_U_smooth=zeros(size(Data.Civ2_X));
+    Data.Civ2_V_smooth=zeros(size(Data.Civ2_X));
     if isfield(Data,'Civ2_FF')
         ind_good=find(Data.Civ2_FF==0);
@@ -363,8 +376,8 @@
     [Data.Civ2_SubRange,Data.Civ2_NbSites,Data.Civ2_Coord_tps,Data.Civ2_U_tps,Data.Civ2_V_tps,tild,Ures, Vres,tild,FFres]=...
          filter_tps([Data.Civ2_X(ind_good) Data.Civ2_Y(ind_good)],Data.Civ2_U(ind_good),Data.Civ2_V(ind_good),[],Data.Patch2_SubDomain,Data.Patch2_Rho,Data.Patch2_Threshold); 
-      Data.Civ2_U_Diff(ind_good)=Data.Civ2_U(ind_good)-Ures;
-      Data.Civ2_V_Diff(ind_good)=Data.Civ2_V(ind_good)-Vres;
-      Data.Civ2_FF(ind_good)=FFres;
-      Data.CivStage=Data.CivStage+1;                             
+    Data.Civ2_U_smooth(ind_good)=Ures;
+    Data.Civ2_V_smooth(ind_good)=Vres;
+    Data.Civ2_FF(ind_good)=FFres;
+    Data.CivStage=Data.CivStage+1;                             
 end  
 
Index: /trunk/src/find_field_indices.m
===================================================================
--- /trunk/src/find_field_indices.m	(revision 396)
+++ /trunk/src/find_field_indices.m	(revision 397)
@@ -102,5 +102,5 @@
 % find the spatial dimensions and vector components 
 ListRole={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','warnflag','errorflag',...
-    'ancillary','image','color','discrete','scalar'};
+    'ancillary','image','color','discrete','scalar','coord_tps'};
 for icell=1:length(CellVarIndex)
     for ilist=1:numel(ListRole)
Index: /trunk/src/find_file_series.m
===================================================================
--- /trunk/src/find_file_series.m	(revision 396)
+++ /trunk/src/find_file_series.m	(revision 397)
@@ -55,11 +55,11 @@
 if strcmp( FileType,'multimage')||strcmp( FileType,'video')
     NomType='*';
-    i1_series=(1:FileInfo.NbFrame)';
+    i1_series=(1:FileInfo.NumberOfFrames)';
 end
 
 if strcmp(NomType,'')||strcmp(NomType,'*')||strcmp(option,'filetype')
     if exist(fullfileinput,'file')
-        RootFile=fileinput;% case of constant name (no indexing)
-       % [tild,RootFile]=fileparts(fileinput);% case of constant name (no indexing)
+      %  RootFile=fileinput;% case of constant name (no indexing)
+        [tild,RootFile]=fileparts(fileinput);% case of constant name (no indexing)
     else
         RootFile='';
Index: /trunk/src/get_file_type.m
===================================================================
--- /trunk/src/get_file_type.m	(revision 396)
+++ /trunk/src/get_file_type.m	(revision 397)
@@ -10,8 +10,8 @@
 % INPUT:
 % fileinput: name, including path, of the file to analyse
-function [FileType,FileInfo,Object]=get_file_type(fileinput)
+function [FileType,FileInfo,VideoObject]=get_file_type(fileinput)
 FileType='';
 FileInfo=[];
-Object=[];
+VideoObject=[];
 [tild,tild,FileExt]=fileparts(fileinput);
 
@@ -70,11 +70,9 @@
             if error_nc
                 try
-                    if exist('VideoReader','file')%recent version of Matlab
-                        Object=VideoReader(fileinput);
-                    else
-                        Object=mmreader(fileinput);%older Matlab function for movies
-                    end
-                    FileType='video';
-                    FileInfo.NbFrame=get(Object,'NumberOfFrames');
+                    if exist('VideoReader.m','file')%recent version of Matlab
+                        VideoObject=VideoReader(fileinput);
+                        FileInfo.NumberOfFrames=get(VideoObject,'NumberOfFrames');
+                        FileType='video';
+                    end             
                 end
             end
Index: /trunk/src/plot_field.m
===================================================================
--- /trunk/src/plot_field.m	(revision 396)
+++ /trunk/src/plot_field.m	(revision 397)
@@ -286,5 +286,6 @@
         if length(FieldData.VarAttribute)>=VarIndex(ivar)
             VarAttribute=FieldData.VarAttribute{VarIndex(ivar)};
-            if isfield(VarAttribute,'Role')&&strcmp(VarAttribute.Role,'ancillary')
+            if isfield(VarAttribute,'Role')&&(strcmp(VarAttribute.Role,'ancillary')||strcmp(VarAttribute.Role,'coord_tps')...
+                    ||strcmp(VarAttribute.Role,'vector_x_tps')||strcmp(VarAttribute.Role,'vector_y_tps'))
                 checkancillary=1;
             end
@@ -296,6 +297,8 @@
                 VarValue=VarValue';
             end
+            if size(VarValue,1)==1
             txt=[VarName '=' num2str(VarValue)];
             txt_cell=[txt_cell;{txt}];
+            end
         end
     end
Index: /trunk/src/plot_object.m
===================================================================
--- /trunk/src/plot_object.m	(revision 396)
+++ /trunk/src/plot_object.m	(revision 397)
@@ -168,5 +168,5 @@
         yline=[yline; ObjectData.Coord(1,2)];
     elseif isequal(ObjectData.Type,'plane')|| isequal(ObjectData.Type,'volume') 
-        phi=ObjectData.Phi*pi/180;%angle in radians
+        phi=ObjectData.Angle(3)*pi/180;%angle in radians
         Xend_x=xline(1)+XMax*cos(phi);
         Xend_y=yline(1)+XMax*sin(phi);
Index: /trunk/src/proj_field.m
===================================================================
--- /trunk/src/proj_field.m	(revision 396)
+++ /trunk/src/proj_field.m	(revision 397)
@@ -1,5 +1,5 @@
 %'proj_field': projects the field on a projection object
 %--------------------------------------------------------------------------
-%  function [ProjData,errormsg]=proj_field(FieldData,ObjectData)
+%  function [ProjData,errormsg]=proj_field(FieldData,ObjectData,FieldName)
 %
 % OUTPUT:
@@ -20,5 +20,5 @@
 %    .ProjMode=mode of projection ;
 %    .CoordUnit: 'px', 'cm' units for the coordinates defining the object
-%    .Phi  angle of rotation (=0 by default)
+%    .Angle (  angles of rotation (=[0 0 0] by default)
 %    .ProjAngle=angle of projection;
 %    .DX,.DY,.DZ=increments along each coordinate
@@ -82,7 +82,14 @@
 function [ProjData,errormsg]=proj_field(FieldData,ObjectData,FieldName)
 errormsg='';%default
+if ~exist('FieldName','var')
+    FieldName='';
+end
 %% case of no projection (object is used only as graph display)
 if isfield(ObjectData,'ProjMode') && (isequal(ObjectData.ProjMode,'none')||isequal(ObjectData.ProjMode,'mask_inside')||isequal(ObjectData.ProjMode,'mask_outside'))
+    if ~isempty(FieldName)
+        [ProjData,errormsg]=calc_field(FieldName,FieldData);
+    else
     ProjData=[];
+    end
     return
 end
@@ -123,5 +130,5 @@
 %%%%%%%%%%
 
-%% apply projection depending on the object style
+%% apply projection depending on the object type
 switch ObjectData.Type
     case 'points'
@@ -136,5 +143,5 @@
         end
     case 'plane'
-            [ProjData,errormsg] = proj_plane(FieldData,ObjectData);
+            [ProjData,errormsg] = proj_plane(FieldData,ObjectData,FieldName);
     case 'volume'
         [ProjData,errormsg] = proj_volume(FieldData,ObjectData);
@@ -892,5 +899,5 @@
 if isfield(ObjectData,'ProjMode'),ProjMode=ObjectData.ProjMode; end;
 
-%axis origin
+%% axis origin
 if isempty(ObjectData.Coord)
     ObjectData.Coord(1,1)=0;%origin of the plane set to [0 0] by default
@@ -899,5 +906,5 @@
 end
 
-%rotation angles 
+%% rotation angles 
 PlaneAngle=[0 0 0]; 
 norm_plane=[0 0 1];
@@ -921,5 +928,5 @@
 testangle=~isequal(PlaneAngle,[0 0 0]);% && ~test90y && ~test90x;%=1 for slanted plane 
 
-%mesh sizes DX and DY
+%% mesh sizes DX and DY
 DX=0;
 DY=0; %default 
@@ -936,5 +943,5 @@
 end
 
-%extrema along each axis
+%% extrema along each axis
 testXMin=0;
 testXMax=0;
@@ -958,5 +965,5 @@
 end
 
-% initiate Matlab  structure for physical field
+%% initiate Matlab  structure for physical field
 [ProjData,errormsg]=proj_heading(FieldData,ObjectData);
 ProjData.NbDim=2;
@@ -968,5 +975,4 @@
     ProjData.Mesh=FieldData.Mesh;
 end
-
 error=0;%default
 flux=0;
@@ -1017,12 +1023,13 @@
     
     %% case of input fields with unstructured coordinates
+    coord_z=0;%default
     if testX
         XName=FieldData.ListVarName{ivar_X};
         YName=FieldData.ListVarName{ivar_Y};
-        eval(['coord_x=FieldData.' XName ';'])
-        eval(['coord_y=FieldData.' YName ';'])
+        coord_x=FieldData.(XName);
+        coord_y=FieldData.(YName);
         if length(ivar_Z)==1
             ZName=FieldData.ListVarName{ivar_Z};
-            eval(['coord_z=FieldData.' ZName ';'])
+            coord_z=FieldData.(ZName);
         end
         
@@ -1051,19 +1058,13 @@
         
         %rotate coordinates if needed: 
+        Psi=PlaneAngle(1);
+        Theta=PlaneAngle(2);
+        Phi=PlaneAngle(3);
         if testangle && ~test90y && ~test90x;%=1 for slanted plane
-            %             coord_X=coord_x;
-            %             coord_Y=coord_y;
-            %             if ~isequal(Theta,0)
-            %                 coord_Y=coord_Y *cos(Theta);
-            %             end
-            %         else
             coord_X=(coord_x *cos(Phi) + coord_y* sin(Phi));
             coord_Y=(-coord_x *sin(Phi) + coord_y *cos(Phi))*cos(Theta);
-            %         end
-            %         if ~isempty(ivar_Z)
             coord_Y=coord_Y+coord_z *sin(Theta);
-            %         end
-            %         if testangle
             coord_X=(coord_X *cos(Psi) - coord_Y* sin(Psi));%A VERIFIER
+
             coord_Y=(coord_X *sin(Psi) + coord_Y* cos(Psi));
         else
@@ -1163,52 +1164,52 @@
             FF=zeros(1,length(coord_y_proj)*length(coord_x_proj));
             testFF=0;
+            FieldName
             if ~isempty(FieldName)
-                FieldData=calc_field(FieldName,FieldData,XI,YI);
-            end
-            for ivar=VarIndex
-                VarName=FieldData.ListVarName{ivar};
-                if ~( ivar==ivar_X || ivar==ivar_Y || ivar==ivar_Z || ivar==ivar_F || ivar==ivar_FF || test_anc(ivar)==1)
-                    ivar_new=ivar_new+1;
-                    ProjData.ListVarName=[ProjData.ListVarName {VarName}];
+                ProjData=calc_field(FieldName,FieldData,[XI YI]);
+            else
+                for ivar=VarIndex
+                    VarName=FieldData.ListVarName{ivar};
+                    if ~( ivar==ivar_X || ivar==ivar_Y || ivar==ivar_Z || ivar==ivar_F || ivar==ivar_FF || test_anc(ivar)==1)
+                        ivar_new=ivar_new+1;
+                        ProjData.ListVarName=[ProjData.ListVarName {VarName}];
+                        ProjData.VarDimName=[ProjData.VarDimName {DimCell}];
+                        if isfield(FieldData,'VarAttribute') && length(FieldData.VarAttribute) >=ivar
+                            ProjData.VarAttribute{ivar_new+nbcoord}=FieldData.VarAttribute{ivar};
+                        end
+                        if  ~isequal(ivar_FF,0)
+                            FieldData.(VarName)=FieldData.(VarName)(indsel);
+                        end
+                        %                     if isfield(FieldData,[VarName '_tps'])
+                        %                         [XI,YI]=meshgrid(coord_x_proj,coord_y_proj');
+                        %                         XI=reshape(XI,[],1);
+                        %                         YI=reshape(YI,[],1);
+                        %
+                        ProjData.(VarName)=griddata_uvmat(double(coord_X),double(coord_Y),double(FieldData.(VarName)),coord_x_proj,coord_y_proj',rho);
+                        varline=reshape(ProjData.(VarName),1,length(coord_y_proj)*length(coord_x_proj));
+                        FFlag= isnan(varline); %detect undefined values NaN
+                        indnan=find(FFlag);
+                        if~isempty(indnan)
+                            varline(indnan)=zeros(size(indnan));
+                            ProjData.(VarName)=reshape(varline,length(coord_y_proj),length(coord_x_proj));
+                            FF(indnan)=ones(size(indnan));
+                            testFF=1;
+                        end
+                        if ivar==ivar_U
+                            ivar_U=ivar_new;
+                        end
+                        if ivar==ivar_V
+                            ivar_V=ivar_new;
+                        end
+                        if ivar==ivar_W
+                            ivar_W=ivar_new;
+                        end
+                    end
+                end
+                if testFF
+                    ProjData.FF=reshape(FF,length(coord_y_proj),length(coord_x_proj));
+                    ProjData.ListVarName=[ProjData.ListVarName {'FF'}];
                     ProjData.VarDimName=[ProjData.VarDimName {DimCell}];
-                    if isfield(FieldData,'VarAttribute') && length(FieldData.VarAttribute) >=ivar
-                        ProjData.VarAttribute{ivar_new+nbcoord}=FieldData.VarAttribute{ivar};
-                    end
-                    if  ~isequal(ivar_FF,0)
-                        FieldData.(VarName)=FieldData.(VarName)(indsel);
-                    end
-%                     if isfield(FieldData,[VarName '_tps'])
-%                         [XI,YI]=meshgrid(coord_x_proj,coord_y_proj');
-%                         XI=reshape(XI,[],1);
-%                         YI=reshape(YI,[],1);
-%                         
-                   if ~isempty(FieldName)
-                        ProjData.(VarName)=griddata_uvmat(double(coord_X),double(coord_Y),double(FieldData.(VarName)),coord_x_proj,coord_y_proj',rho);
-                    end
-                    varline=reshape(ProjData.(VarName),1,length(coord_y_proj)*length(coord_x_proj));
-                    FFlag= isnan(varline); %detect undefined values NaN
-                    indnan=find(FFlag);
-                    if~isempty(indnan)
-                        varline(indnan)=zeros(size(indnan));
-                        ProjData.(VarName)=reshape(varline,length(coord_y_proj),length(coord_x_proj));
-                        FF(indnan)=ones(size(indnan));
-                        testFF=1;
-                    end
-                    if ivar==ivar_U
-                        ivar_U=ivar_new;
-                    end
-                    if ivar==ivar_V
-                        ivar_V=ivar_new;
-                    end
-                    if ivar==ivar_W
-                        ivar_W=ivar_new;
-                    end
-                end
-            end
-            if testFF
-                ProjData.FF=reshape(FF,length(coord_y_proj),length(coord_x_proj));
-                ProjData.ListVarName=[ProjData.ListVarName {'FF'}];
-                ProjData.VarDimName=[ProjData.VarDimName {DimCell}];
-                ProjData.VarAttribute{ivar_new+1+nbcoord}.Role='errorflag';
+                    ProjData.VarAttribute{ivar_new+1+nbcoord}.Role='errorflag';
+                end
             end
         end
Index: /trunk/src/read_civdata.m
===================================================================
--- /trunk/src/read_civdata.m	(revision 396)
+++ /trunk/src/read_civdata.m	(revision 397)
@@ -153,6 +153,6 @@
             'Civ1_X','Civ1_Y','Civ1_Z','Civ1_U','Civ1_V','Civ1_W','Civ1_C','Civ1_F','Civ1_FF',...
             'Civ1_Coord_tps','Civ1_U_tps','Civ1_V_tps','Civ1_W_tps','Civ1_SubRange','Civ1_NbSites'};
-        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','ancillary','ancillary',...
-            'ancillary','ancillary','ancillary','ancillary'};
+        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','coord_tps','vector_x_tps',...
+            'vector_y_tps','vector_z_tps','ancillary','ancillary'};
         units={'pixel','pixel','pixel','pixel','pixel','pixel','','','','pixel','pixel','pixel','pixel','pixel',''};
     case 'filter1'
@@ -160,6 +160,6 @@
             'Civ1_X','Civ1_Y','Civ1_Z','Civ1_U_smooth','Civ1_V_smooth','Civ1_W','Civ1_C','Civ1_F','Civ1_FF',...
             'Civ1_Coord_tps','Civ1_U_tps','Civ1_V_tps','Civ1_W_tps','Civ1_SubRange','Civ1_NbSites'};
-        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','ancillary','ancillary',...
-            'ancillary','ancillary','ancillary','ancillary'};
+        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','coord_tps','vector_x_tps',...
+            'vector_y_tps','vector_z_tps','ancillary','ancillary'};
         units={'pixel','pixel','pixel','pixel','pixel','pixel','','','','pixel','pixel','pixel','pixel','pixel',''};
     case 'civ2'
@@ -167,5 +167,6 @@
             'Civ2_X','Civ2_Y','Civ2_Z','Civ2_U','Civ2_V','Civ2_W','Civ2_C','Civ2_F','Civ2_FF',...
             'Civ2_Coord_tps','Civ2_U_tps','Civ2_V_tps','','Civ2_SubRange','Civ2_NbSites'};
-        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','','','','','','','',''};
+        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','coord_tps','vector_x_tps',...
+            'vector_y_tps','vector_z_tps','ancillary','ancillary'};
         units={'pixel','pixel','pixel','pixel','pixel','pixel','','','','pixel','pixel','pixel','pixel','pixel',''};
     case 'filter2'
@@ -173,5 +174,6 @@
             'Civ2_X','Civ2_Y','Civ2_Z','Civ2_U_smooth','Civ2_V_smooth','Civ2_W','Civ2_C','Civ2_F','Civ2_FF',...
             'Civ2_Coord_tps','Civ2_U_tps','Civ2_V_tps','','Civ2_SubRange','Civ2_NbSites'};
-        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','','','','','','','',''};
+        role={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','ancillary','warnflag','errorflag','coord_tps','vector_x_tps',...
+            'vector_y_tps','vector_z_tps','ancillary','ancillary'};
         units={'pixel','pixel','pixel','pixel','pixel','pixel','','','','pixel','pixel','pixel','pixel','pixel',''};
 end
Index: /trunk/src/read_field.m
===================================================================
--- /trunk/src/read_field.m	(revision 396)
+++ /trunk/src/read_field.m	(revision 397)
@@ -155,13 +155,4 @@
         end
         FieldName='image';
-%     case 'avi'
-%         try
-%             mov=aviread(ObjectName,num);
-%         catch ME
-%             errormsg=ME.message;
-%             return
-%         end
-%         A=frame2im(mov(1));
-%         FieldName='image';
     case 'vol'
         A=imread(ObjectName);
@@ -183,6 +174,6 @@
     Npz=1;%default
     npxy=size(A);
-    Rangx=[0.5 npxy(2)-0.5]; % coordinates of the first and last pixel centers
-    Rangy=[npxy(1)-0.5 0.5]; %
+%     Rangx=[0.5 npxy(2)-0.5]; % coordinates of the first and last pixel centers
+%     Rangy=[npxy(1)-0.5 0.5]; %
     Field.NbDim=2;%default
     Field.AName='image';
Index: /trunk/src/set_object.m
===================================================================
--- /trunk/src/set_object.m	(revision 396)
+++ /trunk/src/set_object.m	(revision 397)
@@ -397,4 +397,9 @@
 ObjectData=read_GUI(handles.set_object);%read the parameters defining the object in the GUI set_object
 ObjectName=ObjectData.Name;%name of the current object defined in set_object
+if iscell(ObjectData.Coord)%check for empty line
+    ObjectData.Coord=[0 0 0];
+    hhset_object=guidata(handles.set_object);
+    set(hhset_object.Coord,'Data',ObjectData.Coord)
+end
 checknan=isnan(sum(ObjectData.Coord,2));%check for NaN lines
 if ~isempty(checknan)
@@ -403,5 +408,9 @@
 if isempty(ObjectName)
     if get(hhuvmat.edit_object,'Value')% edit mode
+        if isempty(ListObject)
+            ObjectName='Plane';
+        else
         ObjectName=ListObject{IndexObj(end)};%take the name of the last (second) selected item
+        end
     else %new object
         StyleList=get(handles.Type,'String');
Index: /trunk/src/update_imadoc.m
===================================================================
--- /trunk/src/update_imadoc.m	(revision 396)
+++ /trunk/src/update_imadoc.m	(revision 397)
@@ -47,19 +47,25 @@
     % in case of movie (avi file), copy timing info in the new xml file
     [pp,outputroot]=fileparts(outputfile);
-    info=[];
+    imainfo=[];
     if exist(fullfile(pp,[outputroot '.avi']),'file')
-        info=aviinfo(fullfile(pp,[outputroot '.avi']));
-    elseif exist(fullfile(pp,[outputroot '.AVI']),'file')
-        info=fullfile(pp,[outputroot '.AVI']);
-    end 
-    if ~isempty(info)
-        [t,uid_camera]=add(t,1,'element','Camera');
-        Camera.TimeUnit='s';
-        Camera.BurstTiming.Time=0;
-        Camera.BurstTiming.Dti=1/info.FramesPerSecond;
-        Camera.BurstTiming.NbDti=info.NumFrames-1;
-        t=struct2xml(Camera,t,uid_camera);
+        FileName=fullfile(pp,[outputroot '.avi']);
+        hhh=which('videoreader');
+        if isempty(hhh)%use old video function of matlab
+            imainfo=aviinfo(FileName);
+            imainfo.FrameRate=imainfo.FramesPerSecond;
+            imainfo.NumberOfFrames=imainfo.NumFrames;
+        else %use video function videoreader of matlab
+            imainfo=get(videoreader(FileName));
+        end
+        if ~isempty(imainfo)
+            [t,uid_camera]=add(t,1,'element','Camera');
+            Camera.TimeUnit='s';
+            Camera.BurstTiming.Time=0;
+            Camera.BurstTiming.Dti=1/imainfo.FrameRate;
+            Camera.BurstTiming.NbDti=imainfo.NumberOfFrames-1;
+            t=struct2xml(Camera,t,uid_camera);
+        end
+        [t,uid_calib]=add(t,1,'element','GeometryCalib');
     end
-   [t,uid_calib]=add(t,1,'element','GeometryCalib');
 end
 t=struct2xml(GeometryCalib,t,uid_calib); 
Index: /trunk/src/uvmat.m
===================================================================
--- /trunk/src/uvmat.m	(revision 396)
+++ /trunk/src/uvmat.m	(revision 397)
@@ -641,5 +641,5 @@
 % --- Update information about a new field series (indices to scan, timing,
 %     calibration from an xml file, then refresh current plots
-function update_rootinfo(handles,i1_series,i2_series,j1_series,j2_series,FileType,MovieObject,index)
+function update_rootinfo(handles,i1_series,i2_series,j1_series,j2_series,FileType,VideoObject,index)
 %------------------------------------------------------------------------
 %% define the relevant handles depending on the index (1=first file series, 2= second file series)
@@ -689,19 +689,19 @@
 imainfo=[];
 ColorType='falsecolor'; %default
-hhh='';
-if isequal(lower(FileExt),'.avi') %.avi file
+hhh=[];
+UvData.MovieObject{index}=VideoObject;
+if ~isempty(VideoObject)
+    imainfo=get(VideoObject);
     testima=1;
-    imainfo=aviinfo([FileName]);
-    nbfield=imainfo.NumFrames;
     nbfield_j=1;
-    set(handles.Dt_txt,'String',['Dt=' num2str(1000/imainfo.FramesPerSecond) 'ms']);%display the elementary time interval in millisec
-    XmlData.Time=(0:1/imainfo.FramesPerSecond:(imainfo.NumFrames-1)/imainfo.FramesPerSecond)';
     TimeUnit='s';
-    hhh=which('mmreader');
-    ColorType=imainfo.ImageType;%='truecolor' for color images
+    XmlData.Time=(0:1/imainfo.FrameRate:(imainfo.NumberOfFrames-1)/imainfo.FrameRate)';
+    % %         nbfield=imainfo.NumberOfFrames;
+    set(handles.Dt_txt,'String',['Dt=' num2str(1000/imainfo.FrameRate) 'ms']);%display the elementary time interval in millisec
+    ColorType='truecolor';
 elseif ~isempty(FileExt(2:end))&&(~isempty(imformats(FileExt(2:end))) || isequal(FileExt,'.vol'))%&& isequal(NomType,'*')% multi-frame image
     testima=1;
     if ~isequal(SubDir,'')
-       RootFile=get(handles.RootFile,'String');
+        RootFile=get(handles.RootFile,'String');
         imainfo=imfinfo([fullfile(RootPath,SubDir,RootFile) FileIndices FileExt]);
     else
@@ -712,10 +712,5 @@
         nbfield=length(imainfo);
         nbfield_j=1;
-    end 
-end
-if ~strcmp(hhh,'')% if the function mmreader is found (recent version of matlab)
-    UvData.MovieObject{index}=mmreader([FileBase FileIndices FileExt]);
-else
-    UvData.MovieObject{index}=[];
+    end
 end
 if isfield(imainfo,'Width') && isfield(imainfo,'Height')
@@ -1923,4 +1918,5 @@
 % num_i1,num_i2,num_j1,num_j2; frame indices
 % Field: structure describing an optional input field (then replace the input file)
+
 function errormsg=refresh_field(handles,filename,filename_1,num_i1,num_i2,num_j1,num_j2,Field)
 %------------------------------------------------------------------------
@@ -2224,10 +2220,10 @@
 
 %% calculate scalar
-if (strcmp(FileType,'civdata')||strcmp(FileType,'civx'))&&~strcmp(ParamOut.FieldName,'velocity')&& ~strcmp(ParamOut.FieldName,'get_field...');% ~isequal(ParamOut.CivStage,0)%&&~isempty(FieldName)%
-    Field{1}=calc_field([{ParamOut.FieldName} {ParamOut.ColorVar}],Field{1},ParamOut.VelType);
-end
-if numel(Field)==2 && ~test_keepdata_1 && (strcmp(FileType,'civdata')||strcmp(FileType,'civx'))  &&~strcmp(ParamOut.FieldName,'velocity') && ~strcmp(ParamOut_1.FieldName,'get_field...')
-     Field{2}=calc_field([{ParamOut_1.FieldName} {ParamOut_1.ColorVar}],Field{2},ParamOut_1.VelType);
-end
+% if (strcmp(FileType,'civdata')||strcmp(FileType,'civx'))&&~strcmp(ParamOut.FieldName,'velocity')&& ~strcmp(ParamOut.FieldName,'get_field...');% ~isequal(ParamOut.CivStage,0)%&&~isempty(FieldName)%
+%     Field{1}=calc_field([{ParamOut.FieldName} {ParamOut.ColorVar}],Field{1});
+% end
+% if numel(Field)==2 && ~test_keepdata_1 && (strcmp(FileType,'civdata')||strcmp(FileType,'civx'))  &&~strcmp(ParamOut.FieldName,'velocity') && ~strcmp(ParamOut_1.FieldName,'get_field...')
+%      Field{2}=calc_field([{ParamOut_1.FieldName} {ParamOut_1.ColorVar}],Field{2});
+% end
 
 %% combine the two input fields (e.g. substract velocity fields)
@@ -2450,5 +2446,5 @@
 for imap=1:numel(IndexObj)
     iobj=IndexObj(imap);
-    [ObjectData,errormsg]=proj_field(UvData.Field,UvData.Object{iobj});% project field on the object
+    [ObjectData,errormsg]=proj_field(UvData.Field,UvData.Object{iobj})% project field on the object
 
     if ~isempty(errormsg)
@@ -4589,5 +4585,12 @@
     delete(hset_object)% delete existing version of set_object
 end
+if ~isfield(ObjectData,'Type')% default plane
+    ObjectData.Type='plane';
+end
 hset_object=set_object(ObjectData,[],ZBounds);
+if get(handles.edit_object,'Value')% edit mode
+    hhset_object=guidata(hset_object);
+    set(hhset_object.PLOT,'Enable','on')
+end
 
 
