Changeset 435 for trunk/src/uvmat.m


Ignore:
Timestamp:
May 31, 2012, 8:21:06 AM (9 years ago)
Author:
sommeria
Message:

civ improved to deal with movies. Introduction of a file type mmreader needed for Matlab 2009 (Videoreader not available)

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src

    • Property svn:ignore
      •  

        old new  
        44XML_SCHEMAS
        55bin
         6check_files.m
        67toolbox_calib
        78uvmat_doc
  • trunk/src/uvmat.m

    r434 r435  
    15281528UvData=get(handles.uvmat,'UserData');
    15291529
    1530 while get(handles.speed,'Value')~=0 && isequal(get(handles.Movie,'BusyAction'),'queue') % enable STOP command
     1530while get(handles.Movie,'Value')==1 && get(handles.speed,'Value')~=0 && isequal(get(handles.Movie,'BusyAction'),'queue') % enable STOP command
    15311531        errormsg=runpm(hObject,eventdata,handles,increment);
    15321532        if ~isempty(errormsg)
     
    15551555UvData=get(handles.uvmat,'UserData');
    15561556
    1557 while get(handles.speed,'Value')~=0 && isequal(get(handles.MovieBackward,'BusyAction'),'queue') % enable STOP command
     1557while get(handles.MovieBackward,'Value')==1 && get(handles.speed,'Value')~=0 && isequal(get(handles.MovieBackward,'BusyAction'),'queue') % enable STOP command
    15581558        errormsg=runpm(hObject,eventdata,handles,increment);
    15591559        if ~isempty(errormsg)
     
    20342034                end
    20352035            end
    2036         case 'video'
     2036        case {'video','mmreader'}
    20372037            ObjectName=UvData.MovieObject{1};         
    20382038        case 'vol' %TODO: update
     
    20942094                end
    20952095            end
    2096         case 'video'
     2096        case {'video','mmreader'}
    20972097            Name=UvData.MovieObject{2};
    20982098        case 'vol' %TODO: update
     
    24062406
    24072407%% get bounds and mesh (needed for mouse action and to open set_object)
    2408 XName=''; %default
    2409 YName='';
    2410 if ~isempty(VarType{imax}.coord_x)
    2411     XName=UvData.Field.ListVarName{VarType{imax}.coord_x};
    2412     DimIndex=VarDimIndex{CellVarIndex{imax}(1)}; %list of dim indices for the variable
    2413     nbpoints_x=DimValue(DimIndex(NbDim));
    2414       %unstructured coordinates
    2415     if ~isempty(VarType{imax}.coord_y) 
     2408if NbDim>1
     2409    XName=''; %default
     2410    YName='';
     2411    %unstructured coordinates
     2412    if ~isempty(VarType{imax}.coord_x)&&~isempty(VarType{imax}.coord_y)
     2413        XName=UvData.Field.ListVarName{VarType{imax}.coord_x};
    24162414        YName=UvData.Field.ListVarName{VarType{imax}.coord_y};
    24172415        %nbvec=length(UvData.Field.(XName));%nbre of measurement points (e.g. vectors)
     
    24222420            NbDim=2;
    24232421        end
    2424     end
    2425 %structured coordinate   
    2426 elseif numel(VarType)>=imax && numel(VarType{imax}.coord)>=NbDim && VarType{imax}.coord(NbDim)>0
    2427     XName=UvData.Field.ListVarName{VarType{imax}.coord(NbDim)};
    2428     if NbDim> 1 && VarType{imax}.coord(NbDim-1)>0
    2429         YName=UvData.Field.ListVarName{VarType{imax}.coord(NbDim-1)}; %structured coordinates
    2430     end
    2431    % VarIndex=CellVarIndex{imax}; % list of variable indices
    2432     DimIndex=VarDimIndex{CellVarIndex{imax}(1)}; %list of dim indices for the variable
    2433     nbpoints_x=DimValue(DimIndex(NbDim));
    2434     XMax=nbpoints_x;%default
    2435     XMin=1;%default
    2436 end
    2437 
    2438 if NbDim==3
    2439     if ~test_x
    2440         ZName=UvData.Field.ListVarName{VarType{imax}.coord(1)};%structured coordinates in 3D
    2441     end
    2442     ZMax=max(UvData.Field.(ZName));
    2443     ZMin=min(UvData.Field.(ZName));
    2444     UvData.Field.ZMax=ZMax;
    2445     UvData.Field.ZMin=ZMin;
    2446     test_z=1;
    2447     if isequal(ZMin,ZMax)%no z dependency
    2448         NbDim=2;
    2449         test_z=0;
    2450     end
    2451 end
    2452 if ~isempty (XName)
    2453     XMax=max(max(UvData.Field.(XName)));
    2454     XMin=min(min(UvData.Field.(XName)));
    2455     UvData.Field.NbDim=NbDim;
    2456     UvData.Field.XMax=XMax;
    2457     UvData.Field.XMin=XMin;
    2458     if NbDim >1&& ~isempty(YName)
    2459         YMax=max(max(UvData.Field.(YName)));
    2460         YMin=min(min(UvData.Field.(YName)));
    2461         UvData.Field.YMax=YMax;
    2462         UvData.Field.YMin=YMin;
    2463     end
    2464     nbvec=length(UvData.Field.(XName));
    2465     if test_x %unstructured coordinates
    2466         if test_z
    2467             UvData.Field.Mesh=((XMax-XMin)*(YMax-YMin)*(ZMax-ZMin))/nbvec;% volume per vector
    2468             UvData.Field.Mesh=(UvData.Field.Mesh)^(1/3);
    2469         else
    2470             UvData.Field.Mesh=sqrt((XMax-XMin)*(YMax-YMin)/nbvec);%2D
    2471         end
    2472     end
    2473 end
    2474 % case of structured coordinates
    2475 if ~test_x
    2476     DX=(XMax-XMin)/(nbpoints_x-1);
    2477     if NbDim >1
    2478         nbpoints_y=DimValue(DimIndex(NbDim-1));
    2479         if isempty(YName)% if the y coordinate is not expressed, it is taken as the matrix index
    2480             DY=1;
    2481             UvData.Field.YMax=nbpoints_y;
    2482             UvData.Field.YMin=1;
    2483         else
    2484             DY=(YMax-YMin)/(nbpoints_y-1);
    2485         end
    2486     end
     2422        %structured coordinate
     2423    elseif numel(VarType)>=imax && numel(VarType{imax}.coord)>=NbDim && VarType{imax}.coord(NbDim)>0
     2424        XName=UvData.Field.ListVarName{VarType{imax}.coord(NbDim)};
     2425        if NbDim> 1 && VarType{imax}.coord(NbDim-1)>0
     2426            YName=UvData.Field.ListVarName{VarType{imax}.coord(NbDim-1)}; %structured coordinates
     2427        end
     2428        % VarIndex=CellVarIndex{imax}; % list of variable indices
     2429        DimIndex=VarDimIndex{CellVarIndex{imax}(1)}; %list of dim indices for the variable
     2430        nbpoints_x=DimValue(DimIndex(NbDim));
     2431        XMax=nbpoints_x;%default
     2432        XMin=1;%default
     2433    end
     2434   
    24872435    if NbDim==3
    2488         nbpoints_z=DimValue(DimIndex(1));
    2489         DZ=(ZMax-ZMin)/(nbpoints_z-1);
    2490         UvData.Field.Mesh=(DX*DY*DZ)^(1/3);
     2436        if ~test_x
     2437            ZName=UvData.Field.ListVarName{VarType{imax}.coord(1)};%structured coordinates in 3D
     2438        end
     2439        ZMax=max(UvData.Field.(ZName));
     2440        ZMin=min(UvData.Field.(ZName));
    24912441        UvData.Field.ZMax=ZMax;
    24922442        UvData.Field.ZMin=ZMin;
     2443        test_z=1;
     2444        if isequal(ZMin,ZMax)%no z dependency
     2445            NbDim=2;
     2446            test_z=0;
     2447        end
     2448    end
     2449    if ~isempty (XName)
     2450        XMax=max(max(UvData.Field.(XName)));
     2451        XMin=min(min(UvData.Field.(XName)));
     2452        UvData.Field.NbDim=NbDim;
     2453        UvData.Field.XMax=XMax;
     2454        UvData.Field.XMin=XMin;
     2455        if NbDim >1&& ~isempty(YName)
     2456            YMax=max(max(UvData.Field.(YName)));
     2457            YMin=min(min(UvData.Field.(YName)));
     2458            UvData.Field.YMax=YMax;
     2459            UvData.Field.YMin=YMin;
     2460        end
     2461        nbvec=length(UvData.Field.(XName));
     2462        if test_x %unstructured coordinates
     2463            if test_z
     2464                UvData.Field.Mesh=((XMax-XMin)*(YMax-YMin)*(ZMax-ZMin))/nbvec;% volume per vector
     2465                UvData.Field.Mesh=(UvData.Field.Mesh)^(1/3);
     2466            else
     2467                UvData.Field.Mesh=sqrt((XMax-XMin)*(YMax-YMin)/nbvec);%2D
     2468            end
     2469        end
     2470    end
     2471    % case of structured coordinates
     2472    if ~test_x
     2473        DX=(XMax-XMin)/(nbpoints_x-1);
     2474        if NbDim >1
     2475            nbpoints_y=DimValue(DimIndex(NbDim-1));
     2476            if isempty(YName)% if the y coordinate is not expressed, it is taken as the matrix index
     2477                DY=1;
     2478                UvData.Field.YMax=nbpoints_y;
     2479                UvData.Field.YMin=1;
     2480            else
     2481                DY=(YMax-YMin)/(nbpoints_y-1);
     2482            end
     2483        end
     2484        if NbDim==3
     2485            nbpoints_z=DimValue(DimIndex(1));
     2486            DZ=(ZMax-ZMin)/(nbpoints_z-1);
     2487            UvData.Field.Mesh=(DX*DY*DZ)^(1/3);
     2488            UvData.Field.ZMax=ZMax;
     2489            UvData.Field.ZMin=ZMin;
     2490        else
     2491            UvData.Field.Mesh=DX;%sqrt(DX*DY);
     2492        end
     2493    end
     2494    % adjust the mesh to a value 1, 2 , 5 *10^n
     2495    ord=10^(floor(log10(UvData.Field.Mesh)));%order of magnitude
     2496    if UvData.Field.Mesh/ord>=5
     2497        UvData.Field.Mesh=5*ord;
     2498    elseif UvData.Field.Mesh/ord>=2
     2499        UvData.Field.Mesh=2*ord;
    24932500    else
    2494         UvData.Field.Mesh=DX;%sqrt(DX*DY);
    2495     end
    2496 end
    2497 % adjust the mesh to a value 1, 2 , 5 *10^n
    2498 ord=10^(floor(log10(UvData.Field.Mesh)));%order of magnitude
    2499 if UvData.Field.Mesh/ord>=5
    2500     UvData.Field.Mesh=5*ord;
    2501 elseif UvData.Field.Mesh/ord>=2
    2502     UvData.Field.Mesh=2*ord;
    2503 else
    2504     UvData.Field.Mesh=ord;
    2505 end
    2506 UvData.Object{1}.Type='plane';%main plotting plane
    2507 UvData.Object{1}.ProjMode='projection';%main plotting plane
    2508 UvData.Object{1}.DisplayHandle.uvmat=[]; %plane not visible in uvmat
    2509 UvData.Object{1}.DisplayHandle.view_field=[]; %plane not visible in uvmat
    2510 
    2511 %% 3D case (menuvolume)
    2512 if NbDim==3% && UvData.NewSeries
    2513     test_set_object=1;
    2514     hset_object=findobj(allchild(0),'tag','set_object');% look for the set_object GUI
    2515     ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider
    2516     ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider
    2517     if ~isempty(hset_object) %if set_object is detected
    2518           delete(hset_object);% delete the GUI set_object if it does not fit
    2519     end
    2520     if test_set_object% reinitiate the GUI set_object
    2521         delete_object(1);% delete the current projection object in the list UvData.Object, delete its graphic representations and update the list displayed in handles.ListObject and 2
    2522         UvData.Object{1}.NbDim=NbDim;%test for 3D objects
    2523         UvData.Object{1}.RangeZ=UvData.Field.Mesh;%main plotting plane
    2524         UvData.Object{1}.Coord(1,3)=(UvData.Field.ZMin+UvData.Field.ZMax)/2;%section at a middle plane chosen
    2525         UvData.Object{1}.Angle=[0 0 0];
    2526         UvData.Object{1}.HandlesDisplay=plot(0,0,'Tag','proj_object');% A REVOIR
    2527         UvData.Object{1}.Name='1-PLANE';
    2528         UvData.Object{1}.enable_plot=1;
    2529         set_object(UvData.Object{1},handles,ZBounds);
    2530         set(handles.ListObject,'Value',1);
    2531         set(handles.ListObject,'String',{'1-PLANE'});
    2532         set(handles.edit_object,'Value',1)% put the plane in edit mode to enable the z cursor
    2533         edit_object_Callback([],[], handles)
    2534     end
    2535     %multilevel case (single menuplane in a 3D space)
    2536 elseif isfield(UvData,'Z')
    2537     if isfield(UvData,'CoordType')&& isequal(UvData.CoordType,'phys') && isfield(UvData,'XmlData')
    2538         XmlData=UvData.XmlData{1};
    2539         if isfield(XmlData,'PlanePos')
    2540             UvData.Object{1}.Coord=XmlData.PlanePos(UvData.ZIndex,:);
    2541         end
    2542         if isfield(XmlData,'PlaneAngle')
    2543             siz=size(XmlData.PlaneAngle);
    2544             indangle=min(siz(1),UvData.ZIndex);%take first angle if a single angle is defined (translating scanning)
    2545             UvData.Object{1}.PlaneAngle=XmlData.PlaneAngle(indangle,:);
    2546         end
    2547     elseif isfield(UvData,'ZIndex')
    2548         UvData.Object{1}.ZObject=UvData.ZIndex;
    2549     end
    2550 end
     2501        UvData.Field.Mesh=ord;
     2502    end
     2503    UvData.Object{1}.Type='plane';%main plotting plane
     2504    UvData.Object{1}.ProjMode='projection';%main plotting plane
     2505    UvData.Object{1}.DisplayHandle.uvmat=[]; %plane not visible in uvmat
     2506    UvData.Object{1}.DisplayHandle.view_field=[]; %plane not visible in uvmat
     2507   
     2508    %% 3D case (menuvolume)
     2509    if NbDim==3% && UvData.NewSeries
     2510        test_set_object=1;
     2511        hset_object=findobj(allchild(0),'tag','set_object');% look for the set_object GUI
     2512        ZBounds(1)=UvData.Field.ZMin; %minimum for the Z slider
     2513        ZBounds(2)=UvData.Field.ZMax;%maximum for the Z slider
     2514        if ~isempty(hset_object) %if set_object is detected
     2515            delete(hset_object);% delete the GUI set_object if it does not fit
     2516        end
     2517        if test_set_object% reinitiate the GUI set_object
     2518            delete_object(1);% delete the current projection object in the list UvData.Object, delete its graphic representations and update the list displayed in handles.ListObject and 2
     2519            UvData.Object{1}.NbDim=NbDim;%test for 3D objects
     2520            UvData.Object{1}.RangeZ=UvData.Field.Mesh;%main plotting plane
     2521            UvData.Object{1}.Coord(1,3)=(UvData.Field.ZMin+UvData.Field.ZMax)/2;%section at a middle plane chosen
     2522            UvData.Object{1}.Angle=[0 0 0];
     2523            UvData.Object{1}.HandlesDisplay=plot(0,0,'Tag','proj_object');% A REVOIR
     2524            UvData.Object{1}.Name='1-PLANE';
     2525            UvData.Object{1}.enable_plot=1;
     2526            set_object(UvData.Object{1},handles,ZBounds);
     2527            set(handles.ListObject,'Value',1);
     2528            set(handles.ListObject,'String',{'1-PLANE'});
     2529            set(handles.edit_object,'Value',1)% put the plane in edit mode to enable the z cursor
     2530            edit_object_Callback([],[], handles)
     2531        end
     2532        %multilevel case (single menuplane in a 3D space)
     2533    elseif isfield(UvData,'Z')
     2534        if isfield(UvData,'CoordType')&& isequal(UvData.CoordType,'phys') && isfield(UvData,'XmlData')
     2535            XmlData=UvData.XmlData{1};
     2536            if isfield(XmlData,'PlanePos')
     2537                UvData.Object{1}.Coord=XmlData.PlanePos(UvData.ZIndex,:);
     2538            end
     2539            if isfield(XmlData,'PlaneAngle')
     2540                siz=size(XmlData.PlaneAngle);
     2541                indangle=min(siz(1),UvData.ZIndex);%take first angle if a single angle is defined (translating scanning)
     2542                UvData.Object{1}.PlaneAngle=XmlData.PlaneAngle(indangle,:);
     2543            end
     2544        elseif isfield(UvData,'ZIndex')
     2545            UvData.Object{1}.ZObject=UvData.ZIndex;
     2546        end
     2547    end
     2548end
     2549
    25512550testnewseries=UvData.NewSeries;
    25522551UvData.NewSeries=0;% put to 0 the test for a new field series (set by RootPath_callback)
Note: See TracChangeset for help on using the changeset viewer.