source: trunk/src/uvmat_doc/FUNCTIONS_DOC/set_object.html @ 37

Last change on this file since 37 was 37, checked in by sommeria, 14 years ago

create_grid.fig ,
uvmat_doc and all the included files added

File size: 72.8 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of set_object</title>
6  <meta name="keywords" content="set_object">
7  <meta name="description" content="'set_object': GUI to edit a projection object">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../index.html">Home</a> &gt;  <a href="index.html">.</a> &gt; set_object.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>set_object
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
24<div class="box"><strong>'set_object': GUI to edit a projection object</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
27<div class="box"><strong>function varargout = set_object(varargin) </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
30<div class="fragment"><pre class="comment">'set_object': GUI to edit a projection object
31------------------------------------------------------------------------
32 function hset_object= set_object(data, PlotHandles,ZBounds)
33 associated with the GUI set_object.fig
34
35 OUTPUT:
36 hset_object: handle of the GUI figure
37 
38 INTPUT:
39 data: structure describing the object properties
40  PlotHandles: handles for projection plots
41 Zbounds: bounds on Z ( 3D case)
42
43AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
44  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.
45AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
46     This file is part of the toolbox UVMAT.
47 
48     UVMAT is free software; you can redistribute it and/or modify
49     it under the terms of the GNU General Public License as published by
50     the Free Software Foundation; either version 2 of the License, or
51     (at your option) any later version.
52 
53     UVMAT is distributed in the hope that it will be useful,
54     but WITHOUT ANY WARRANTY; without even the implied warranty of
55     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
56     GNU General Public License (file UVMAT/COPYING.txt) for more details.
57AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</pre></div>
58
59<!-- crossreference -->
60<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
61This function calls:
62<ul style="list-style-image:url(../matlabicon.gif)">
63<li><a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>       'msgbox_uvmat': associated with GUI msgbox_uvmat.fig to display message boxes, for error, warning or input calls</li><li><a href="read_set_object.html" class="code" title="function data=read_set_object(handles)">read_set_object</a> 'read_set_object': read the data on the 'set_object' interface</li><li><a href="set_title.html" class="code" title="function TITLE=set_title(Style,ProjMode)">set_title</a>     'set_title': defines the 'TITLE' of a projection object</li><li><a href="struct2xml.html" class="code" title="function t=struct2xml(Object,t,root_uid)">struct2xml</a>  'struct2xml': transform a matlab structure to a xml tree.</li><li><a href="update_obj.html" class="code" title="function Object_out=update_obj(UvData,IndexObj,ObjectData,PlotHandles)">update_obj</a>  'update_obj': update the object graph representation and its projection field, record it in the uvmat interface</li></ul>
64This function is called by:
65<ul style="list-style-image:url(../matlabicon.gif)">
66<li><a href="mouse_up.html" class="code" title="function mouse_up(ggg,eventdata,handles)">mouse_up</a>  'mouse_up': function  activated when the mouse button is released</li><li><a href="series.html" class="code" title="function varargout = series(varargin)">series</a>   'series': master function associated to the GUI series.m for analysis field series</li><li><a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>     'uvmat': function associated with the GUI 'uvmat.fig' for images and data field visualization</li></ul>
67<!-- crossreference -->
68
69<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
70<ul style="list-style-image:url(../matlabicon.gif)">
71<li><a href="#_sub1" class="code">function set_object_OpeningFcn(hObject, eventdata, handles, data, PlotHandles,ZBounds)</a></li><li><a href="#_sub2" class="code">function varargout = set_object_OutputFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub3" class="code">function ObjectStyle_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub4" class="code">function xObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub5" class="code">function yObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub6" class="code">function zObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub7" class="code">function ProjMode_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub8" class="code">function TITLE_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub9" class="code">function Phi_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub10" class="code">function Theta_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub11" class="code">function update_slider(hObject, eventdata,handles)</a></li><li><a href="#_sub12" class="code">function DX_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub13" class="code">function DY_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub14" class="code">function DZ_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub15" class="code">function OPEN_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub16" class="code">function closefcn(gcbo,eventdata,parent_button)</a></li><li><a href="#_sub17" class="code">function PLOT_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub18" class="code">function MenuCoord_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub19" class="code">function YMin_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub20" class="code">function ZMin_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub21" class="code">function ZMax_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub22" class="code">function YMax_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub23" class="code">function XMin_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub24" class="code">function XMax_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub25" class="code">function SAVE_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub26" class="code">function z_slider_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub27" class="code">function XObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub28" class="code">function YObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub29" class="code">function ZObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub30" class="code">function HELP_Callback(hObject, eventdata, handles)</a></li></ul>
72<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
73<div class="fragment"><pre>0001 <span class="comment">%'set_object': GUI to edit a projection object</span>
740002 <span class="comment">%------------------------------------------------------------------------</span>
750003 <span class="comment">% function hset_object= set_object(data, PlotHandles,ZBounds)</span>
760004 <span class="comment">% associated with the GUI set_object.fig</span>
770005 <span class="comment">%</span>
780006 <span class="comment">% OUTPUT:</span>
790007 <span class="comment">% hset_object: handle of the GUI figure</span>
800008 <span class="comment">%</span>
810009 <span class="comment">% INTPUT:</span>
820010 <span class="comment">% data: structure describing the object properties</span>
830011 <span class="comment">%  PlotHandles: handles for projection plots</span>
840012 <span class="comment">% Zbounds: bounds on Z ( 3D case)</span>
850013 <span class="comment">%</span>
860014 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
870015 <span class="comment">%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.</span>
880016 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
890017 <span class="comment">%     This file is part of the toolbox UVMAT.</span>
900018 <span class="comment">%</span>
910019 <span class="comment">%     UVMAT is free software; you can redistribute it and/or modify</span>
920020 <span class="comment">%     it under the terms of the GNU General Public License as published by</span>
930021 <span class="comment">%     the Free Software Foundation; either version 2 of the License, or</span>
940022 <span class="comment">%     (at your option) any later version.</span>
950023 <span class="comment">%</span>
960024 <span class="comment">%     UVMAT is distributed in the hope that it will be useful,</span>
970025 <span class="comment">%     but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
980026 <span class="comment">%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
990027 <span class="comment">%     GNU General Public License (file UVMAT/COPYING.txt) for more details.</span>
1000028 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
1010029
1020030 <a name="_sub0" href="#_subfunctions" class="code">function varargout = set_object(varargin)</a>
1030031
1040032 <span class="comment">% Last Modified by GUIDE v2.5 24-Nov-2008 14:29:06</span>
1050033
1060034 <span class="comment">% Begin initialization code - DO NOT PLOT</span>
1070035 gui_Singleton = 1;
1080036 gui_State = struct(<span class="string">'gui_Name'</span>,       mfilename, <span class="keyword">...</span>
1090037                    <span class="string">'gui_Singleton'</span>,  gui_Singleton, <span class="keyword">...</span>
1100038                    <span class="string">'gui_OpeningFcn'</span>, @<a href="#_sub1" class="code" title="subfunction set_object_OpeningFcn(hObject, eventdata, handles, data, PlotHandles,ZBounds)">set_object_OpeningFcn</a>, <span class="keyword">...</span>
1110039                    <span class="string">'gui_OutputFcn'</span>,  @<a href="#_sub2" class="code" title="subfunction varargout = set_object_OutputFcn(hObject, eventdata, handles)">set_object_OutputFcn</a>, <span class="keyword">...</span>
1120040                    <span class="string">'gui_LayoutFcn'</span>,  [] , <span class="keyword">...</span>
1130041                    <span class="string">'gui_Callback'</span>,   []);
1140042 <span class="keyword">if</span> nargin &amp; isstr(varargin{1})
1150043     gui_State.gui_Callback = str2func(varargin{1});
1160044 <span class="keyword">end</span>
1170045
1180046 <span class="keyword">if</span> nargout
1190047     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
1200048 <span class="keyword">else</span>
1210049     gui_mainfcn(gui_State, varargin{:});
1220050 <span class="keyword">end</span>
1230051 <span class="comment">% End initialization code - DO NOT PLOT</span>
1240052
1250053 <span class="comment">%-------------------------------------------------------------------</span>
1260054 <span class="comment">% --- Executes just before set_object is made visible.</span>
1270055 <span class="comment">%INPUT:</span>
1280056 <span class="comment">% handles: handles of the set_object interface elements</span>
1290057 <span class="comment">%'IndexObj': NON USED ANYMORE (To suppress) index of the object (on the UvData list) that set_object will modify</span>
1300058 <span class="comment">%        if =[] or absent: index still undefined (create mode in uvmat)</span>
1310059 <span class="comment">%        if=0; no associated object (used for series), the button 'PLOT' is  then unvisible</span>
1320060 <span class="comment">%'data': read from an existing object selected in the interface</span>
1330061 <span class="comment">%      .TITLE : class of object ('POINTS','LINE',....)</span>
1340062 <span class="comment">%      .DX,DY,DZ; meshes for regular grids</span>
1350063 <span class="comment">%      .Coord: object position coordinates</span>
1360064 <span class="comment">%      .ParentButton: handle of the uicontrol object calling the interface</span>
1370065 <span class="comment">% PlotHandles: set of handles of the elements contolling the plotting of the projected field:</span>
1380066 <span class="comment">%  if =[] or absent, no plot (mask mode in uvmat)</span>
1390067 <span class="comment">% parameters on the uvmat interface (obtained by 'get_plot_handle.m')</span>
1400068 <a name="_sub1" href="#_subfunctions" class="code">function set_object_OpeningFcn(hObject, eventdata, handles, data, PlotHandles,ZBounds)</a>
1410069
1420070 <span class="comment">% Choose default command line output for set_object</span>
1430071 handles.output = hObject;
1440072
1450073 <span class="comment">% Update handles structure</span>
1460074 guidata(hObject, handles);
1470075
1480076 <span class="comment">%default</span>
1490077 <span class="keyword">if</span> ~exist(<span class="string">'ZBound'</span>,<span class="string">'var'</span>)
1500078     ZBound=0; <span class="comment">%default</span>
1510079 <span class="keyword">end</span>
1520080 set(hObject,<span class="string">'KeyPressFcn'</span>,{<span class="string">'keyboard_callback'</span>,handles})<span class="comment">%set keyboard action function (allow action on uvmat when set_object is in front)</span>
1530081 set(handles.MenuCoord,<span class="string">'ListboxTop'</span>,1)
1540082 <span class="keyword">if</span> ~exist(<span class="string">'PlotHandles'</span>,<span class="string">'var'</span>)
1550083      PlotHandles=[];
1560084 <span class="keyword">end</span>
1570085 desable_open=0;<span class="comment">%default: allow reading of object from xml file</span>
1580086 desable_plot=0;<span class="comment">%default</span>
1590087 SetData.PlotHandles=PlotHandles;
1600088 <span class="keyword">if</span> exist(<span class="string">'data'</span>,<span class="string">'var'</span>) &amp; isfield(data,<span class="string">'ParentButton'</span>)
1610089         SetData.ParentButton=data.ParentButton;
1620090         set(hObject,<span class="string">'DeleteFcn'</span>,{@<a href="#_sub16" class="code" title="subfunction closefcn(gcbo,eventdata,parent_button)">closefcn</a>,SetData.ParentButton})<span class="comment">%</span>
1630091 <span class="keyword">end</span>
1640092 set(hObject,<span class="string">'UserData'</span>,SetData)
1650093
1660094 <span class="comment">% fill the interface as set in the input data:</span>
1670095 <span class="keyword">if</span> exist(<span class="string">'data'</span>,<span class="string">'var'</span>)
1680096     <span class="keyword">if</span> isfield(data,<span class="string">'desable_open'</span>)
1690097         desable_open=data.desable_open;<span class="comment">%test to desable button OPEN (edit or display mode)</span>
1700098     <span class="keyword">end</span>
1710099     <span class="keyword">if</span> isfield(data,<span class="string">'desable_plot'</span>)
1720100         desable_plot=data.desable_plot;<span class="comment">%test to desable button PLOT (display mode)</span>
1730101     <span class="keyword">end</span>
1740102     <span class="keyword">if</span> ~isfield(data,<span class="string">'NbDim'</span>)|~isequal(data.NbDim,3)<span class="comment">%2D case</span>
1750103         set(handles.ZObject,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
1760104         set(handles.z_slider,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
1770105     <span class="keyword">else</span>
1780106         set(handles.ZObject,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
1790107         set(handles.z_slider,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
1800108         <span class="keyword">if</span> isfield(data,<span class="string">'Coord'</span>) &amp;&amp; size(data.Coord,2)==3
1810109             set(handles.ZObject,<span class="string">'String'</span>,num2str(data.Coord(1,3),4))
1820110         <span class="keyword">end</span>
1830111     <span class="keyword">end</span>
1840112     <span class="keyword">if</span> isfield(data,<span class="string">'ProjMode'</span>) &amp;&amp; isfield(data,<span class="string">'Style'</span>)
1850113         data.TITLE=<a href="set_title.html" class="code" title="function TITLE=set_title(Style,ProjMode)">set_title</a>(data.Style,data.ProjMode);<span class="comment">% define TITLE in set_object (POINTS, LINE, PATCH,...)</span>
1860114     <span class="keyword">end</span>
1870115     <span class="keyword">if</span> isfield(data,<span class="string">'TITLE'</span>)
1880116         menutitle=get(handles.TITLE,<span class="string">'String'</span>);
1890117         <span class="keyword">for</span> iline=1:length(menutitle)
1900118             strmenu=menutitle{iline};
1910119             <span class="keyword">if</span> isequal(data.TITLE,strmenu)
1920120                 set(handles.TITLE,<span class="string">'Value'</span>,iline)
1930121                 <span class="keyword">break</span>
1940122             <span class="keyword">end</span>
1950123         <span class="keyword">end</span>
1960124         <a href="#_sub8" class="code" title="subfunction TITLE_Callback(hObject, eventdata, handles)">TITLE_Callback</a>(hObject, eventdata, handles)<span class="comment">% enable edit boxes depending on TITLE</span>
1970125     <span class="keyword">end</span>
1980126     <span class="keyword">if</span> isfield(data,<span class="string">'fixedtitle'</span>)&amp;isequal(data.fixedtitle,1)
1990127         set(handles.TITLE,<span class="string">'enable'</span>,<span class="string">'off'</span>)
2000128     <span class="keyword">end</span>
2010129     <span class="keyword">if</span> isfield(data,<span class="string">'Style'</span>)
2020130         menu=get(handles.ObjectStyle,<span class="string">'String'</span>);
2030131         <span class="keyword">for</span> iline=1:length(menu)
2040132             <span class="keyword">if</span> isequal(menu{iline},data.Style)
2050133                 set(handles.ObjectStyle,<span class="string">'Value'</span>,iline)
2060134                 <span class="keyword">break</span>
2070135             <span class="keyword">end</span>
2080136         <span class="keyword">end</span>
2090137     <span class="keyword">end</span>
2100138     <span class="keyword">if</span> isfield(data,<span class="string">'ProjMode'</span>)
2110139         menu=get(handles.ProjMode,<span class="string">'String'</span>);
2120140         <span class="keyword">for</span> iline=1:length(menu)
2130141             <span class="keyword">if</span> isequal(menu{iline},data.ProjMode)
2140142                 set(handles.ProjMode,<span class="string">'Value'</span>,iline)
2150143                 <span class="keyword">break</span>
2160144             <span class="keyword">end</span>
2170145         <span class="keyword">end</span>
2180146     <span class="keyword">end</span>
2190147     <span class="keyword">if</span> isfield(data,<span class="string">'Coord'</span>) &amp; size(data.Coord,2)&gt;=2
2200148         sizcoord=size(data.Coord);
2210149         <span class="keyword">for</span> i=1:sizcoord(1)
2220150             XObject{i}=num2str(data.Coord(i,1),4);
2230151             YObject{i}=num2str(data.Coord(i,2),4);
2240152         <span class="keyword">end</span>
2250153         set(handles.XObject,<span class="string">'String'</span>,XObject)
2260154         set(handles.YObject,<span class="string">'String'</span>,YObject)
2270155         <span class="comment">%set(handles.XObject,'String',mat2cell(data.Coord(:,1),sizcoord(1)))</span>
2280156         <span class="comment">%set(handles.YObject,'String',mat2cell(data.Coord(:,2),sizcoord(1)))</span>
2290157         <span class="keyword">if</span> sizcoord(2)&gt;3
2300158             <span class="keyword">for</span> i=1:sizcoord(1)
2310159                 ZObject{i}=num2str(data.Coord(i,3),4);
2320160             <span class="keyword">end</span>
2330161             set(handles.ZObject,<span class="string">'String'</span>,ZObject)
2340162         <span class="keyword">end</span>
2350163     <span class="keyword">end</span>
2360164     <span class="keyword">if</span> isfield(data,<span class="string">'DX'</span>)
2370165         set(handles.DX,<span class="string">'String'</span>,num2str(data.DX,3))
2380166     <span class="keyword">end</span>
2390167     <span class="keyword">if</span> isfield(data,<span class="string">'DY'</span>)
2400168          set(handles.DY,<span class="string">'String'</span>,num2str(data.DY,3))
2410169     <span class="keyword">end</span>
2420170     <span class="comment">%OBSOLETE (replaced by Range)</span>
2430171 <span class="comment">%     if isfield(data,'XMin')</span>
2440172 <span class="comment">%          set(handles.XMin,'String',num2str(data.XMin,3))</span>
2450173 <span class="comment">%     end</span>
2460174 <span class="comment">%     if isfield(data,'XMax')</span>
2470175 <span class="comment">%          set(handles.XMax,'String',num2str(data.XMax,3))</span>
2480176 <span class="comment">%     end</span>
2490177 <span class="comment">%     if isfield(data,'YMin')</span>
2500178 <span class="comment">%          set(handles.YMin,'String',num2str(data.YMin,3))</span>
2510179 <span class="comment">%     end</span>
2520180 <span class="comment">%     if isfield(data,'YMax')</span>
2530181 <span class="comment">%          set(handles.YMax,'String',num2str(data.YMax,3))</span>
2540182 <span class="comment">%     end</span>
2550183     <span class="keyword">if</span> isfield(data,<span class="string">'RangeZ'</span>) &amp;&amp; length(ZBounds) &gt;= 2
2560184         set(handles.ZMax,<span class="string">'String'</span>,num2str(max(data.RangeZ),3))
2570185         DZ=max(data.RangeZ);<span class="comment">%slider step</span>
2580186         <span class="keyword">if</span> ZBounds(2)~=ZBounds(1)
2590187             rel_step(1)=min(DZ/(ZBounds(2)-ZBounds(1)),0.2);<span class="comment">%must be smaller than 1</span>
2600188             rel_step(2)=0.1;
2610189             set(handles.z_slider,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
2620190             set(handles.z_slider,<span class="string">'Min'</span>,ZBounds(1))
2630191             set(handles.z_slider,<span class="string">'Max'</span>,ZBounds(2))
2640192             set(handles.z_slider,<span class="string">'SliderStep'</span>,rel_step)
2650193             set(handles.z_slider,<span class="string">'Value'</span>,(ZBounds(1)+ZBounds(2))/2)
2660194         <span class="keyword">end</span>
2670195     <span class="keyword">end</span>
2680196     <span class="keyword">if</span> isfield(data,<span class="string">'RangeX'</span>)
2690197             set(handles.XMax,<span class="string">'String'</span>,num2str(max(data.RangeX),3))
2700198             set(handles.XMin,<span class="string">'String'</span>,num2str(min(data.RangeX),3))
2710199     <span class="keyword">end</span>
2720200     <span class="keyword">if</span> isfield(data,<span class="string">'RangeY'</span>)
2730201             set(handles.YMax,<span class="string">'String'</span>,num2str(max(data.RangeY),3))
2740202             set(handles.YMin,<span class="string">'String'</span>,num2str(min(data.RangeY),3))
2750203     <span class="keyword">end</span>
2760204     <span class="keyword">if</span> isfield(data,<span class="string">'RangeZ'</span>)
2770205             set(handles.ZMax,<span class="string">'String'</span>,num2str(max(data.RangeZ),3))
2780206             set(handles.ZMin,<span class="string">'String'</span>,num2str(min(data.RangeZ),3))
2790207     <span class="keyword">end</span> 
2800208     <span class="keyword">if</span> isfield(data,<span class="string">'Phi'</span>)
2810209          set(handles.Phi,<span class="string">'String'</span>,num2str(data.Phi,3))
2820210     <span class="keyword">end</span>
2830211     <span class="keyword">if</span> isfield(data,<span class="string">'Theta'</span>)
2840212          set(handles.Theta,<span class="string">'String'</span>,num2str(data.Theta,3))
2850213     <span class="keyword">end</span>
2860214     <span class="keyword">if</span> isfield(data,<span class="string">'Psi'</span>)
2870215          set(handles.Psi,<span class="string">'String'</span>,num2str(data.Psi,3))
2880216     <span class="keyword">end</span> 
2890217     <span class="keyword">if</span> isfield(data,<span class="string">'DZ'</span>)
2900218         set(handles.DZ,<span class="string">'String'</span>,num2str(data.DZ,3))
2910219     <span class="keyword">end</span>
2920220     <span class="keyword">if</span> isfield(data,<span class="string">'CoordType'</span>)
2930221         <span class="keyword">if</span> isequal(data.CoordType,<span class="string">'phys'</span>)
2940222             set(handles.MenuCoord,<span class="string">'Value'</span>,1)
2950223         <span class="keyword">elseif</span> isequal(data.CoordType,<span class="string">'px'</span>)
2960224              set(handles.MenuCoord,<span class="string">'Value'</span>,2)
2970225         <span class="keyword">end</span>
2980226     <span class="keyword">end</span>
2990227 <span class="keyword">end</span>
3000228 <span class="keyword">if</span> desable_open
3010229     set(handles.OPEN,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
3020230 <span class="keyword">else</span>
3030231     set(handles.OPEN,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
3040232 <span class="keyword">end</span>
3050233 <span class="keyword">if</span> desable_plot
3060234    set(handles.PLOT,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
3070235 <span class="keyword">else</span>
3080236    set(handles.PLOT,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
3090237 <span class="keyword">end</span>
3100238
3110239
3120240 <span class="comment">% --- Outputs from this function are returned to the command line.</span>
3130241 <a name="_sub2" href="#_subfunctions" class="code">function varargout = set_object_OutputFcn(hObject, eventdata, handles)</a>
3140242 <span class="comment">% varargout  cell array for returning output args (see VARARGOUT);</span>
3150243 <span class="comment">% hObject    handle to figure</span>
3160244 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
3170245 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
3180246
3190247 <span class="comment">% Get default command line output from handles structure</span>
3200248 varargout{1} = handles.output;
3210249 varargout{2}=handles;
3220250
3230251 <span class="comment">%-----------------------------------------------</span>
3240252 <span class="comment">% --- Executes on selection change in ObjectStyle.</span>
3250253 <a name="_sub3" href="#_subfunctions" class="code">function ObjectStyle_Callback(hObject, eventdata, handles)</a>
3260254 style_prev=get(handles.ObjectStyle,<span class="string">'UserData'</span>);
3270255 str=get(handles.ObjectStyle,<span class="string">'String'</span>);
3280256 val=get(handles.ObjectStyle,<span class="string">'Value'</span>);
3290257 <span class="comment">% make correspondance between different object styles</span>
3300258 <span class="comment">% if ~isequal(str{val},style_prev)</span>
3310259 Xcolumn=get(handles.XObject,<span class="string">'String'</span>);
3320260 Ycolumn=get(handles.YObject,<span class="string">'String'</span>);
3330261 <span class="keyword">if</span> ischar(Xcolumn)
3340262     sizchar=size(Xcolumn);
3350263     <span class="keyword">for</span> icol=1:sizchar(1)
3360264         Xcolumn_cell{icol}=Xcolumn(icol,:);
3370265     <span class="keyword">end</span>
3380266     Xcolumn=Xcolumn_cell;
3390267 <span class="keyword">end</span>
3400268 <span class="keyword">if</span> ischar(Ycolumn)
3410269     sizchar=size(Ycolumn);
3420270     <span class="keyword">for</span> icol=1:sizchar(1)
3430271         Ycolumn_cell{icol}=Ycolumn(icol,:);
3440272     <span class="keyword">end</span>
3450273     Ycolumn=Ycolumn_cell;
3460274 <span class="keyword">end</span>
3470275 Zcolumn={};<span class="comment">%default</span>
3480276 z_new={};
3490277 <span class="keyword">if</span> isequal(get(handles.ZObject,<span class="string">'Visible'</span>),<span class="string">'on'</span>)
3500278     data.NbDim=3; <span class="comment">%test 3D object</span>
3510279     Zcolumn=get(handles.ZObject,<span class="string">'String'</span>);
3520280     <span class="keyword">if</span> ischar(Zcolumn)
3530281         Zcolumn={Zcolumn};
3540282     <span class="keyword">end</span>
3550283 <span class="keyword">end</span>
3560284 x_new{1}=Xcolumn{1};
3570285 y_new{1}=Ycolumn{1};
3580286 <span class="keyword">if</span> ~isempty(Zcolumn)
3590287     z_new{1}=Zcolumn{1};
3600288 <span class="keyword">end</span>
3610289 <span class="keyword">if</span> isequal(str{val},<span class="string">'line'</span>)
3620290     <span class="keyword">if</span> isequal(style_prev,<span class="string">'rectangle'</span>)|isequal(style_prev,<span class="string">'ellipse'</span>)
3630291         XMax=get(handles.XMax,<span class="string">'String'</span>);
3640292         YMax=get(handles.YMax,<span class="string">'String'</span>);
3650293         x_new{2}=num2str(XMax,4);
3660294         y_new{2}=num2str(YMax,4);
3670295         set(handles.XObject,<span class="string">'String'</span>,x_new)
3680296         set(handles.YObject,<span class="string">'String'</span>,y_new)
3690297         set(handles.ZObject,<span class="string">'String'</span>,z_new)
3700298     <span class="keyword">end</span>
3710299 <span class="keyword">elseif</span> isequal(str{val},<span class="string">'polyline'</span>)
3720300 <span class="keyword">elseif</span> isequal(str{val},<span class="string">'rectangle'</span>)| isequal(str{val},<span class="string">'ellipse'</span>)
3730301      set(handles.XObject,<span class="string">'String'</span>,x_new)
3740302      set(handles.YObject,<span class="string">'String'</span>,y_new)
3750303      set(handles.ZObject,<span class="string">'String'</span>,z_new)
3760304 <span class="keyword">end</span>
3770305 <span class="comment">% end</span>
3780306             
3790307             
3800308
3810309 <a href="#_sub7" class="code" title="subfunction ProjMode_Callback(hObject, eventdata, handles)">ProjMode_Callback</a>(hObject, eventdata, handles)
3820310 <span class="comment">%store the current option</span>
3830311 str=get(handles.ObjectStyle,<span class="string">'String'</span>);
3840312 val=get(handles.ObjectStyle,<span class="string">'Value'</span>);
3850313 set(handles.ObjectStyle,<span class="string">'UserData'</span>,str{val})
3860314
3870315 <span class="comment">%----------------------------------------------</span>
3880316 <a name="_sub4" href="#_subfunctions" class="code">function xObject_Callback(hObject, eventdata, handles)</a>
3890317
3900318
3910319 <a name="_sub5" href="#_subfunctions" class="code">function yObject_Callback(hObject, eventdata, handles)</a>
3920320
3930321
3940322 <span class="comment">% --- Executes on selection change in zObject.</span>
3950323 <a name="_sub6" href="#_subfunctions" class="code">function zObject_Callback(hObject, eventdata, handles)</a>
3960324
3970325
3980326
3990327 <span class="comment">% --- Executes on selection change in ProjMode.</span>
4000328 <a name="_sub7" href="#_subfunctions" class="code">function ProjMode_Callback(hObject, eventdata, handles)</a>
4010329 menu=get(handles.ProjMode,<span class="string">'String'</span>);
4020330 value=get(handles.ProjMode,<span class="string">'Value'</span>);
4030331 ProjMode=menu{value};
4040332 menu=get(handles.ObjectStyle,<span class="string">'String'</span>);
4050333 value=get(handles.ObjectStyle,<span class="string">'Value'</span>);
4060334 ObjectStyle=menu{value};
4070335 test3D=isequal(get(handles.ZObject,<span class="string">'Visible'</span>),<span class="string">'on'</span>);<span class="comment">%3D case</span>
4080336 <span class="keyword">if</span> isequal(ObjectStyle,<span class="string">'plane'</span>)|isequal(ObjectStyle,<span class="string">'volume'</span>)
4090337     set(handles.Phi,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4100338     <span class="keyword">if</span> test3D<span class="comment">%3D case</span>
4110339         set(handles.Theta,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4120340         set(handles.Psi,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4130341     <span class="keyword">end</span>
4140342     set(handles.XMin,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4150343     set(handles.XMax,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4160344     set(handles.YMin,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4170345     set(handles.YMax,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4180346     <span class="keyword">if</span> test3D
4190347         set(handles.Theta,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4200348         set(handles.Psi,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4210349         set(handles.ZMin,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4220350         set(handles.ZMax,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4230351     <span class="keyword">end</span>
4240352 <span class="keyword">else</span>
4250353     set(handles.Phi,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4260354     set(handles.Theta,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4270355     set(handles.Psi,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4280356     set(handles.XMin,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4290357     set(handles.XMax,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4300358     set(handles.YMin,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4310359     <span class="keyword">if</span> isequal(ProjMode,<span class="string">'interp'</span>)
4320360         set(handles.YMax,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4330361     <span class="keyword">else</span>
4340362         set(handles.YMax,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4350363     <span class="keyword">end</span>
4360364     <span class="keyword">if</span> isequal(ObjectStyle,<span class="string">'rectangle'</span>)|isequal(ObjectStyle,<span class="string">'ellipse'</span>)
4370365         set(handles.XMax,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4380366     <span class="keyword">else</span>
4390367        set(handles.XMax,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4400368     <span class="keyword">end</span>
4410369     set(handles.ZMin,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4420370     set(handles.ZMax,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4430371 <span class="keyword">end</span>
4440372 TITLE_list=get(handles.TITLE,<span class="string">'String'</span>);
4450373 val=get(handles.TITLE,<span class="string">'Value'</span>);
4460374 TITLE=TITLE_list{val};
4470375 <span class="keyword">switch</span> TITLE
4480376     <span class="keyword">case</span> {<span class="string">'POINTS'</span>,<span class="string">'PATCH'</span>,<span class="string">'MASK'</span>}
4490377         set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4500378         set(handles.DY,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4510379         set(handles.DZ,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4520380     <span class="keyword">case</span> {<span class="string">'LINE'</span>}
4530381         <span class="keyword">if</span> isequal(ProjMode,<span class="string">'interp'</span>)|| isequal(ProjMode,<span class="string">'filter'</span>)
4540382             set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4550383         <span class="keyword">else</span>
4560384             set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4570385         <span class="keyword">end</span>
4580386     <span class="keyword">case</span> {<span class="string">'PLANE'</span>
4590387         <span class="keyword">if</span> isequal(ProjMode,<span class="string">'interp'</span>)|| isequal(ProjMode,<span class="string">'filter'</span>)
4600388             set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4610389             set(handles.DY,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4620390         <span class="keyword">else</span>
4630391             set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4640392             set(handles.DY,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4650393         <span class="keyword">end</span>
4660394     <span class="keyword">case</span> {<span class="string">'VOLUME'</span>}
4670395         <span class="keyword">if</span> isequal(ProjMode,<span class="string">'interp'</span>)
4680396             set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4690397             set(handles.DY,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4700398             set(handles.DZ,<span class="string">'Visible'</span>,<span class="string">'on'</span>)
4710399         <span class="keyword">else</span>
4720400             set(handles.DX,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4730401             set(handles.DY,<span class="string">'Visible'</span>,<span class="string">'off'</span>)
4740402             set(handles.DZ,<span class="string">'Visible'</span>,<span class="string">'off'</span>)   
4750403         <span class="keyword">end</span>
4760404 <span class="keyword">end</span>
4770405
4780406 <span class="comment">%---------------------------------------------</span>
4790407 <span class="comment">% --- Executes on selection change in TITLE.</span>
4800408 <a name="_sub8" href="#_subfunctions" class="code">function TITLE_Callback(hObject, eventdata, handles)</a>
4810409 <span class="comment">%---------------------------------------------</span>
4820410 hsetobject=get(handles.TITLE,<span class="string">'parent'</span>);
4830411 SetData=get(hsetobject,<span class="string">'UserData'</span>);<span class="comment">%get the hidden interface data</span>
4840412 <span class="comment">%      function named CALLBACK in UNTITLED.M with the given input arguments.</span>
4850413 menu=get(handles.TITLE,<span class="string">'String'</span>);
4860414 value=get(handles.TITLE,<span class="string">'Value'</span>);
4870415 titl=menu{value};
4880416 <span class="keyword">if</span> isequal(titl,<span class="string">'POINTS'</span>);
4890417      menu_style={<span class="string">'points'</span>};
4900418      menu_proj={<span class="string">'projection'</span>;<span class="string">'interp'</span>;<span class="string">'filter'</span>;<span class="string">'none'</span>};
4910419 <span class="keyword">elseif</span> isequal(titl,<span class="string">'LINE'</span>)
4920420      menu_style={<span class="string">'line'</span>;<span class="string">'polyline'</span>;<span class="string">'rectangle'</span>;<span class="string">'polygon'</span>;<span class="string">'ellipse'</span>};<span class="comment">%'line' =default</span>
4930421      menu_proj={<span class="string">'projection'</span>;<span class="string">'interp'</span>;<span class="string">'filter'</span>;<span class="string">'none'</span>};
4940422 <span class="keyword">elseif</span> isequal(titl,<span class="string">'PATCH'</span>)
4950423      menu_style={<span class="string">'rectangle'</span>;<span class="string">'polygon'</span>;<span class="string">'ellipse'</span>};<span class="comment">%'line' =default</span>
4960424      menu_proj={<span class="string">'inside'</span>;<span class="string">'outside'</span>};
4970425 <span class="keyword">elseif</span> isequal(titl,<span class="string">'MASK'</span>)
4980426      menu_style={<span class="string">'polygon'</span>};<span class="comment">%'line' =default</span>
4990427      menu_proj={<span class="string">'mask_inside'</span>;<span class="string">'mask_outside'</span>};
5000428 <span class="keyword">elseif</span> isequal(titl,<span class="string">'PLANE'</span>)
5010429      menu_style={<span class="string">'plane'</span>};
5020430      menu_proj={<span class="string">'projection'</span>;<span class="string">'interp'</span>;<span class="string">'filter'</span>;<span class="string">'none'</span>};
5030431 <span class="keyword">elseif</span> isequal(titl,<span class="string">'VOLUME'</span>)
5040432      menu_style={<span class="string">'volume'</span>};
5050433      menu_proj={<span class="string">'none'</span>};
5060434   
5070435 <span class="keyword">end</span>
5080436 old_menu=get(handles.ObjectStyle,<span class="string">'String'</span>);
5090437 value=get(handles.ObjectStyle,<span class="string">'Value'</span>);
5100438 old_style=old_menu{value};
5110439 teststyle=0;
5120440 <span class="keyword">for</span> iline=1:length(menu_style)
5130441     <span class="keyword">if</span> isequal(menu_style{iline},old_style)
5140442         styleval=iline;
5150443         teststyle=1;
5160444         <span class="keyword">break</span>
5170445     <span class="keyword">end</span>
5180446 <span class="keyword">end</span>
5190447 <span class="keyword">if</span> ~teststyle
5200448     new_style=[];<span class="comment">%default</span>
5210449     <span class="keyword">switch</span> old_style
5220450         <span class="keyword">case</span> <span class="string">'polyline'</span>
5230451             new_style=<span class="string">'polygon'</span>;
5240452         <span class="keyword">case</span> <span class="string">'polygon'</span>
5250453             new_style=<span class="string">'polyline'</span>;
5260454     <span class="keyword">end</span>
5270455     <span class="keyword">if</span> ~isempty(new_style)
5280456         <span class="keyword">for</span> iline=1:length(menu_style)
5290457             <span class="keyword">if</span> isequal(menu_style{iline},new_style)
5300458                 styleval=iline;
5310459                 teststyle=1;
5320460                 <span class="keyword">break</span>
5330461             <span class="keyword">end</span>
5340462         <span class="keyword">end</span>
5350463     <span class="keyword">end</span>
5360464 <span class="keyword">end</span>
5370465 <span class="keyword">if</span> ~teststyle
5380466     styleval=1;
5390467 <span class="keyword">end</span>
5400468 set(handles.ObjectStyle,<span class="string">'String'</span>,menu_style)
5410469 set(handles.ObjectStyle,<span class="string">'Value'</span>,styleval)
5420470 set(handles.ProjMode,<span class="string">'String'</span>,menu_proj)
5430471 set(handles.ProjMode,<span class="string">'Value'</span>,1)
5440472 <a href="#_sub3" class="code" title="subfunction ObjectStyle_Callback(hObject, eventdata, handles)">ObjectStyle_Callback</a>(hObject, eventdata, handles) 
5450473
5460474 <span class="comment">%---------------------------------------------</span>
5470475 <a name="_sub9" href="#_subfunctions" class="code">function Phi_Callback(hObject, eventdata, handles)</a>
5480476 <a href="#_sub11" class="code" title="subfunction update_slider(hObject, eventdata,handles)">update_slider</a>(hObject, eventdata,handles)
5490477 <span class="comment">%---------------------------------------------</span>
5500478
5510479 <a name="_sub10" href="#_subfunctions" class="code">function Theta_Callback(hObject, eventdata, handles)</a>
5520480 <a href="#_sub11" class="code" title="subfunction update_slider(hObject, eventdata,handles)">update_slider</a>(hObject, eventdata,handles)
5530481
5540482 <a name="_sub11" href="#_subfunctions" class="code">function update_slider(hObject, eventdata,handles)</a>
5550483 <span class="comment">%rotation angles</span>
5560484 Phi=(pi/180)*str2num(get(handles.Phi,<span class="string">'String'</span>));<span class="comment">%first Euler angle in radian</span>
5570485 Theta=(pi/180)*str2num(get(handles.Theta,<span class="string">'String'</span>));<span class="comment">%second Euler angle in radian</span>
5580486
5590487 <span class="comment">%components of the unitiy vector normal to the projection plane</span>
5600488 NormVec_X=-sin(Phi)*sin(Theta);
5610489 NormVec_Y=cos(Phi)*sin(Theta);
5620490 NormVec_Z=cos(Theta);
5630491 huvmat=findobj(<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the current uvmat interface handle</span>
5640492 UvData=get(huvmat,<span class="string">'UserData'</span>);<span class="comment">%Data associated to the current uvmat interface</span>
5650493 <span class="keyword">if</span> isfield(UvData,<span class="string">'X'</span>) &amp; isfield(UvData,<span class="string">'Y'</span>) &amp; isfield(UvData,<span class="string">'Z'</span>)
5660494     Z=NormVec_X *(UvData.X)+NormVec_Y *(UvData.Y)+NormVec_Z *(UvData.Z);
5670495     set(handles.z_slider,<span class="string">'Min'</span>,min(Z))
5680496     set(handles.z_slider,<span class="string">'Max'</span>,max(Z))
5690497     <a href="#_sub21" class="code" title="subfunction ZMax_Callback(hObject, eventdata, handles)">ZMax_Callback</a>(hObject, eventdata, handles)
5700498 <span class="keyword">end</span>
5710499
5720500 <a name="_sub12" href="#_subfunctions" class="code">function DX_Callback(hObject, eventdata, handles)</a>
5730501
5740502
5750503 <a name="_sub13" href="#_subfunctions" class="code">function DY_Callback(hObject, eventdata, handles)</a>
5760504
5770505
5780506 <a name="_sub14" href="#_subfunctions" class="code">function DZ_Callback(hObject, eventdata, handles)</a>
5790507
5800508
5810509
5820510 <span class="comment">%-----------------------------------------------------</span>
5830511 <span class="comment">% --- Executes on button press in OPEN.</span>
5840512 <a name="_sub15" href="#_subfunctions" class="code">function OPEN_Callback(hObject, eventdata, handles)</a>
5850513 <span class="comment">%get the object file</span>
5860514 oldfile=<span class="string">' '</span>;
5870515 huvmat=findobj(<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);
5880516 <span class="comment">% if isempty(huvmat)</span>
5890517 <span class="comment">%     huvmat=findobj(allchild(0),'Name','series');</span>
5900518 <span class="comment">% end</span>
5910519 hchild=get(huvmat,<span class="string">'Children'</span>);
5920520 hrootpath=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootPath'</span>);
5930521 <span class="keyword">if</span> ~isempty(hrootpath)
5940522     oldfile=get(hrootpath,<span class="string">'String'</span>);
5950523     <span class="keyword">if</span> iscell(oldfile)
5960524         oldfile=oldfile{1};
5970525     <span class="keyword">end</span>
5980526 <span class="keyword">end</span>
5990527 <span class="comment">%[FileName,PathName] = uigetfile('*.civ','Select a .civ file',oldfile)</span>
6000528 [FileName, PathName, filterindex] = uigetfile( <span class="keyword">...</span>
6010529        {<span class="string">'*.xml;*.mat'</span>, <span class="string">' (*.xml,*.mat)'</span>;
6020530        <span class="string">'*.xml'</span><span class="string">'.xml files '</span>; <span class="keyword">...</span>
6030531         <span class="string">'*.mat'</span><span class="string">'.mat matlab files '</span>}, <span class="keyword">...</span>
6040532         <span class="string">'Pick a file'</span>,oldfile);
6050533 fileinput=[PathName FileName];<span class="comment">%complete file name</span>
6060534 testblank=findstr(fileinput,<span class="string">' '</span>);<span class="comment">%look for blanks</span>
6070535 <span class="keyword">if</span> ~isempty(testblank)
6080536     errordlg(<span class="string">'forbidden input file name: contain blanks'</span>)
6090537     <span class="keyword">return</span>
6100538 <span class="keyword">end</span>
6110539 sizf=size(fileinput);
6120540 <span class="keyword">if</span> (~ischar(fileinput)|~isequal(sizf(1),1)),<span class="keyword">return</span>;<span class="keyword">end</span>
6130541
6140542 <span class="comment">%read the file</span>
6150543  t=xmltree(fileinput);
6160544  s=convert(t);
6170545  <span class="keyword">if</span> ~isfield(s,<span class="string">'Style'</span>)
6180546      s.Style=<span class="string">'points'</span>;
6190547  <span class="keyword">end</span>
6200548  <span class="keyword">if</span> ~isfield(s,<span class="string">'ProjMode'</span>)
6210549      s.ProjMode=<span class="string">'none'</span>;
6220550  <span class="keyword">end</span>
6230551 <span class="comment">%Display title</span>
6240552 title=<a href="set_title.html" class="code" title="function TITLE=set_title(Style,ProjMode)">set_title</a>(s.Style,s.ProjMode);<span class="comment">%update the title</span>
6250553 <span class="keyword">if</span> ~isempty(huvmat)
6260554     hhuvmat=guidata(huvmat);
6270555 <span class="comment">%     set(hhuvmat.POINTS,'Value',0)</span>
6280556 <span class="comment">%     set(hhuvmat.POINTS,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
6290557 <span class="comment">%     set(hhuvmat.LINE,'Value',0)</span>
6300558 <span class="comment">%     set(hhuvmat.LINE,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
6310559 <span class="comment">%     set(hhuvmat.PATCH,'Value',0)</span>
6320560 <span class="comment">%     set(hhuvmat.PATCH,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
6330561 <span class="comment">%     set(hhuvmat.PLANE,'Value',0)</span>
6340562 <span class="comment">%     set(hhuvmat.PLANE,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
6350563 <span class="comment">%     set(hhuvmat.VOLUME,'Value',0)</span>
6360564 <span class="comment">%     set(hhuvmat.VOLUME,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
6370565 <span class="comment">%     if ~isequal(title,'MASK')</span>
6380566 <span class="comment">%         eval(['set(hhuvmat.' title ',''Value'',1)'])</span>
6390567 <span class="comment">%         eval(['set(hhuvmat.' title ',''BackgroundColor'',[1 1 0])'])</span>
6400568 <span class="comment">%     end</span>
6410569 <span class="keyword">end</span>
6420570 menu=get(handles.TITLE,<span class="string">'String'</span>);
6430571 <span class="keyword">for</span> iline=1:length(menu)
6440572      <span class="keyword">if</span> isequal(menu{iline},title)
6450573          set(handles.TITLE,<span class="string">'Value'</span>,iline)
6460574          <span class="keyword">break</span>
6470575      <span class="keyword">end</span>
6480576 <span class="keyword">end</span>
6490577 <a href="#_sub8" class="code" title="subfunction TITLE_Callback(hObject, eventdata, handles)">TITLE_Callback</a>(hObject, eventdata, handles)
6500578 teststyle=0;
6510579 <span class="comment">% if isfield(s,'Style')</span>
6520580 menu=get(handles.ObjectStyle,<span class="string">'String'</span>);
6530581 <span class="keyword">for</span> iline=1:length(menu)
6540582     <span class="keyword">if</span> isequal(menu{iline},s.Style)
6550583         set(handles.ObjectStyle,<span class="string">'Value'</span>,iline)
6560584         teststyle=1;
6570585         <span class="keyword">break</span>
6580586     <span class="keyword">end</span>
6590587 <span class="keyword">end</span>
6600588 testmode=0;
6610589 menu=get(handles.ProjMode,<span class="string">'String'</span>);
6620590 <span class="keyword">for</span> iline=1:length(menu)
6630591     <span class="keyword">if</span> isequal(menu{iline},s.ProjMode)
6640592         set(handles.ProjMode,<span class="string">'Value'</span>,iline)
6650593         testmode=1;
6660594         <span class="keyword">break</span>
6670595     <span class="keyword">end</span>
6680596 <span class="keyword">end</span>
6690597
6700598 <a href="#_sub7" class="code" title="subfunction ProjMode_Callback(hObject, eventdata, handles)">ProjMode_Callback</a>(hObject, eventdata, handles);<span class="comment">%visualize the appropriate edit boxes</span>
6710599 <span class="keyword">if</span> isfield(s,<span class="string">'CoordType'</span>)
6720600     <span class="keyword">if</span> isequal(s.CoordType,<span class="string">'phys'</span>)
6730601         set(handles.MenuCoord,<span class="string">'Value'</span>,1)
6740602     <span class="keyword">elseif</span> isequal(s.CoordType,<span class="string">'px'</span>)
6750603         set(handles.MenuCoord,<span class="string">'Value'</span>,2)
6760604     <span class="keyword">else</span>
6770605         warndlg(<span class="string">'unknown CoordType (px or phys) in set_object.m'</span>)
6780606     <span class="keyword">end</span>
6790607 <span class="keyword">end</span>
6800608 <span class="keyword">if</span> isfield(s,<span class="string">'XMax'</span>)
6810609     set(handles.XMax,<span class="string">'String'</span>,s.XMax)
6820610 <span class="keyword">end</span>
6830611 <span class="keyword">if</span> isfield(s,<span class="string">'XMin'</span>)
6840612     set(handles.XMin,<span class="string">'String'</span>,s.XMin)
6850613 <span class="keyword">end</span>
6860614 <span class="keyword">if</span> isfield(s,<span class="string">'YMax'</span>)
6870615     set(handles.YMax,<span class="string">'String'</span>,s.YMax)
6880616 <span class="keyword">end</span>
6890617 <span class="keyword">if</span> isfield(s,<span class="string">'YMin'</span>)
6900618     set(handles.YMin,<span class="string">'String'</span>,s.YMin)
6910619 <span class="keyword">end</span>
6920620 Range=0;
6930621 <span class="keyword">if</span> isfield(s,<span class="string">'Range'</span>)
6940622     <span class="keyword">if</span> ischar(s.Range)
6950623         Range=str2num(s.Range);
6960624     <span class="keyword">else</span>
6970625         Range(1,:)=str2num(s.Range{1});
6980626         Range(2,:)=str2num(s.Range{2});
6990627     <span class="keyword">end</span>
7000628 <span class="keyword">end</span>
7010629 <span class="keyword">if</span> size(Range,2)&gt;=3
7020630     <span class="keyword">if</span> size(Range,1)&gt;=2
7030631        set(handles.ZMin,<span class="string">'String'</span>,num2str(Range(2,3),3))
7040632     <span class="keyword">end</span>
7050633     <span class="keyword">if</span> size(Range,1)&gt;=2
7060634        set(handles.ZMax,<span class="string">'String'</span>,num2str(Range(1,3),3))
7070635     <span class="keyword">end</span>
7080636 <span class="keyword">end</span>
7090637 <span class="keyword">if</span> size(Range,2)&gt;=2
7100638     <span class="keyword">if</span> size(Range,1)&gt;=2
7110639        set(handles.YMin,<span class="string">'String'</span>,num2str(Range(2,2),3))
7120640     <span class="keyword">end</span>
7130641     <span class="keyword">if</span> size(Range,1)&gt;=2
7140642        set(handles.YMax,<span class="string">'String'</span>,num2str(Range(1,2),3))
7150643     <span class="keyword">end</span>
7160644 <span class="keyword">end</span>
7170645 <span class="keyword">if</span> size(Range,2)&gt;=1
7180646     <span class="keyword">if</span> size(Range,1)&gt;=2
7190647        set(handles.XMin,<span class="string">'String'</span>,num2str(Range(2,1),3))
7200648     <span class="keyword">end</span>
7210649     <span class="keyword">if</span> size(Range,1)&gt;=2
7220650        set(handles.XMax,<span class="string">'String'</span>,num2str(Range(1,1),3))
7230651     <span class="keyword">end</span>
7240652 <span class="keyword">end</span>
7250653 <span class="keyword">if</span> isfield(s,<span class="string">'RangeX'</span>) &amp; ischar(s.RangeX)
7260654      RangeX=str2num(s.RangeX);
7270655     set(handles.XMax,<span class="string">'String'</span>,num2str(max(RangeX),3))
7280656     set(handles.XMin,<span class="string">'String'</span>,num2str(min(RangeX),3))
7290657 <span class="keyword">end</span>
7300658
7310659 <span class="keyword">if</span> isfield(s,<span class="string">'RangeY'</span>)
7320660     <span class="keyword">if</span> ischar(s.RangeY)
7330661         RangeY=str2num(s.RangeY);
7340662         set(handles.YMax,<span class="string">'String'</span>,num2str(max(RangeY),3))
7350663         set(handles.YMin,<span class="string">'String'</span>,num2str(min(RangeY),3))
7360664     <span class="keyword">end</span>
7370665 <span class="keyword">end</span>
7380666 <span class="keyword">if</span> isfield(s,<span class="string">'RangeZ'</span>)
7390667     <span class="keyword">if</span> ischar(s.RangeZ)
7400668         RangeZ=str2num(s.RangeZ);
7410669         set(handles.ZMax,<span class="string">'String'</span>,num2str(max(RangeZ),3))
7420670         set(handles.ZMin,<span class="string">'String'</span>,num2str(min(RangeZ),3))
7430671     <span class="keyword">end</span>
7440672 <span class="keyword">end</span>
7450673 <span class="keyword">if</span> isfield(s,<span class="string">'Phi'</span>)
7460674     set(handles.Phi,<span class="string">'String'</span>,s.Phi)
7470675 <span class="keyword">end</span>
7480676 <span class="keyword">if</span> isfield(s,<span class="string">'Theta'</span>)
7490677     set(handles.Theta,<span class="string">'String'</span>,s.Theta)
7500678 <span class="keyword">end</span>
7510679 <span class="keyword">if</span> isfield(s,<span class="string">'Psi'</span>)
7520680     set(handles.Psi,<span class="string">'String'</span>,s.Psi)
7530681 <span class="keyword">end</span>
7540682
7550683 <span class="keyword">if</span> isfield(s,<span class="string">'DX'</span>)
7560684     set(handles.DX,<span class="string">'String'</span>,s.DX)
7570685 <span class="keyword">end</span>
7580686 <span class="keyword">if</span> isfield(s,<span class="string">'DY'</span>)
7590687     set(handles.DY,<span class="string">'String'</span>,s.DY)
7600688 <span class="keyword">end</span>
7610689 <span class="keyword">if</span> ~isfield(s,<span class="string">'Coord'</span>)
7620690     XObject=<span class="string">'0'</span>;<span class="comment">%default</span>
7630691     YObject=<span class="string">'0'</span>;
7640692 <span class="keyword">elseif</span> ischar(s.Coord)
7650693     line=str2num(s.Coord);
7660694     XObject=num2str(line(1),4);
7670695     YObject=num2str(line(2),4);
7680696 <span class="keyword">else</span>
7690697     <span class="keyword">for</span> i=1:length(s.Coord)
7700698         line=str2num(s.Coord{i});
7710699         XObject{i}=num2str(line(1),4);
7720700         YObject{i}=num2str(line(2),4);
7730701     <span class="keyword">end</span>
7740702 <span class="keyword">end</span>
7750703 set(handles.XObject,<span class="string">'String'</span>,XObject)
7760704 set(handles.YObject,<span class="string">'String'</span>,YObject)
7770705 <span class="comment">%METTRA A JOUR ASPECT DE L'INTERFACE (COMME set_object_Opening</span>
7780706
7790707 <span class="comment">%----------------------------------------------------</span>
7800708 <span class="comment">% executed when closing: set the parent interface button to value 0</span>
7810709 <a name="_sub16" href="#_subfunctions" class="code">function closefcn(gcbo,eventdata,parent_button)</a>
7820710
7830711 huvmat=findobj(allchild(0),<span class="string">'Name'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the current uvmat interface handle</span>
7840712 <span class="keyword">if</span> ~isempty(huvmat)
7850713     hhuvmat=guidata(huvmat);
7860714     set(hhuvmat.create,<span class="string">'Value'</span>,0)
7870715     set(hhuvmat.create,<span class="string">'BackgroundColor'</span>,[0 1 0])<span class="comment">%put unactivated buttons to green</span>
7880716 <span class="comment">%     set(hhuvmat.LINE,'Value',0)</span>
7890717 <span class="comment">%     set(hhuvmat.LINE,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
7900718 <span class="comment">%     set(hhuvmat.PATCH,'Value',0)</span>
7910719 <span class="comment">%     set(hhuvmat.PATCH,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
7920720 <span class="comment">%     set(hhuvmat.PLANE,'Value',0)</span>
7930721 <span class="comment">%     set(hhuvmat.PLANE,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
7940722 <span class="comment">%     set(hhuvmat.VOLUME,'Value',0)</span>
7950723 <span class="comment">%     set(hhuvmat.VOLUME,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
7960724     set(hhuvmat.edit,<span class="string">'Value'</span>,0)
7970725     set(hhuvmat.edit,<span class="string">'BackgroundColor'</span>,[0.7 0.7 0.7])<span class="comment">%put unactivated buttons to gree</span>
7980726 <span class="keyword">end</span>
7990727 hseries=findobj(allchild(0),<span class="string">'Name'</span>,<span class="string">'series'</span>);<span class="comment">%find the current series interface handle</span>
8000728 <span class="keyword">if</span> ~isempty(hseries)
8010729     hhseries=guidata(hseries);
8020730     set(hhseries.GetObject,<span class="string">'Value'</span>,0)
8030731     set(hhseries.GetObject,<span class="string">'BackgroundColor'</span>,[0 1 0])<span class="comment">%put unactivated buttons to green</span>
8040732 <span class="keyword">end</span>
8050733
8060734 <span class="comment">%-----------------------------------------------------------------------</span>
8070735 <span class="comment">% --- Executes on button press in PLOT: PLOT the defined object and its projected field</span>
8080736 <a name="_sub17" href="#_subfunctions" class="code">function PLOT_Callback(hObject, eventdata, handles)</a>
8090737
8100738 hsetobject=get(handles.PLOT,<span class="string">'parent'</span>);
8110739 SetData=get(hsetobject,<span class="string">'UserData'</span>);<span class="comment">%get the hidden interface data</span>
8120740 huvmat=findobj(<span class="string">'Name'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the current uvmat interface handle</span>
8130741 hlist_object=findobj(huvmat,<span class="string">'Tag'</span>,<span class="string">'list_object'</span>);<span class="comment">%handles of the object list in the GUI uvmat</span>
8140742 IndexObj=get(hlist_object,<span class="string">'Value'</span>);<span class="comment">%position in the objet list</span>
8150743 UvData=get(huvmat,<span class="string">'UserData'</span>);<span class="comment">%Data associated to the GUI uvmat</span>
8160744 ObjectData=<a href="read_set_object.html" class="code" title="function data=read_set_object(handles)">read_set_object</a>(handles);<span class="comment">%read the input parameters defining the object in the GUI set_object</span>
8170745 ObjectData.HandlesDisplay=[]; <span class="comment">% new object plot by default</span>
8180746 <span class="keyword">if</span> length(UvData.Object) &gt;= IndexObj &amp;&amp; isfield(UvData.Object{IndexObj},<span class="string">'HandlesDisplay'</span>)
8190747     hdisplay=UvData.Object{IndexObj}.HandlesDisplay;
8200748     <span class="keyword">if</span> isequal(UvData.Object{IndexObj}.Style, ObjectData.Style) &amp;&amp; isequal(UvData.Object{IndexObj}.ProjMode, ObjectData.ProjMode)
8210749         ObjectData.HandlesDisplay=UvData.Object{IndexObj}.HandlesDisplay;
8220750     <span class="keyword">else</span>  <span class="comment">% for a new object styl, delete the existing object plots</span>
8230751         <span class="keyword">for</span> ih=1:length(hdisplay)
8240752             PlotData=get(hdisplay(ih),<span class="string">'UserData'</span>);
8250753             <span class="keyword">if</span> isfield(PlotData,<span class="string">'SubObject'</span>) &amp; ishandle(PlotData.SubObject)
8260754                     delete(PlotData.SubObject);
8270755             <span class="keyword">end</span>
8280756             <span class="keyword">if</span> isfield(PlotData,<span class="string">'DeformPoint'</span>) &amp; ishandle(PlotData.DeformPoint)
8290757                    delete(PlotData.DeformPoint);
8300758             <span class="keyword">end</span>
8310759             <span class="keyword">if</span> ~isequal(hdisplay(ih),0)
8320760                 delete(hdisplay(ih));
8330761             <span class="keyword">end</span>
8340762         <span class="keyword">end</span>
8350763         <span class="keyword">if</span> isfield(ObjectData,<span class="string">'plotaxes'</span>) &amp;&amp; ishandle(ObjectData.plotaxes)
8360764             delete(ObjectData.plotaxes)<span class="comment">%delete the axes for plotting the current projection result</span>
8370765         <span class="keyword">end</span>
8380766     <span class="keyword">end</span>     
8390767 <span class="keyword">end</span>
8400768
8410769 <span class="comment">% update the object plot and projection field</span>
8420770 UvData.Object{IndexObj}=<a href="update_obj.html" class="code" title="function Object_out=update_obj(UvData,IndexObj,ObjectData,PlotHandles)">update_obj</a>(UvData,IndexObj,ObjectData,SetData.PlotHandles);
8430771
8440772 set(huvmat,<span class="string">'UserData'</span>,UvData)<span class="comment">%update the data in the uvmat interface</span>
8450773 list_str=get(hlist_object,<span class="string">'String'</span>);
8460774 TITLE=<a href="set_title.html" class="code" title="function TITLE=set_title(Style,ProjMode)">set_title</a>(ObjectData.Style,ObjectData.ProjMode);
8470775 list_str{IndexObj}=[num2str(IndexObj) <span class="string">'-'</span> TITLE];
8480776 <span class="keyword">if</span> isequal(length(list_str),IndexObj)
8490777     list_str{IndexObj+1}=<span class="string">'more...'</span>;
8500778 <span class="keyword">end</span>
8510779 set(hlist_object,<span class="string">'String'</span>,list_str)
8520780 set(hlist_object,<span class="string">'Value'</span>,IndexObj)
8530781
8540782 <span class="comment">%update create buttons on the GUI uvmat: set to object edit mode after object plotting</span>
8550783 hhuvmat=guidata(huvmat);<span class="comment">%handles of elements in the uvmat GUI</span>
8560784 <span class="comment">%desactivate all create buttons in mode edit</span>
8570785 <span class="comment">% if isequal(get(hhuvmat.edit,'Value'),0)</span>
8580786     set(hhuvmat.create,<span class="string">'Value'</span>,0)
8590787     set(hhuvmat.create,<span class="string">'BackgroundColor'</span>,[0 1 0])<span class="comment">%put unactivated buttons to green</span>
8600788 <span class="comment">%     set(hhuvmat.LINE,'Value',0)</span>
8610789 <span class="comment">%     set(hhuvmat.LINE,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
8620790 <span class="comment">%     set(hhuvmat.PATCH,'Value',0)</span>
8630791 <span class="comment">%     set(hhuvmat.PATCH,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
8640792 <span class="comment">%     set(hhuvmat.PLANE,'Value',0)</span>
8650793 <span class="comment">%     set(hhuvmat.PLANE,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
8660794 <span class="comment">%     set(hhuvmat.VOLUME,'Value',0)</span>
8670795 <span class="comment">%     set(hhuvmat.VOLUME,'BackgroundColor',[0 1 0])%put unactivated buttons to green</span>
8680796 <span class="comment">% end</span>
8690797 set(hhuvmat.edit,<span class="string">'Value'</span>,1)
8700798 set(hhuvmat.edit,<span class="string">'BackgroundColor'</span>,[1 1 0]);<span class="comment">% paint the edit text in yellow</span>
8710799 set(hhuvmat.edit,<span class="string">'Value'</span>,1);<span class="comment">%</span>
8720800 UvData.MouseAction=<span class="string">'edit_object'</span>; <span class="comment">% set the edit button to 'on'</span>
8730801 set(huvmat,<span class="string">'UserData'</span>,UvData)
8740802
8750803 <span class="comment">% --- Executes on button press in MenuCoord.</span>
8760804 <a name="_sub18" href="#_subfunctions" class="code">function MenuCoord_Callback(hObject, eventdata, handles)</a>
8770805
8780806 <span class="comment">%----------------------------------------------------</span>
8790807 <a name="_sub19" href="#_subfunctions" class="code">function YMin_Callback(hObject, eventdata, handles)</a>
8800808
8810809
8820810 <a name="_sub20" href="#_subfunctions" class="code">function ZMin_Callback(hObject, eventdata, handles)</a>
8830811
8840812
8850813 <a name="_sub21" href="#_subfunctions" class="code">function ZMax_Callback(hObject, eventdata, handles)</a>
8860814 DZ=str2num(get(handles.ZMax,<span class="string">'String'</span>));
8870815 ZMin=get(handles.z_slider,<span class="string">'Min'</span>);
8880816 ZMax=get(handles.z_slider,<span class="string">'Max'</span>);
8890817 <span class="keyword">if</span> ~isequal(ZMax-ZMin,0)
8900818     rel_step(1)=DZ/(ZMax-ZMin);
8910819     rel_step(2)=0.2;
8920820     set(handles.z_slider,<span class="string">'SliderStep'</span>,rel_step)
8930821 <span class="keyword">end</span>
8940822
8950823 <a name="_sub22" href="#_subfunctions" class="code">function YMax_Callback(hObject, eventdata, handles)</a>
8960824
8970825
8980826 <a name="_sub23" href="#_subfunctions" class="code">function XMin_Callback(hObject, eventdata, handles)</a>
8990827
9000828
9010829 <a name="_sub24" href="#_subfunctions" class="code">function XMax_Callback(hObject, eventdata, handles)</a>
9020830
9030831
9040832 <span class="comment">% ------------------------------------------------------</span>
9050833 <a name="_sub25" href="#_subfunctions" class="code">function SAVE_Callback(hObject, eventdata, handles)</a>
9060834 <span class="comment">% ------------------------------------------------------</span>
9070835 Object=<a href="read_set_object.html" class="code" title="function data=read_set_object(handles)">read_set_object</a>(handles);
9080836 huvmat=findobj(<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);
9090837 <span class="comment">% UvData=get(huvmat,'UserData');</span>
9100838 <span class="keyword">if</span> isempty(huvmat)
9110839     huvmat=findobj(allchild(0),<span class="string">'Name'</span>,<span class="string">'series'</span>);
9120840 <span class="keyword">end</span>
9130841 hchild=get(huvmat,<span class="string">'Children'</span>);
9140842 hrootpath=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootPath'</span>);
9150843 <span class="keyword">if</span> isempty(hrootpath)
9160844     RootPath=<span class="string">''</span>;
9170845 <span class="keyword">else</span>
9180846     RootPath=get(hrootpath,<span class="string">'String'</span>);
9190847     <span class="keyword">if</span> iscell(RootPath)
9200848         RootPath=RootPath{1};
9210849     <span class="keyword">end</span>
9220850 <span class="keyword">end</span>
9230851 title={<span class="string">'object name'</span>};
9240852 dir_save=uigetdir(RootPath);
9250853 def={fullfile(dir_save,[<span class="string">'Object'</span> Object.CoordType <span class="string">'.xml'</span>])};
9260854 options.Resize=<span class="string">'on'</span>;
9270855 displ_txt=<span class="string">'save object as an .xml file'</span>;<span class="comment">%default display</span>
9280856 menu=get(handles.ProjMode,<span class="string">'String'</span>);
9290857 value=get(handles.ProjMode,<span class="string">'Value'</span>);
9300858 ProjMode=menu{value};
9310859 <span class="keyword">if</span> strcmp(ProjMode,<span class="string">'mask_inside'</span>)||strcmp(ProjMode,<span class="string">'mask_outside'</span>)
9320860     displ_txt=<span class="string">'save mask contour as an .xml file: to create a mask image, use save_mask on the GUI uvmat (lower right)'</span>;
9330861 <span class="keyword">end</span>
9340862 answer=<a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'INPUT_TXT'</span>,<span class="string">'save object as an .xml file'</span>,def);
9350863 <span class="comment">%answer=inputdlg('','save object in a new .xml file',1,def,'on');</span>
9360864 <span class="keyword">if</span> ~isempty(answer)
9370865     t=<a href="struct2xml.html" class="code" title="function t=struct2xml(Object,t,root_uid)">struct2xml</a>(Object);
9380866     save(t,answer{1})
9390867 <span class="keyword">end</span>
9400868 <a href="msgbox_uvmat.html" class="code" title="function varargout = msgbox_uvmat(varargin)">msgbox_uvmat</a>(<span class="string">'CONFIRMATION'</span>,[answer{1}  <span class="string">' saved'</span>])
9410869 <span class="comment">%---------------------------------------------------------</span>
9420870 <span class="comment">% --- Executes on slider movement.</span>
9430871 <a name="_sub26" href="#_subfunctions" class="code">function z_slider_Callback(hObject, eventdata, handles)</a>
9440872 <span class="comment">%---------------------------------------------------------</span>
9450873 <span class="comment">%A ADAPTER</span>
9460874 Z_value=get(handles.z_slider,<span class="string">'Value'</span>);
9470875
9480876 <span class="comment">%rotation angles</span>
9490877 Phi=(pi/180)*str2num(get(handles.Phi,<span class="string">'String'</span>));<span class="comment">%first Euler angle in radian</span>
9500878 Theta=(pi/180)*str2num(get(handles.Theta,<span class="string">'String'</span>));<span class="comment">%second Euler angle in radian</span>
9510879
9520880 <span class="comment">%components of the unity vector normal to the projection plane</span>
9530881 NormVec_X=-sin(Phi)*sin(Theta);
9540882 NormVec_Y=cos(Phi)*sin(Theta);
9550883 NormVec_Z=cos(Theta);
9560884
9570885 <span class="comment">%set new plane position and update graph</span>
9580886 set(handles.XObject,<span class="string">'String'</span>,num2str(NormVec_X*Z_value,4))
9590887 set(handles.YObject,<span class="string">'String'</span>,num2str(NormVec_Y*Z_value,4))
9600888 set(handles.ZObject,<span class="string">'String'</span>,num2str(NormVec_Z*Z_value,4))
9610889 <a href="#_sub17" class="code" title="subfunction PLOT_Callback(hObject, eventdata, handles)">PLOT_Callback</a>(hObject, eventdata, handles)
9620890
9630891
9640892
9650893 <a name="_sub27" href="#_subfunctions" class="code">function XObject_Callback(hObject, eventdata, handles)</a>
9660894
9670895
9680896 <a name="_sub28" href="#_subfunctions" class="code">function YObject_Callback(hObject, eventdata, handles)</a>
9690897
9700898
9710899
9720900
9730901 <a name="_sub29" href="#_subfunctions" class="code">function ZObject_Callback(hObject, eventdata, handles)</a>
9740902
9750903
9760904 <span class="comment">% --- Executes on button press in HELP.</span>
9770905 <a name="_sub30" href="#_subfunctions" class="code">function HELP_Callback(hObject, eventdata, handles)</a>
9780906 path_to_uvmat=which (<span class="string">'uvmat'</span>);<span class="comment">% check the path of uvmat</span>
9790907 pathelp=fileparts(path_to_uvmat);
9800908 helpfile=fullfile(pathelp,<span class="string">'UVMAT_DOC'</span>,<span class="string">'uvmat_doc.html'</span>);
9810909 <span class="keyword">if</span> isempty(dir(helpfile)), errordlg(<span class="string">'Please put the help file uvmat_doc.html in the directory UVMAT/UVMAT_DOC'</span>)
9820910 <span class="keyword">else</span>
9830911     web([helpfile <span class="string">'#set_object'</span>])   
9840912 <span class="keyword">end</span>
9850913
9860914
9870915
9880916</pre></div>
989<hr><address>Generated on Fri 13-Nov-2009 11:17:03 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
990</body>
991</html>
Note: See TracBrowser for help on using the repository browser.