Index: /trunk/src/series/civ_input.m
===================================================================
--- /trunk/src/series/civ_input.m	(revision 660)
+++ /trunk/src/series/civ_input.m	(revision 661)
@@ -87,5 +87,5 @@
 NomTypeInput=Param.InputTable{1,4};
 FileExt=Param.InputTable{1,5};
-FileType=SeriesData.FileType{1};
+FileType=SeriesData.FileType{1};%type of the first input file series
 FileInfo=SeriesData.FileInfo{1};
 FileInput=SeriesData.RefFile{1};
@@ -118,15 +118,11 @@
         [PathCiv1_ImageA,Civ1_ImageA,FileExtA]=fileparts(Data.Civ1_ImageA);
         [PathCiv1_ImageB,Civ1_ImageB,FileExtA]=fileparts(Data.Civ1_ImageB);
-        %         set(handles.Civ1_ImageA,'String',Civ1_ImageA)
-        %         set(handles.Civ1_ImageB,'String',Civ1_ImageB)
         if ~isempty(Data.Civ2_ImageA)
             [PathCiv2_ImageA,Civ2_ImageA,FileExtA]=fileparts(Data.Civ2_ImageA);
             [PathCiv2_ImageB,Civ2_ImageB,FileExtA]=fileparts(Data.Civ2_ImageB);
-            %         set(handles.Civ2_ImageA,'String',Civ2_ImageA)
-            %         set(handles.Civ2_ImageB,'String',Civ2_ImageB)
         end
         hhseries=guidata(gcbf);
         if size(Param.InputTable,1)==1
-            series('display_file_name',hhseries,Data.Civ1_ImageA,'append');
+            series('display_file_name',hhseries,Data.Civ1_ImageA,'append');%append the image series to the input list
         end
         if isfield(Data,'Txt')
@@ -145,4 +141,8 @@
         return
 end
+if numel(SeriesData.FileType)>=2 && strcmp(SeriesData.FileType{end-1},'image') &&   strcmp(SeriesData.FileType{end},'image')
+    set(handles.ListCompareMode,'Value',3)% we compare two image series term to term ('shift')
+    set(handles.PairIndices,'Visible','off')
+end
 
 %% TODO: get corresponding image in nc case
@@ -188,7 +188,4 @@
     end
 end
-%list_operation={'CheckCiv1','CheckFix1','CheckPatch1','CheckCiv2','CheckFix2','CheckPatch2'};
-
-%set(handles.(ListOptions{min(ind_opening+1,6)}),'value',1)
 
 
Index: /trunk/src/series/civ_series.m
===================================================================
--- /trunk/src/series/civ_series.m	(revision 660)
+++ /trunk/src/series/civ_series.m	(revision 661)
@@ -94,7 +94,7 @@
     else
         FileType=get_file_type(filecell{1,1});
-        iview_nc=0;
-        iview_A=0;
-        iview_B=0;
+        iview_nc=0;% series index (iview) for an input nc file (for civ2 or patch2)
+        iview_A=0;% series index (iview) for the first image series
+        iview_B=0;% series index (iview) for the second image series (only non zero for option 'shift' )
         switch FileType
             case 'civdata';% =1 for images
@@ -118,35 +118,49 @@
             displ(['ERROR: the file line ' num2str(iview_A) ' must be an image'])
         end
-        RootPath=Param.InputTable{1,1};
-        RootFile=Param.InputTable{1,3};
-        SubDir=Param.InputTable{1,2};
-        NomType=Param.InputTable{1,4};
-        FileExt=Param.InputTable{1,5};
+        RootPath_A=Param.InputTable{1,1};
+        RootFile_A=Param.InputTable{1,3};
+        SubDir_A=Param.InputTable{1,2};
+        NomType_A=Param.InputTable{1,4};
+        FileExt_A=Param.InputTable{1,5};
     end
     if iview_B==0
         FileType_B=FileType_A;
         VideoObject_B=VideoObject_A;
-        PairCiv1=Param.ActionInput.PairIndices.ListPairCiv1;
+        RootPath_B=RootPath_A;
+        RootFile_B=RootFile_A;
+        SubDir_B=SubDir_A;
+        NomType_B=NomType_A;
+        FileExt_B=FileExt_A;
         PairCiv2='';
-        if isfield(Param.ActionInput.PairIndices,'ListPairCiv2')
-            PairCiv2=Param.ActionInput.PairIndices.ListPairCiv2;
-        end
-        [i1_series_Civ1,i2_series_Civ1,j1_series_Civ1,j2_series_Civ1,check_bounds,NomTypeNc]=...
-            find_pair_indices(PairCiv1,i_series{1},j_series{1},MinIndex_i,MaxIndex_i,MinIndex_j,MaxIndex_j);
-        if ~isempty(PairCiv2)
-            [i1_series_Civ2,i2_series_Civ2,j1_series_Civ2,j2_series_Civ2,check_bounds_Civ2]=...
-                find_pair_indices(PairCiv2,i_series{1},j_series{1},MinIndex_i,MaxIndex_i,MinIndex_j,MaxIndex_j);
-            check_bounds=check_bounds | check_bounds_Civ2;
-        end
-        i1_series_Civ1=i1_series_Civ1(~check_bounds);
-        i2_series_Civ1=i2_series_Civ1(~check_bounds);
-        j1_series_Civ1=j1_series_Civ1(~check_bounds);
-        j2_series_Civ1=j2_series_Civ1(~check_bounds);
-        if isempty(j_series{1})
-            FrameIndex_A_Civ1=i1_series_Civ1;
-            FrameIndex_B_Civ1=i2_series_Civ1;
-        else
-            FrameIndex_A_Civ1=j1_series_Civ1;
-            FrameIndex_B_Civ1=j2_series_Civ1;
+        switch Param.ActionInput.ListCompareMode
+            case 'PIV'
+                PairCiv1=Param.ActionInput.PairIndices.ListPairCiv1;
+                if isfield(Param.ActionInput.PairIndices,'ListPairCiv2')
+                    PairCiv2=Param.ActionInput.PairIndices.ListPairCiv2;
+                end
+                [i1_series_Civ1,i2_series_Civ1,j1_series_Civ1,j2_series_Civ1,check_bounds,NomTypeNc]=...
+                    find_pair_indices(PairCiv1,i_series{1},j_series{1},MinIndex_i,MaxIndex_i,MinIndex_j,MaxIndex_j);
+                if ~isempty(PairCiv2)
+                    [i1_series_Civ2,i2_series_Civ2,j1_series_Civ2,j2_series_Civ2,check_bounds_Civ2]=...
+                        find_pair_indices(PairCiv2,i_series{1},j_series{1},MinIndex_i,MaxIndex_i,MinIndex_j,MaxIndex_j);
+                    check_bounds=check_bounds | check_bounds_Civ2;
+                end
+                i1_series_Civ1=i1_series_Civ1(~check_bounds);
+                i2_series_Civ1=i2_series_Civ1(~check_bounds);
+                j1_series_Civ1=j1_series_Civ1(~check_bounds);
+                j2_series_Civ1=j2_series_Civ1(~check_bounds);
+            case 'displacement'
+                i1_series_Civ1=Param.ActionInput.OriginIndex*ones(size(i_series{1}));
+                i2_series_Civ1=i_series{1};i2_series_Civ2=i_series{1};
+                j1_series_Civ1=ones(size(i_series{1}));% first j index is 1
+                if isempty(j_series{1})
+                    j2_series_Civ1=ones(size(i_series{1}));
+                else
+                    j2_series_Civ1=j_series{1};
+                end
+                i1_series_Civ2=i1_series_Civ1;
+                j1_series_Civ2=j1_series_Civ1;
+                j2_series_Civ2=j2_series_Civ1;
+                NomTypeNc=NomType;
         end
         if ~isempty(PairCiv2)
@@ -165,8 +179,31 @@
     else
         [FileType_B,FileInfo,VideoObject_B]=get_file_type(filecell{2,1});
-        if isempty(find(strcmp(FileType_B,{'multimage','mmreader','video'})))
-            displ(['ERROR: the file line ' num2str(iview_B) ' must be an image'])
-        end
-        %TODO : introduce the second file series if relevant: case %displacement
+        if ~ismember(FileType_B,{'image','multimage','mmreader','video'})
+            displ_uvmat('ERROR',['the file line ' num2str(iview_B) ' must be an image'])
+        end
+        i1_series_Civ1=i_series{1};i1_series_Civ2=i_series{1};
+        i2_series_Civ1=i_series{1};i2_series_Civ2=i_series{1};
+        if isempty(j_series{1})
+            j1_series_Civ1=ones(size(i_series{1}));
+            j2_series_Civ1=ones(size(i_series{1}));
+        else
+            j1_series_Civ1=j_series{1};
+            j2_series_Civ1=j_series{1};
+        end
+        j1_series_Civ2=j1_series_Civ1;
+        j2_series_Civ2=j2_series_Civ1;
+        NomTypeNc=NomType_A;
+        RootPath_B=Param.InputTable{2,1};
+        RootFile_B=Param.InputTable{2,3};
+        SubDir_B=Param.InputTable{2,2};
+        NomType_B=Param.InputTable{2,4};
+        FileExt_B=Param.InputTable{2,5};
+    end
+    if isempty(j_series{1})
+        FrameIndex_A_Civ1=i1_series_Civ1;
+        FrameIndex_B_Civ1=i2_series_Civ1;
+    else
+        FrameIndex_A_Civ1=j1_series_Civ1;
+        FrameIndex_B_Civ1=j2_series_Civ1;
     end
 end
@@ -189,5 +226,5 @@
 
 %% get timing from the ImaDoc file or input video
-XmlFileName=find_imadoc(RootPath,SubDir,RootFile,FileExt);
+XmlFileName=find_imadoc(RootPath_A,SubDir_A,RootFile_A,FileExt_A);
 time=[];
 if ~isempty(XmlFileName)
@@ -249,11 +286,16 @@
             end
         else
-            ImageName_A=fullfile_uvmat(RootPath,SubDir,RootFile,FileExt,NomType,i1_series_Civ1(ifield),[],j1_series_Civ1(ifield));
+            ImageName_A=fullfile_uvmat(RootPath_A,SubDir_A,RootFile_A,FileExt_A,NomType_A,i1_series_Civ1(ifield),[],j1_series_Civ1(ifield));
             [par_civ1.ImageA,VideoObject_A] = read_image(ImageName_A,FileType_A,VideoObject_A,FrameIndex_A_Civ1(ifield));
-            ImageName_B=fullfile_uvmat(RootPath,SubDir,RootFile,FileExt,NomType,i2_series_Civ1(ifield),[],j2_series_Civ1(ifield));
+            ImageName_B=fullfile_uvmat(RootPath_B,SubDir_B,RootFile_B,FileExt_B,NomType_B,i2_series_Civ1(ifield),[],j2_series_Civ1(ifield));
             [par_civ1.ImageB,VideoObject_B] = read_image(ImageName_B,FileType_B,VideoObject_B,FrameIndex_B_Civ1(ifield));
         end
-        ncfile=fullfile_uvmat(RootPath,OutputDir,RootFile,'.nc',NomTypeNc,i1_series_Civ1(ifield),i2_series_Civ1(ifield),...
+        if strcmp(Param.ActionInput.ListCompareMode,'PIV')
+        ncfile=fullfile_uvmat(RootPath_A,OutputDir,RootFile_A,'.nc',NomTypeNc,i1_series_Civ1(ifield),i2_series_Civ1(ifield),...
             j1_series_Civ1(ifield),j2_series_Civ1(ifield));
+        else
+                   ncfile=fullfile_uvmat(RootPath_A,OutputDir,RootFile_A,'.nc',NomTypeNc,i2_series_Civ1(ifield),[],...
+            j1_series_Civ1(ifield),j2_series_Civ1(ifield));
+        end
         par_civ1.ImageWidth=FileInfo_A.Width;
         par_civ1.ImageHeight=FileInfo_A.Height;
