source: trunk/src/uvmat_doc/FUNCTIONS_DOC/mouse_motion.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: 28.9 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 mouse_motion</title>
6  <meta name="keywords" content="mouse_motion">
7  <meta name="description" content="'mouse_motion': permanently called by mouse motion over a figure (Callback for 'WindowButtonMotionFcn' of the figure)">
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; mouse_motion.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>mouse_motion
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>'mouse_motion': permanently called by mouse motion over a figure (Callback for 'WindowButtonMotionFcn' of the figure)</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 mouse_motion(hObject,eventdata,handles) </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">'mouse_motion': permanently called by mouse motion over a figure (Callback for 'WindowButtonMotionFcn' of the figure)
31-----------------------------------------------------------------------
32
33 function mouse_motion(hObject,eventdata,handles)
34 activated by the command:
35 set(hObject,'WindowButtonMotionFcn',{'mouse_motion',handles})
36 where hObject is the handle of the figure
37
38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
39  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.
40AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
41     This file is part of the toolbox UVMAT.
42 
43     UVMAT is free software; you can redistribute it and/or modify
44     it under the terms of the GNU General Public License as published by
45     the Free Software Foundation; either version 2 of the License, or
46     (at your option) any later version.
47 
48     UVMAT is distributed in the hope that it will be useful,
49     but WITHOUT ANY WARRANTY; without even the implied warranty of
50     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
51     GNU General Public License (file UVMAT/COPYING.txt) for more details.
52AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</pre></div>
53
54<!-- crossreference -->
55<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
56This function calls:
57<ul style="list-style-image:url(../matlabicon.gif)">
58<li><a href="plot_object.html" class="code" title="function [hh]=plot_object(ObjectDataIn,ProjObject,hplot,col)">plot_object</a>        'plot_object': draws a projection object (points, line, plane...)</li></ul>
59This function is called by:
60<ul style="list-style-image:url(../matlabicon.gif)">
61<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></ul>
62<!-- crossreference -->
63
64
65<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
66<div class="fragment"><pre>0001 <span class="comment">%'mouse_motion': permanently called by mouse motion over a figure (Callback for 'WindowButtonMotionFcn' of the figure)</span>
670002 <span class="comment">%-----------------------------------------------------------------------</span>
680003 <span class="comment">%</span>
690004 <span class="comment">% function mouse_motion(hObject,eventdata,handles)</span>
700005 <span class="comment">% activated by the command:</span>
710006 <span class="comment">% set(hObject,'WindowButtonMotionFcn',{'mouse_motion',handles})</span>
720007 <span class="comment">% where hObject is the handle of the figure</span>
730008 <span class="comment">%</span>
740009 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
750010 <span class="comment">%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.</span>
760011 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
770012 <span class="comment">%     This file is part of the toolbox UVMAT.</span>
780013 <span class="comment">%</span>
790014 <span class="comment">%     UVMAT is free software; you can redistribute it and/or modify</span>
800015 <span class="comment">%     it under the terms of the GNU General Public License as published by</span>
810016 <span class="comment">%     the Free Software Foundation; either version 2 of the License, or</span>
820017 <span class="comment">%     (at your option) any later version.</span>
830018 <span class="comment">%</span>
840019 <span class="comment">%     UVMAT is distributed in the hope that it will be useful,</span>
850020 <span class="comment">%     but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
860021 <span class="comment">%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
870022 <span class="comment">%     GNU General Public License (file UVMAT/COPYING.txt) for more details.</span>
880023 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
890024
900025 <a name="_sub0" href="#_subfunctions" class="code">function mouse_motion(hObject,eventdata,handles)</a>
910026 <span class="keyword">if</span> ~exist(<span class="string">'handles'</span>,<span class="string">'var'</span>)
920027     <span class="keyword">return</span>
930028 <span class="keyword">end</span>
940029 <span class="keyword">if</span> ~isfield(handles, <span class="string">'mouse_coord'</span>)
950030     <span class="keyword">return</span>
960031 <span class="keyword">end</span>
970032 <span class="keyword">if</span> ~ishandle(handles.mouse_coord)
980033     <span class="keyword">return</span>
990034 <span class="keyword">end</span>
1000035 proj_coord=get(handles.mouse_coord,<span class="string">'String'</span>);
1010036 choice=get(handles.mouse_coord,<span class="string">'Value'</span>);
1020037 <span class="keyword">if</span> ~isempty(proj_coord); proj_coord=proj_coord{choice};<span class="keyword">else</span>;proj_coord=[];<span class="keyword">end</span>;
1030038 test_create=0;<span class="comment">%default</span>
1040039 test_edit=0;<span class="comment">%default</span>
1050040 <span class="keyword">if</span> isfield(handles,<span class="string">'VOLUME'</span>) <span class="comment">% mouse_motion not applied to the uvmat figure, no object creation</span>
1060041     test_create=get(handles.create,<span class="string">'Value'</span>);   
1070042 <span class="keyword">end</span>
1080043 test_edit=isfield(handles,<span class="string">'edit'</span>) &amp; get(handles.edit,<span class="string">'Value'</span>);<span class="comment">% edit test for mouse shap: an arrow</span>
1090044 test_zoom=isfield(handles,<span class="string">'zoom'</span>)&amp; get(handles.zoom,<span class="string">'Value'</span>);<span class="comment">% edit test for mouse shap: an arrow</span>
1100045
1110046 <span class="comment">%find the current axe 'haxes' and display the current mouse position or uicontrol tag</span>
1120047 text_displ_1=<span class="string">''</span>;
1130048 text_displ_2=<span class="string">''</span>;
1140049 text_displ_3=<span class="string">''</span>;
1150050 text_displ_4=<span class="string">''</span>;
1160051
1170052 haxes=[];
1180053 AxeData=[];<span class="comment">%default</span>
1190054 mouse=[];
1200055
1210056 pointershape=<span class="string">'arrow'</span>;<span class="comment">% default pointer is an arrow</span>
1220057
1230058 xy_fig=get(gcbo,<span class="string">'CurrentPoint'</span>);<span class="comment">% current point of the current figure (gcbo)</span>
1240059 hchild=get(gcbo,<span class="string">'Children'</span>);<span class="comment">%handles of all objects in the current figure</span>
1250060 currentfig=gcbo;<span class="comment">%store gcbo as variable currentfig</span>
1260061 <span class="comment">% loop on all the objects in the current figure (selected by the last mouse click)</span>
1270062 <span class="keyword">for</span> ichild=1:length(hchild)
1280063     obj_pos=get(hchild(ichild),<span class="string">'Position'</span>);<span class="comment">%position of the object</span>
1290064     <span class="keyword">if</span> xy_fig(1) &gt;=obj_pos(1) &amp; xy_fig(2) &gt;= obj_pos(2)&amp; xy_fig(1) &lt;=obj_pos(1)+obj_pos(3) &amp; xy_fig(2) &lt;= obj_pos(2)+obj_pos(4);
1300065         htype=get(hchild(ichild),<span class="string">'Type'</span>);<span class="comment">%type of the crrent child</span>
1310066         <span class="comment">%if the mouse is over an axis, look at the data</span>
1320067         <span class="keyword">if</span> isequal(htype,<span class="string">'axes'</span>)
1330068             haxes=hchild(ichild);
1340069             xy=get(haxes,<span class="string">'CurrentPoint'</span>);<span class="comment">%xy(1,1),xy(1,2): current x,y positions in axes coordinates</span>
1350070             mouse.X=xy(1,1);
1360071             mouse.Y=xy(1,2);
1370072             u_mouse=[];
1380073             v_mouse=[];
1390074             w_mouse=[];
1400075             A_mouse=[];
1410076             c_text=[];
1420077             f_text=[];
1430078             ff_text=[];     
1440079             ivec=[];
1450080             AxeData=get(haxes,<span class="string">'UserData'</span>);<span class="comment">% data attached to the axis</span>
1460081              <span class="keyword">if</span> ~test_edit &amp;&amp; ~test_zoom
1470082                  pointershape=<span class="string">'crosshair'</span>;<span class="comment">%set pointer with cross shape (default when mouse is over an axis)</span>
1480083 <span class="comment">%                % pointershape='crosshair';%set pointer with cross shape (default over axis)</span>
1490084              <span class="keyword">end</span>
1500085             <span class="keyword">if</span> isfield(AxeData,<span class="string">'X'</span>) &amp; isfield(AxeData,<span class="string">'Y'</span>) &amp; isfield(AxeData,<span class="string">'Mesh'</span>)<span class="comment">% test on the existence of a vector field in the current axis</span>
1510086                 <span class="keyword">if</span> ~isempty(AxeData.Mesh)
1520087                     flag_vec=(AxeData.X&lt;(xy(1,1)+AxeData.Mesh/3) &amp; AxeData.X&gt;(xy(1,1)-AxeData.Mesh/3)) &amp; <span class="keyword">...</span><span class="comment">%flagx=1 for the vectors with x position selected by the mouse</span>
1530088                           (AxeData.Y&lt;(xy(1,2)+AxeData.Mesh/3) &amp; AxeData.Y&gt;(xy(1,2)-AxeData.Mesh/3));<span class="comment">%f</span>
1540089                     ivec=find(flag_vec);<span class="comment">% search the selected vector index ivec</span>
1550090                     <span class="keyword">if</span> length(ivec)&gt;0
1560091                         <span class="keyword">if</span> ~test_create
1570092                             pointershape=<span class="string">'arrow'</span>; <span class="comment">%mouse indicates  the detection of a vector</span>
1580093                         <span class="keyword">end</span>
1590094                         ivec=ivec(1);<span class="comment">%choice the first selected vector if several are selected</span>
1600095                         mouse.X=AxeData.X(ivec);
1610096                         mouse.Y=AxeData.Y(ivec);
1620097                         u_mouse=AxeData.U(ivec);<span class="comment">%displacement</span>
1630098                         v_mouse=AxeData.V(ivec);
1640099                         w_mouse=0; <span class="comment">%default</span>
1650100                         <span class="keyword">if</span> isfield(AxeData,<span class="string">'W'</span>)&amp;length(AxeData.W)&gt;=ivec
1660101                             w_text=[<span class="string">',  w='</span> num2str(AxeData.W(ivec),3)];
1670102                         <span class="keyword">else</span>
1680103                             w_text=<span class="string">''</span>;
1690104                         <span class="keyword">end</span>
1700105                         <span class="keyword">if</span> ~isfield(AxeData,<span class="string">'CName'</span>)
1710106                             AxeData.CName=<span class="string">'C'</span>;<span class="comment">%REVOIR</span>
1720107                         <span class="keyword">end</span>
1730108                         c_text=[<span class="string">', '</span> AxeData.CName <span class="string">'='</span> num2str(AxeData.C(ivec),3)];
1740109                         <span class="keyword">if</span> isfield(AxeData,<span class="string">'F'</span>)&amp;length(AxeData.F)&gt;=ivec
1750110                             f_text=[<span class="string">',  f='</span> num2str(AxeData.F(ivec),3)];
1760111                         <span class="keyword">else</span>
1770112                             f_text=<span class="string">''</span>;
1780113                         <span class="keyword">end</span>
1790114                         <span class="keyword">if</span> isfield(AxeData,<span class="string">'FF'</span>)&amp;length(AxeData.FF)&gt;=ivec
1800115                             ff_text=[<span class="string">',  ff='</span> num2str(AxeData.FF(ivec),3)];
1810116                         <span class="keyword">else</span>
1820117                             ff_text=<span class="string">''</span>;
1830118                         <span class="keyword">end</span>
1840119                     <span class="keyword">end</span>
1850120                 <span class="keyword">end</span>
1860121             <span class="keyword">end</span>
1870122             <span class="keyword">if</span> isfield(AxeData,<span class="string">'ZObject'</span>)
1880123                 mouse.Z=AxeData.ZObject(1); <span class="comment">%generaliser au cas avec angle</span>
1890124             <span class="keyword">end</span>
1900125             <span class="keyword">if</span> isfield(AxeData,<span class="string">'ObjectCoord'</span>) &amp; size(AxeData.ObjectCoord,2)==3
1910126                 mouse.Z=AxeData.ObjectCoord(1,3); <span class="comment">%generaliser au cas avec angle</span>
1920127             <span class="keyword">end</span>
1930128             testscal= isfield(AxeData,<span class="string">'A'</span>)&amp; isfield(AxeData,<span class="string">'AX'</span>)&amp; isfield(AxeData,<span class="string">'AY'</span>);<span class="comment">%test the existence of an image (or scalar represented by an image)</span>
1940129                <span class="keyword">if</span> testscal
1950130                    testscal=~isempty(AxeData.A)&amp;~isempty(AxeData.AX)&amp; ~isempty(AxeData.AY);
1960131                <span class="keyword">end</span>
1970132             <span class="keyword">if</span> testscal<span class="comment">%test the existence of an image (or scalar represented by an image)</span>
1980133                 nxy=size(AxeData.A);
1990134                 MaxAY=max(AxeData.AY(1),AxeData.AY(end));
2000135                 MinAY=min(AxeData.AY(1),AxeData.AY(end));
2010136                 <span class="keyword">if</span> (xy(1,1)&gt;AxeData.AX(1))&amp;(xy(1,1)&lt;AxeData.AX(end))&amp;(xy(1,2)&lt;MaxAY)&amp;(xy(1,2)&gt;MinAY)
2020137                     indx0=1+round((nxy(2)-1)*(xy(1,1)-AxeData.AX(1))/(AxeData.AX(end)-AxeData.AX(1)));<span class="comment">% index x of pixel</span>
2030138                     indy0=1+round((nxy(1)-1)*(xy(1,2)-AxeData.AY(1))/(AxeData.AY(end)-AxeData.AY(1)));<span class="comment">% index y of pixel</span>
2040139                     <span class="keyword">if</span> indx0&gt;=1 &amp; indx0&lt;=nxy(2) &amp; indy0&gt;=1 &amp; indy0&lt;=nxy(1)
2050140                         A_mouse=AxeData.A(indy0,indx0,:);
2060141                     <span class="keyword">end</span>
2070142                 <span class="keyword">end</span>
2080143             <span class="keyword">end</span>
2090144             <span class="comment">%coordinate transform if proj_coord differs from menu_coord</span>
2100145             <span class="keyword">if</span> isfield(AxeData,<span class="string">'CoordType'</span>)
2110146                   mouse.CoordType=AxeData.CoordType;
2120147             <span class="keyword">end</span>
2130148             <span class="keyword">if</span> isfield(AxeData,<span class="string">'CoordUnit'</span>)
2140149                   mouse.CoordUnit=AxeData.CoordUnit;
2150150             <span class="keyword">end</span>
2160151             <span class="keyword">if</span> isfield(mouse,<span class="string">'CoordType'</span>) &amp;~isequal(mouse.CoordType,proj_coord)
2170152                 huvmat=findobj(allchild(0),<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the uvmat interface handle</span>
2180153                 UvData=get(huvmat,<span class="string">'UserData'</span>); <span class="comment">%coord transformed stored in the uvmat interface, updated by file input</span>
2190154                 <span class="keyword">if</span> isfield(AxeData,<span class="string">'CoordType'</span>)
2200155                     mouse.CoordType=AxeData.CoordType;
2210156                 <span class="keyword">end</span>
2220157                 <span class="keyword">if</span> isfield(AxeData,<span class="string">'dt'</span>)
2230158                     mouse.dt=AxeData.dt;
2240159                 <span class="keyword">end</span>
2250160 <span class="comment">%                 if ~isempty(z_mouse)</span>
2260161 <span class="comment">%                     mouse.Z=z_mouse;</span>
2270162 <span class="comment">%                 end</span>
2280163                 <span class="keyword">if</span> length(ivec)&gt;0 <span class="comment">%&amp; isfield(AxeData,'dt')</span>
2290164                       mouse.U=u_mouse;
2300165                       mouse.V=v_mouse;
2310166                 <span class="keyword">end</span>
2320167                 mouse=feval(proj_coord,mouse,UvData);<span class="comment">%apply transform proj_coord to the position</span>
2330168                 <span class="keyword">if</span> length(ivec)&gt;0<span class="comment">%&amp; isfield(AxeData,'dt')</span>
2340169                      u_mouse=mouse.U;
2350170                      v_mouse=mouse.V;
2360171                 <span class="keyword">end</span>
2370172             <span class="keyword">end</span> 
2380173             <span class="keyword">if</span> isfield(mouse,<span class="string">'CoordType'</span>)
2390174                 <span class="keyword">if</span> isequal(mouse.CoordType,<span class="string">'px'</span>)
2400175                     mouse.CoordUnit=<span class="string">'px'</span>;
2410176                 <span class="keyword">end</span>
2420177             <span class="keyword">else</span>
2430178                 mouse.CoordUnit=<span class="string">''</span>;<span class="comment">%default</span>
2440179             <span class="keyword">end</span>     
2450180             text_displ_1=[<span class="string">'x='</span> num2str(mouse.X,4) <span class="string">',y='</span> num2str(mouse.Y,4)];
2460181             <span class="keyword">if</span> isfield(mouse,<span class="string">'Z'</span>)&amp;~isempty(mouse.Z)
2470182                 text_displ_1=[text_displ_1 <span class="string">',z='</span> num2str(mouse.Z,3)];
2480183             <span class="keyword">end</span>
2490184             <span class="keyword">if</span> isfield(mouse,<span class="string">'CoordUnit'</span>)
2500185                  text_displ_1=[text_displ_1 <span class="string">' '</span> mouse.CoordUnit];
2510186             <span class="keyword">end</span>
2520187             <span class="keyword">if</span> ~isempty(ivec)
2530188                 text_displ_4=[<span class="string">'vec#='</span> num2str(ivec)];
2540189             <span class="keyword">end</span>
2550190             <span class="keyword">if</span> ~isempty(u_mouse)
2560191                 text_displ_3=[<span class="string">'u='</span> num2str(u_mouse,3) <span class="string">',v='</span> num2str(v_mouse,3) w_text ];
2570192                 <span class="keyword">if</span>  isfield(mouse,<span class="string">'CoordUnit'</span>)
2580193                     <span class="keyword">if</span> isequal(mouse.CoordUnit,<span class="string">'px'</span>)
2590194                         text_displ_3=[text_displ_3 <span class="string">'  '</span> mouse.CoordUnit];
2600195                     <span class="keyword">elseif</span> isfield(AxeData,<span class="string">'TimeUnit'</span>)
2610196                         text_displ_3=[text_displ_3 <span class="string">'  '</span> mouse.CoordUnit <span class="string">'/'</span> AxeData.TimeUnit];
2620197                     <span class="keyword">end</span>
2630198                 <span class="keyword">end</span>
2640199                 text_displ_4=[text_displ_4 c_text f_text ff_text];
2650200             <span class="keyword">end</span>
2660201           
2670202             <span class="keyword">if</span> ~isempty(A_mouse)
2680203                 text_displ_2=[<span class="string">'A='</span> num2str(double(A_mouse)) <span class="string">',i='</span>  num2str(indx0) <span class="string">',j='</span> num2str(indy0)];
2690204             <span class="keyword">end</span>
2700205         <span class="keyword">elseif</span> isequal(get(hchild(ichild),<span class="string">'Visible'</span>),<span class="string">'on'</span>)&amp; ~isequal(get(hchild(ichild),<span class="string">'Style'</span>),<span class="string">'frame'</span>)
2710206             text_displ_1=get(hchild(ichild),<span class="string">'Tag'</span>);
2720207         <span class="keyword">end</span>
2730208     <span class="keyword">end</span>
2740209 <span class="keyword">end</span>
2750210 set(handles.text_display_1,<span class="string">'String'</span>,text_displ_1);
2760211 set(handles.text_display_2,<span class="string">'String'</span>,text_displ_2);
2770212 set(handles.text_display_3,<span class="string">'String'</span>,text_displ_3);
2780213 set(handles.text_display_4,<span class="string">'String'</span>,text_displ_4);
2790214
2800215 <span class="comment">%%%%%%%%%%%%%%%%%</span>
2810216 <span class="comment">%create or modify an object</span>
2820217 <span class="keyword">if</span> isfield(AxeData,<span class="string">'CurrentObject'</span>) &amp; ishandle(AxeData.CurrentObject) &amp; isfield(AxeData,<span class="string">'Drawing'</span>) &amp; ~isequal(AxeData.Drawing,<span class="string">'off'</span>)
2830218     PlotData=get(AxeData.CurrentObject,<span class="string">'UserData'</span>);
2840219     huvmat=findobj(allchild(0),<span class="string">'Name'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the uvmat interface handle</span>
2850220     <span class="keyword">if</span> ~isempty(huvmat)
2860221         UvData=get(huvmat,<span class="string">'UserData'</span>);
2870222         <span class="keyword">if</span> ~isfield(PlotData,<span class="string">'IndexObj'</span>)
2880223              <span class="keyword">return</span>
2890224         <span class="keyword">end</span>
2900225         ObjectData=UvData.Object{PlotData.IndexObj};
2910226         XYData=AxeData.CurrentOrigin;
2920227         <span class="keyword">if</span> isequal(AxeData.Drawing,<span class="string">'create'</span>) &amp;&amp; isfield(AxeData,<span class="string">'CurrentOrigin'</span>) &amp;&amp; ~isempty(AxeData.CurrentOrigin)
2930228            <span class="keyword">if</span> isequal(ObjectData.Style,<span class="string">'line'</span>)|isequal(ObjectData.Style,<span class="string">'polyline'</span>)|isequal(ObjectData.Style,<span class="string">'polygon'</span>)|isequal(ObjectData.Style,<span class="string">'points'</span>)
2940229               xy(1,3)=0;
2950230               ObjectData.Coord=[ObjectData.Coord ;xy(1,:)];
2960231              <span class="comment">% ObjectData.Coord(end,:)=xy(1,:);</span>
2970232            <span class="keyword">elseif</span> isequal(ObjectData.Style,<span class="string">'rectangle'</span>)|isequal(ObjectData.Style,<span class="string">'ellipse'</span>)|isequal(ObjectData.Style,<span class="string">'volume'</span>)
2980233               ObjectData.Coord(1,1)=(xy(1,1)+XYData(1))/2;<span class="comment">%origin rectangle, x coordinate</span>
2990234               ObjectData.Coord(1,2)=(xy(1,2)+XYData(2))/2;
3000235               ObjectData.RangeX=abs(xy(1,1)-XYData(1))/2;<span class="comment">%rectangle width</span>
3010236               ObjectData.RangeY=abs(xy(1,2)-XYData(2))/2;<span class="comment">%rectangle height</span>
3020237            <span class="keyword">elseif</span> isequal(ObjectData.Style,<span class="string">'plane'</span>) <span class="comment">%case of 'plane'</span>
3030238                 DX=(xy(1,1)-ObjectData.Coord(1,1));
3040239                 DY=(xy(1,2)-ObjectData.Coord(1,2));
3050240                 ObjectData.Phi=(angle(DX+i*DY))*180/pi;<span class="comment">%rectangle widt</span>
3060241                 <span class="keyword">if</span> isfield(ObjectData,<span class="string">'RangeX'</span>)
3070242                     XMax=sqrt(DX*DX+DY*DY);
3080243                     <span class="keyword">if</span> XMax&gt;max(ObjectData.RangeX)
3090244                         ObjectData.RangeX=[min(ObjectData.RangeX) XMax];
3100245                     <span class="keyword">end</span>
3110246                 <span class="keyword">end</span>
3120247            <span class="keyword">end</span>
3130248             <a href="plot_object.html" class="code" title="function [hh]=plot_object(ObjectDataIn,ProjObject,hplot,col)">plot_object</a>(ObjectData,[],AxeData.CurrentObject,<span class="string">'m'</span>);
3140249             pointershape=<span class="string">'crosshair'</span>;
3150250         <span class="keyword">elseif</span>  isequal(AxeData.Drawing,<span class="string">'translate'</span>)
3160251             DX=xy(1,1)-XYData(1);<span class="comment">%translation from initial position</span>
3170252             DY=xy(1,2)-XYData(2);
3180253             ObjectData.Coord(:,1)=ObjectData.Coord(:,1)+DX;
3190254             ObjectData.Coord(:,2)=ObjectData.Coord(:,2)+DY;
3200255             <a href="plot_object.html" class="code" title="function [hh]=plot_object(ObjectDataIn,ProjObject,hplot,col)">plot_object</a>(ObjectData,[],AxeData.CurrentObject,<span class="string">'m'</span>);
3210256             pointershape=<span class="string">'fleur'</span>;
3220257         <span class="keyword">elseif</span>  isequal(AxeData.Drawing,<span class="string">'deform'</span>)
3230258             ind_move=AxeData.CurrentIndex;
3240259             ObjectData.Coord(ind_move,1)=xy(1,1);
3250260             ObjectData.Coord(ind_move,2)=xy(1,2);
3260261             <a href="plot_object.html" class="code" title="function [hh]=plot_object(ObjectDataIn,ProjObject,hplot,col)">plot_object</a>(ObjectData,[],AxeData.CurrentObject,<span class="string">'m'</span>);
3270262             pointershape=<span class="string">'circle'</span>;
3280263         <span class="keyword">end</span>
3290264     <span class="keyword">end</span>
3300265 <span class="keyword">end</span>   
3310266 <span class="comment">%%%%%%%%%%%%%</span>
3320267 <span class="comment">%draw a rectangle if no object creation is selected</span>
3330268 <span class="keyword">if</span> ~isempty(haxes) &amp; isfield(AxeData,<span class="string">'Drawing'</span>)&amp; isequal(AxeData.Drawing,<span class="string">'zoom'</span>)&amp; isfield(AxeData,<span class="string">'CurrentOrigin'</span>)<span class="keyword">...</span>
3340269         &amp; isequal(get(gcf,<span class="string">'SelectionType'</span>),<span class="string">'normal'</span>)<span class="comment">%</span>
3350270    xy_rect=AxeData.CurrentOrigin;
3360271    <span class="keyword">if</span> ~isempty(xy_rect)
3370272         rect(1)=min(xy(1,1),xy_rect(1));<span class="comment">%origin rectangle, x coordinate</span>
3380273         rect(2)=min(xy(1,2),xy_rect(2));<span class="comment">%origin rectangle, y coordinate</span>
3390274         rect(3)=abs(xy(1,1)-xy_rect(1));<span class="comment">%rectangle width</span>
3400275         rect(4)=abs(xy(1,2)-xy_rect(2));<span class="comment">%rectangle height</span>
3410276         <span class="keyword">if</span> rect(3)&gt;0 &amp; rect(4)&gt;0
3420277             <span class="keyword">if</span> isfield(AxeData,<span class="string">'CurrentRectZoom'</span>)&amp; ishandle(AxeData.CurrentRectZoom)
3430278                 set(AxeData.CurrentRectZoom,<span class="string">'Position'</span>,rect);<span class="comment">%update the rectangle position</span>
3440279             <span class="keyword">else</span>
3450280                 AxeData.CurrentRectZoom=rectangle(<span class="string">'Position'</span>,rect,<span class="string">'LineStyle'</span>,<span class="string">':'</span>,<span class="string">'Tag'</span>,<span class="string">'rect_zoom'</span>);
3460281                 set(haxes,<span class="string">'UserData'</span>,AxeData)
3470282             <span class="keyword">end</span>
3480283         <span class="keyword">end</span>
3490284    <span class="keyword">end</span>
3500285 <span class="keyword">end</span>
3510286 <span class="keyword">if</span> test_zoom
3520287     pointershape=<span class="string">'arrow'</span>;
3530288 <span class="keyword">end</span>
3540289 set(currentfig,<span class="string">'Pointer'</span>,pointershape);</pre></div>
355<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>
356</body>
357</html>
Note: See TracBrowser for help on using the repository browser.