source: trunk/src/uvmat_doc/FUNCTIONS_DOC/mouse_up.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: 34.7 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_up</title>
6  <meta name="keywords" content="mouse_up">
7  <meta name="description" content="'mouse_up': function  activated when the mouse button is released">
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_up.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_up
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_up': function  activated when the mouse button is released</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_up(ggg,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_up': function  activated when the mouse button is released
31----------------------------------------------------------------
32 function mouse_up(ggg,eventdata,handles)
33 activated by the command:
34 set(hObject,'WindowButtonUpFcn',{'mouse_up'}),
35 where hObject is the handle of the figure
36
37AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
38  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.
39AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
40     This file is part of the toolbox UVMAT.
41 
42     UVMAT is free software; you can redistribute it and/or modify
43     it under the terms of the GNU General Public License as published by
44     the Free Software Foundation; either version 2 of the License, or
45     (at your option) any later version.
46 
47     UVMAT is distributed in the hope that it will be useful,
48     but WITHOUT ANY WARRANTY; without even the implied warranty of
49     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
50     GNU General Public License (file UVMAT/COPYING.txt) for more details.
51AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</pre></div>
52
53<!-- crossreference -->
54<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
55This function calls:
56<ul style="list-style-image:url(../matlabicon.gif)">
57<li><a href="close_fig.html" class="code" title="function close_fig(ggg,eventdata,hparent,type)">close_fig</a>  'close_fig': function  activated when a figure is closed</li><li><a href="get_plot_handles.html" class="code" title="function PlotHandles=get_plot_handles(handles)">get_plot_handles</a>       'get_plot_handles': list the  handles of elements setting the plotting parameters in the uvmat interface</li><li><a href="keyboard_callback.html" class="code" title="function keyboard_callback(hObject,eventdata,handleshaxes)">keyboard_callback</a> 'keyboard_callback:' function activated when a key is pressed on the keyboard</li><li><a href="mouse_down.html" class="code" title="function xy=mouse_down(hObject,eventdata)">mouse_down</a>   'mouse_down': function activated when the mouse button is pressed on a figure (callback for 'WindowButtonDownFcn'</li><li><a href="mouse_motion.html" class="code" title="function mouse_motion(hObject,eventdata,handles)">mouse_motion</a>    'mouse_motion': permanently called by mouse motion over a figure (Callback for 'WindowButtonMotionFcn' of the figure)</li><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="set_object.html" class="code" title="function varargout = set_object(varargin)">set_object</a>       'set_object': GUI to edit a projection object</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><li><a href="write_plot_param.html" class="code" title="function write_plot_param(handles,PlotParam)">write_plot_param</a>  'write_plot_param': update the plotting parameters on the uvmat interface after a plotting operation</li></ul>
58This function is called by:
59<ul style="list-style-image:url(../matlabicon.gif)">
60<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>
61<!-- crossreference -->
62
63
64<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
65<div class="fragment"><pre>0001 <span class="comment">%'mouse_up': function  activated when the mouse button is released</span>
660002 <span class="comment">%----------------------------------------------------------------</span>
670003 <span class="comment">% function mouse_up(ggg,eventdata,handles)</span>
680004 <span class="comment">% activated by the command:</span>
690005 <span class="comment">% set(hObject,'WindowButtonUpFcn',{'mouse_up'}),</span>
700006 <span class="comment">% where hObject is the handle of the figure</span>
710007 <span class="comment">%</span>
720008 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
730009 <span class="comment">%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.</span>
740010 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
750011 <span class="comment">%     This file is part of the toolbox UVMAT.</span>
760012 <span class="comment">%</span>
770013 <span class="comment">%     UVMAT is free software; you can redistribute it and/or modify</span>
780014 <span class="comment">%     it under the terms of the GNU General Public License as published by</span>
790015 <span class="comment">%     the Free Software Foundation; either version 2 of the License, or</span>
800016 <span class="comment">%     (at your option) any later version.</span>
810017 <span class="comment">%</span>
820018 <span class="comment">%     UVMAT is distributed in the hope that it will be useful,</span>
830019 <span class="comment">%     but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
840020 <span class="comment">%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
850021 <span class="comment">%     GNU General Public License (file UVMAT/COPYING.txt) for more details.</span>
860022 <span class="comment">%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span>
870023
880024 <a name="_sub0" href="#_subfunctions" class="code">function mouse_up(ggg,eventdata,handles)</a>
890025 MouseAction=<span class="string">'none'</span>; <span class="comment">%default</span>
900026 zoomstate=0;<span class="comment">%default</span>
910027 <span class="keyword">if</span> ~exist(<span class="string">'handles'</span>,<span class="string">'var'</span>)
920028    handles=get(gcbo,<span class="string">'UserData'</span>);
930029 <span class="keyword">end</span>
940030 huvmat=findobj(allchild(0),<span class="string">'Name'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the uvmat interface handle</span>
950031 <span class="keyword">if</span> ~isempty(huvmat)
960032     hhuvmat=guidata(huvmat);
970033     UvData=get(huvmat,<span class="string">'UserData'</span>);
980034     <span class="keyword">if</span> isfield(UvData,<span class="string">'MouseAction'</span>)
990035         MouseAction=UvData.MouseAction;<span class="comment">% set the mouse action (edit, create objects...)</span>
1000036     <span class="keyword">end</span>
1010037     zoomstate=get(hhuvmat.zoom,<span class="string">'Value'</span>);
1020038 <span class="keyword">end</span>
1030039 <span class="keyword">if</span> isequal(MouseAction,<span class="string">'calib'</span>) &amp;&amp; ~zoomstate
1040040     <span class="keyword">return</span>
1050041 <span class="keyword">end</span>
1060042 currentfig=gcbo;
1070043 AxeData=get(gca,<span class="string">'UserData'</span>);
1080044 currentaxes=gca; <span class="comment">%store the current axes handle</span>
1090045 test_drawing=0;<span class="comment">%default</span>
1100046
1110047 <span class="comment">%finalize the fabrication or the translation/deformation of an object and plot the corresponding projected field</span>
1120048 <span class="keyword">if</span> ~isempty(huvmat) &amp; isfield(AxeData,<span class="string">'Drawing'</span>) &amp; ~isequal(AxeData.Drawing,<span class="string">'off'</span>) &amp; isfield(AxeData,<span class="string">'CurrentObject'</span>)<span class="keyword">...</span>
1130049            &amp; ishandle(AxeData.CurrentObject)
1140050     xy=get(currentaxes,<span class="string">'CurrentPoint'</span>);<span class="comment">%xy(1,1),xy(1,2): current x,y positions in axes coordinates</span>
1150051     PlotData=get(AxeData.CurrentObject,<span class="string">'UserData'</span>);<span class="comment">%get data attached to the current projection object</span>
1160052     IndexObj=PlotData.IndexObj;
1170053     ObjectData=UvData.Object{IndexObj};   
1180054     <span class="keyword">if</span> isequal(AxeData.Drawing,<span class="string">'translate'</span>)
1190055         XYData=AxeData.CurrentOrigin;
1200056         DX=xy(1,1)-XYData(1);<span class="comment">%translation from initial position</span>
1210057         DY=xy(1,2)-XYData(2);
1220058         ObjectData.Coord(:,1)=ObjectData.Coord(:,1)+DX;
1230059         ObjectData.Coord(:,2)=ObjectData.Coord(:,2)+DY;
1240060     <span class="keyword">elseif</span> isequal(AxeData.Drawing,<span class="string">'deform'</span>)
1250061         ind_move=AxeData.CurrentIndex;
1260062         ObjectData.Coord(ind_move,1)=xy(1,1);
1270063         ObjectData.Coord(ind_move,2)=xy(1,2);
1280064     <span class="keyword">else</span>   <span class="comment">%creating object</span>
1290065         <span class="keyword">if</span> isequal(ObjectData.Style,<span class="string">'line'</span>)||isequal(ObjectData.Style,<span class="string">'polyline'</span>)||<span class="keyword">...</span>
1300066                 isequal(ObjectData.Style,<span class="string">'polygon'</span>)||isequal(ObjectData.Style,<span class="string">'points'</span>)
1310067             <span class="keyword">if</span> isfield(AxeData,<span class="string">'ObjectCoord'</span>) &amp;&amp; size(AxeData.ObjectCoord,2)==3
1320068               xy(1,3)=AxeData.ObjectCoord(1,3); <span class="comment">% z coordinate of the mouse: to generalise ...</span>
1330069             <span class="keyword">else</span>
1340070                  xy(1,3)=0; <span class="comment">% z coordinate set to 0 by default</span>
1350071             <span class="keyword">end</span>
1360072             <span class="keyword">if</span> ~isequal(ObjectData.Coord,xy(1,:))
1370073                 ObjectData.Coord=[ObjectData.Coord ;xy(1,:)];<span class="comment">% append the coordiantes marked by the mouse to the eobject</span>
1380074             <span class="keyword">end</span>
1390075         <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>)
1400076             XYData=AxeData.CurrentOrigin;
1410077             ObjectData.Coord(1,1)=(xy(1,1)+XYData(1))/2;<span class="comment">%origin rectangle, x coordinate</span>
1420078             ObjectData.Coord(1,2)=(xy(1,2)+XYData(2))/2;
1430079             ObjectData.RangeX=abs(xy(1,1)-XYData(1))/2;<span class="comment">%rectangle width</span>
1440080             ObjectData.RangeY=abs(xy(1,2)-XYData(2))/2;<span class="comment">%rectangle height</span>
1450081         <span class="keyword">elseif</span> isequal(ObjectData.Style,<span class="string">'plane'</span>) <span class="comment">%case of 'plane'</span>
1460082             DX=(xy(1,1)-ObjectData.Coord(1,1));
1470083             DY=(xy(1,2)-ObjectData.Coord(1,2));
1480084             ObjectData.Phi=(angle(DX+i*DY))*180/pi;<span class="comment">%rectangle widt</span>
1490085             <span class="keyword">if</span> isfield(ObjectData,<span class="string">'RangeX'</span>)
1500086                 XMax=sqrt(DX*DX+DY*DY);
1510087                 <span class="keyword">if</span> XMax&gt;max(ObjectData.RangeX)
1520088                     ObjectData.RangeX=[min(ObjectData.RangeX) XMax];
1530089                 <span class="keyword">end</span>
1540090             <span class="keyword">end</span>
1550091         <span class="keyword">end</span>
1560092     <span class="keyword">end</span>
1570093     <span class="comment">%set(AxeData.CurrentObject,'UserData',ObjectData); %update the object properties</span>
1580094     <span class="keyword">if</span> isequal(ObjectData.Style,<span class="string">'rectangle'</span>)||isequal(ObjectData.Style,<span class="string">'ellipse'</span>)
1590095         NbDefPoint=1; 
1600096     <span class="keyword">elseif</span> isequal(ObjectData.Style,<span class="string">'line'</span>)|| isequal(ObjectData.Style,<span class="string">'plane'</span>);
1610097         NbDefPoint=2;
1620098     <span class="keyword">else</span>
1630099          NbDefPoint=3;
1640100     <span class="keyword">end</span>
1650101     
1660102     <span class="comment">%show object coordinates in the GUI set_object</span>
1670103     h_set_object=findobj(allchild(0),<span class="string">'Name'</span>,<span class="string">'set_object'</span>);
1680104     h_XObject=findobj(h_set_object,<span class="string">'Tag'</span>,<span class="string">'XObject'</span>);
1690105     h_YObject=findobj(h_set_object,<span class="string">'Tag'</span>,<span class="string">'YObject'</span>);
1700106     h_ZObject=findobj(h_set_object,<span class="string">'Tag'</span>,<span class="string">'ZObject'</span>);
1710107     set(h_XObject,<span class="string">'String'</span>,num2str(ObjectData.Coord(:,1),4));
1720108     set(h_YObject,<span class="string">'String'</span>,num2str(ObjectData.Coord(:,2),4));
1730109     set(h_ZObject,<span class="string">'String'</span>,num2str(ObjectData.Coord(:,3),4));
1740110     <span class="keyword">if</span> NbDefPoint&lt;=2 || isequal(get(currentfig,<span class="string">'SelectionType'</span>),<span class="string">'alt'</span>) ||<span class="keyword">...</span>
1750111               isequal(AxeData.Drawing,<span class="string">'translate'</span>) || isequal(AxeData.Drawing,<span class="string">'deform'</span>);<span class="comment">%stop drawing</span>
1760112         AxeData.CurrentOrigin=[]; <span class="comment">%suppress the current origin</span>
1770113        <span class="keyword">if</span> isequal(ObjectData.Style,<span class="string">'line'</span>) &amp;&amp; size(ObjectData.Coord,1)&lt;=1
1780114            AxeData.Drawing=<span class="string">'off'</span>;
1790115            set(currentaxes,<span class="string">'UserData'</span>,AxeData);
1800116             <span class="keyword">return</span> <span class="comment">% line needs at leqst two points</span>
1810117        <span class="keyword">end</span>
1820118        <span class="keyword">if</span>  ~isempty(ObjectData)
1830119              testmask=0;
1840120              hmask=findobj(huvmat,<span class="string">'Tag'</span>,<span class="string">'makemask'</span>);
1850121              <span class="keyword">if</span> ~isempty(hmask)
1860122                 testmask=get(hmask,<span class="string">'Value'</span>);
1870123              <span class="keyword">end</span>
1880124              <span class="keyword">if</span> testmask
1890125                  PlotHandles=[];<span class="comment">%do not project data on the object during mask creation</span>
1900126              <span class="keyword">else</span>
1910127                  PlotHandles=<a href="get_plot_handles.html" class="code" title="function PlotHandles=get_plot_handles(handles)">get_plot_handles</a>(handles);<span class="comment">%get the handles of the graphic objects setting the plotting parameters</span>
1920128              <span class="keyword">end</span>
1930129             AxeData.hset_object=<a href="set_object.html" class="code" title="function varargout = set_object(varargin)">set_object</a>(ObjectData,PlotHandles);<span class="comment">% call the set_object interface ,*</span>
1940130             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,PlotHandles);
1950131             <span class="comment">%ObjectData=update_obj(UvData,IndexObj,ObjectData,PlotHandles);</span>
1960132             <span class="keyword">if</span>  isfield(UvData.Object{IndexObj},<span class="string">'PlotParam'</span>)
1970133                 <a href="write_plot_param.html" class="code" title="function write_plot_param(handles,PlotParam)">write_plot_param</a>(PlotHandles,UvData.Object{IndexObj}.PlotParam); <span class="comment">%update the display of plotting parameters for the current object</span>
1980134             <span class="keyword">end</span>             
1990135             set(hhuvmat.create,<span class="string">'Value'</span>,0);<span class="comment">% set to 'off' the button for object creation</span>
2000136             set(hhuvmat.create,<span class="string">'BackgroundColor'</span>,[0 1 0]);<span class="comment">% paint the creation button in green</span>
2010137             set(hhuvmat.edit,<span class="string">'BackgroundColor'</span>,[1 1 0]);<span class="comment">% paint the edit text in yellow</span>
2020138             set(hhuvmat.edit,<span class="string">'Value'</span>,1);<span class="comment">%</span>
2030139             set(hhuvmat.edit,<span class="string">'Enable'</span>,<span class="string">'on'</span>);<span class="comment">%</span>
2040140             set(hhuvmat.MenuEdit,<span class="string">'Enable'</span>,<span class="string">'on'</span>);<span class="comment">%</span>
2050141             set(hhuvmat.MenuEdit,<span class="string">'Enable'</span>,<span class="string">'on'</span>);<span class="comment">%</span>
2060142             set(hhuvmat.MenuObject,<span class="string">'Enable'</span>,<span class="string">'on'</span>);<span class="comment">%</span>
2070143             UvData.MouseAction=<span class="string">'edit_object'</span>; <span class="comment">% set the edit button to 'on'</span>
2080144         <span class="keyword">end</span>
2090145     <span class="keyword">else</span>
2100146        AxeData.CurrentOrigin=[xy(1,1) xy(1,2)]; <span class="comment">%the current point becomes the new current origin</span>
2110147        test_drawing=1;<span class="comment">%allow continuation of drawing object</span>
2120148        UvData.Object{IndexObj}=ObjectData;
2130149     <span class="keyword">end</span>
2140150     hother=findobj(<span class="string">'Tag'</span>,<span class="string">'deformpoint'</span>);<span class="comment">%find all the deformpoints</span>
2150151     set(hother,<span class="string">'Color'</span>,<span class="string">'b'</span>);<span class="comment">%reset all the deformpoints in 'blue'</span>
2160152 <span class="keyword">else</span>
2170153     test_drawing=0;
2180154 <span class="keyword">end</span>
2190155
2200156 <span class="comment">%creation of a new zoom plot</span>
2210157 test_replot=0;
2220158 <span class="keyword">if</span> isequal(get(currentfig,<span class="string">'SelectionType'</span>),<span class="string">'normal'</span>);<span class="comment">%if left button has been pressed</span>
2230159 <span class="comment">%         FigData=get(currentfig,'UserData');</span>
2240160         hparentfig=currentfig;
2250161         <span class="comment">%open or update a new zoom figure if a rectangle has been drawn</span>
2260162         <span class="keyword">if</span> ishandle(currentaxes);
2270163             <span class="keyword">if</span> isfield(AxeData,<span class="string">'CurrentRectZoom'</span>) &amp; ishandle(AxeData.CurrentRectZoom)
2280164                 PosRect=get(AxeData.CurrentRectZoom,<span class="string">'Position'</span>);
2290165                 <span class="keyword">if</span> isfield(AxeData,<span class="string">'CurrentVec'</span>) &amp; ishandle(AxeData.CurrentVec)
2300166                     delete(AxeData.CurrentVec)
2310167                 <span class="keyword">end</span>
2320168                 <span class="comment">%update the axes UvData.Plane2 if it exists, else create it</span>
2330169 <span class="comment">%                 if isfield (UvData,'Plane2') &amp; ishandle(UvData.Plane2.Fig)%if the second plan plotting axis already exists</span>
2340170 <span class="comment">%                     hfig2=UvData.Plane2.Fig;</span>
2350171 <span class="comment">%                     if isequal(gcf,hfig2)%if we are already on the secondary figure</span>
2360172 <span class="comment">%                         test_replot=1;</span>
2370173 <span class="comment">%                     else</span>
2380174 <span class="comment">%                         figure(hfig2)%set hfig2 as the current figure</span>
2390175 <span class="comment">%                         clf; %erase axes</span>
2400176 <span class="comment">%                     end</span>
2410177 <span class="comment">%                 else</span>
2420178                     hfig2=figure;<span class="comment">%create new figure</span>
2430179                     set(hfig2,<span class="string">'name'</span>,<span class="string">'zoom'</span>)
2440180                     set(hfig2,<span class="string">'Units'</span>,<span class="string">'normalized'</span>)
2450181                     set(hfig2,<span class="string">'Position'</span>,[0.2 0.33 0.6 0.6]);
2460182 <span class="comment">%                     UvData.Plane2.Fig=hfig2;</span>
2470183                     map=colormap(currentaxes);
2480184                     colormap(map);<span class="comment">%transmit the current colormap to the zoom fig</span>
2490185                     get(handles.RootFile,<span class="string">'String'</span>)
2500186 <span class="comment">%                 end</span>
2510187                 set(hfig2,<span class="string">'Position'</span>,[0.2 0.33 0.6 0.6]);
2520188                 <span class="keyword">if</span> test_replot==0
2530189                     set(hfig2,<span class="string">'Unit'</span>,<span class="string">'normalized'</span>)
2540190                     set(hfig2,<span class="string">'KeyPressFcn'</span>,{@<a href="keyboard_callback.html" class="code" title="function keyboard_callback(hObject,eventdata,handleshaxes)">keyboard_callback</a>,handles})<span class="comment">%set keyboard action function</span>
2550191                     set(hfig2,<span class="string">'WindowButtonMotionFcn'</span>,{@<a href="mouse_motion.html" class="code" title="function mouse_motion(hObject,eventdata,handles)">mouse_motion</a>,handles})<span class="comment">%set mouse action function</span>
2560192                     set(hfig2,<span class="string">'WindowButtonDownFcn'</span>,{@<a href="mouse_down.html" class="code" title="function xy=mouse_down(hObject,eventdata)">mouse_down</a>})<span class="comment">%set mouse click action function</span>
2570193                     set(hfig2,<span class="string">'WindowButtonUpFcn'</span>,{@<a href="mouse_up.html" class="code" title="function mouse_up(ggg,eventdata,handles)">mouse_up</a>,handles}) 
2580194                     set(hfig2,<span class="string">'DeleteFcn'</span>,{@<a href="close_fig.html" class="code" title="function close_fig(ggg,eventdata,hparent,type)">close_fig</a>,AxeData.CurrentRectZoom,<span class="string">'zoom'</span>})
2590195                     set(hfig2,<span class="string">'UserData'</span>,AxeData.CurrentRectZoom)<span class="comment">% record the parent object (zoom rectangle) in the new fig</span>
2600196                     <span class="comment">%UvData.Plane2.Axes=copyobj(currentaxes,hfig2); %copy the current graph axes to the zoom figure</span>
2610197                     AxeData.ZoomAxes=copyobj(currentaxes,hfig2); <span class="comment">%copy the current graph axes to the zoom figure</span>
2620198                     figure(hfig2)
2630199                     set(AxeData.ZoomAxes,<span class="string">'Position'</span>,[0.1300    0.1100    0.7750    0.8150])<span class="comment">% standard axes position on a figure</span>
2640200                     hcol=findobj(hparentfig,<span class="string">'Tag'</span>,<span class="string">'Colorbar'</span>); <span class="comment">%look for colorbar axes</span>
2650201                     <span class="keyword">if</span> ~isempty(hcol)             
2660202                         hcol_new=colorbar;
2670203                         YTick=get(hcol,<span class="string">'YTick'</span>);
2680204                         YTicklabel=get(hcol,<span class="string">'Yticklabel'</span>); 
2690205                         colbarlim=get(hcol,<span class="string">'YLim'</span>);
2700206                         newcolbarlim=get(hcol_new,<span class="string">'YLim'</span>);
2710207                         scale_bar=(newcolbarlim(2)-newcolbarlim(1))/(colbarlim(2)-colbarlim(1));               
2720208                         YTick_rescaled=newcolbarlim(1)+scale_bar*(YTick-colbarlim(1));
2730209                         set(hcol_new,<span class="string">'YTick'</span>,YTick_rescaled);
2740210                         set(hcol_new,<span class="string">'Yticklabel'</span>,YTicklabel);
2750211                     <span class="keyword">end</span>
2760212                 <span class="keyword">end</span>
2770213                 <span class="keyword">if</span> ishandle(AxeData.ZoomAxes)
2780214                     hnew_rect=findobj(AxeData.ZoomAxes,<span class="string">'Tag'</span>,<span class="string">'rect_zoom'</span>);
2790215                     <span class="keyword">if</span> ~isempty(hnew_rect)
2800216                         delete(hnew_rect);
2810217                         ChildAxeData=get(AxeData.ZoomAxes,<span class="string">'UserData'</span>);
2820218                         ChildAxeData.CurrentRectZoom=[]; <span class="comment">% no rect zoom in the new window</span>
2830219                         ChildAxeData.Drawing=<span class="string">'off'</span>;
2840220                         ChildAxeData.ParentRect=AxeData.CurrentRectZoom;<span class="comment">%set the rectangle as a 'parent' associated to the new axes</span>
2850221                         set(AxeData.ZoomAxes,<span class="string">'UserData'</span>,ChildAxeData);<span class="comment">%update the AxeData of the new axes</span>
2860222                        <span class="comment">% UvData.TopFig=hfig2;%put the new fig to the top of the stack for uvmat</span>
2870223         <span class="comment">%                 set(huvmat,'UserData',UvData)</span>
2880224                         set(AxeData.ZoomAxes,<span class="string">'Xlim'</span>,[PosRect(1) PosRect(1)+PosRect(3)])
2890225                         set(AxeData.ZoomAxes,<span class="string">'Ylim'</span>,[PosRect(2) PosRect(2)+PosRect(4)])
2900226                     <span class="keyword">end</span>
2910227                 <span class="keyword">end</span>
2920228             <span class="keyword">end</span>
2930229         <span class="keyword">end</span>
2940230 <span class="keyword">end</span>
2950231 <span class="comment">%zoom in if no new figure is created</span>
2960232 <span class="keyword">if</span> zoomstate
2970233      <span class="keyword">if</span>  isequal(get(currentfig,<span class="string">'SelectionType'</span>),<span class="string">'normal'</span>);<span class="comment">%if left button has been pressed</span>
2980234         <span class="comment">%zoom(2)% zoom in by a factor of 2</span>
2990235         alpha=0.5; <span class="comment">%zoom factor (zoom in by a factor 2)</span>
3000236         xlim=get(currentaxes,<span class="string">'XLim'</span>);
3010237         xlim_new(1)=(1+alpha)*xlim(1)/2+(1-alpha)*xlim(2)/2;
3020238         xlim_new(2)=(1-alpha)*xlim(1)/2+(1+alpha)*xlim(2)/2;
3030239         set(currentaxes,<span class="string">'XLim'</span>,xlim_new)
3040240         ylim=get(currentaxes,<span class="string">'YLim'</span>);
3050241         ylim_new(1)=(1+alpha)*ylim(1)/2+(1-alpha)*ylim(2)/2;
3060242         ylim_new(2)=(1-alpha)*ylim(1)/2+(1+alpha)*ylim(2)/2;
3070243         set(currentaxes,<span class="string">'YLim'</span>,ylim_new)
3080244         <span class="keyword">if</span> isfield(AxeData,<span class="string">'ParentRect'</span>)<span class="comment">% update the position of the parent rectangle represneting the field</span>
3090245             hparentrect=AxeData.ParentRect;
3100246             xlim=get(currentaxes,<span class="string">'XLim'</span>);
3110247             ylim=get(currentaxes,<span class="string">'YLim'</span>);
3120248             rect([1 2])=[xlim(1) ylim(1)];
3130249             rect([3 4])=[xlim(2)-xlim(1) ylim(2)-ylim(1)];
3140250             set(hparentrect,<span class="string">'Position'</span>,rect)
3150251         <span class="keyword">end</span>
3160252
3170253      <span class="keyword">elseif</span> isequal(get(currentfig,<span class="string">'SelectionType'</span>),<span class="string">'alt'</span>); <span class="comment">%if right button has been pressed</span>
3180254             <span class="comment">%zoom(0.5)% zoom out by a factor of 2</span>
3190255             alpha=2; <span class="comment">%zoom factor (zoom out by a factor 2)</span>
3200256             xlim=get(currentaxes,<span class="string">'XLim'</span>);
3210257             xlim_new(1)=(1+alpha)*xlim(1)/2+(1-alpha)*xlim(2)/2;
3220258             xlim_new(2)=(1-alpha)*xlim(1)/2+(1+alpha)*xlim(2)/2;
3230259             ylim=get(currentaxes,<span class="string">'YLim'</span>);
3240260             ylim_new(1)=(1+alpha)*ylim(1)/2+(1-alpha)*ylim(2)/2;
3250261             ylim_new(2)=(1-alpha)*ylim(1)/2+(1+alpha)*ylim(2)/2;
3260262             set(currentaxes,<span class="string">'XLim'</span>,xlim_new)
3270263             set(currentaxes,<span class="string">'YLim'</span>,ylim_new)
3280264             <span class="comment">%test whther zoom out is operating (to inactivate AxedAta</span>
3290265             <span class="keyword">if</span> ~isfield(AxeData,<span class="string">'CurrentXLim'</span>)| ~isequal(xlim,AxeData.CurrentXLim)
3300266                 AxeData.CurrentXLim=xlim;<span class="comment">%</span>
3310267             <span class="keyword">end</span>
3320268             <span class="keyword">if</span> isfield(AxeData,<span class="string">'ParentRect'</span>)<span class="comment">% update the position of the parent rectangle represneting the field</span>
3330269                 hparentrect=AxeData.ParentRect;
3340270                 xlim=get(currentaxes,<span class="string">'XLim'</span>);
3350271                 ylim=get(currentaxes,<span class="string">'YLim'</span>);
3360272                 rect([1 2])=[xlim(1) ylim(1)];
3370273                 rect([3 4])=[xlim(2)-xlim(1) ylim(2)-ylim(1)];
3380274                 set(hparentrect,<span class="string">'Position'</span>,rect)
3390275             <span class="keyword">end</span>
3400276       <span class="keyword">end</span>
3410277 <span class="keyword">end</span>
3420278
3430279 <span class="comment">%display the data of the current object selected with the mouse right click</span>
3440280 <span class="keyword">if</span> isequal(get(currentfig,<span class="string">'SelectionType'</span>),<span class="string">'alt'</span>) &amp;&amp; ~zoomstate &amp;&amp; (~isfield(AxeData,<span class="string">'Drawing'</span>)||~isequal(AxeData.Drawing,<span class="string">'create'</span>))
3450281     hother=findobj(<span class="string">'Tag'</span>,<span class="string">'proj_object'</span>);<span class="comment">%find all the proj objects</span>
3460282     nbselect=0;
3470283     <span class="comment">%test the existence of selected objects:</span>
3480284     <span class="keyword">for</span> iproj=1:length(hother);
3490285         iselect=isequal(get(hother(iproj),<span class="string">'Selected'</span>),<span class="string">'on'</span>);<span class="comment">%reset all the proj objects in 'blue' by default</span>
3500286         nbselect=nbselect+iselect;
3510287     <span class="keyword">end</span>
3520288     hother=findobj(<span class="string">'Tag'</span>,<span class="string">'proj_object'</span>,<span class="string">'Type'</span>,<span class="string">'line'</span>);<span class="comment">%find all the proj objects</span>
3530289     set(hother,<span class="string">'Color'</span>,<span class="string">'b'</span>);<span class="comment">%reset all the proj objects in 'blue' by default</span>
3540290     set(hother,<span class="string">'Selected'</span>,<span class="string">'off'</span>)
3550291     hother=findobj(<span class="string">'Tag'</span>,<span class="string">'proj_object'</span>,<span class="string">'Type'</span>,<span class="string">'rectangle'</span>);
3560292     set(hother,<span class="string">'EdgeColor'</span>,<span class="string">'b'</span>);
3570293     set(hother,<span class="string">'Selected'</span>,<span class="string">'off'</span>)
3580294     hother=findobj(<span class="string">'Tag'</span>,<span class="string">'proj_object'</span>,<span class="string">'Type'</span>,<span class="string">'patch'</span>);
3590295     set(hother,<span class="string">'FaceColor'</span>,<span class="string">'b'</span>);   
3600296     <span class="keyword">if</span> isequal(get(gco,<span class="string">'Type'</span>),<span class="string">'image'</span>)
3610297         currentobj=get(gco,<span class="string">'parent'</span>);<span class="comment">%parent axes of the image</span>
3620298     <span class="keyword">else</span> 
3630299         currentobj=gco;<span class="comment">%default</span>
3640300     <span class="keyword">end</span>
3650301     <span class="keyword">if</span> ((nbselect==0) &amp;&amp; isequal(get(currentobj,<span class="string">'Type'</span>),<span class="string">'axes'</span>)) || isequal(currentobj,huvmat)
3660302         <span class="keyword">global</span> CurData
3670303         CurData=get(currentobj,<span class="string">'UserData'</span>);
3680304         <span class="comment">%plot_text(CurData)</span>
3690305         <span class="comment">%get_field([],CurData);</span>
3700306         evalin(<span class="string">'base'</span>,<span class="string">'global CurData'</span>)<span class="comment">%make CurData global in the workspace</span>
3710307         objtype=get(currentobj,<span class="string">'Type'</span>);
3720308         display([<span class="string">'UserData of '</span> objtype <span class="string">':'</span>])
3730309         evalin(<span class="string">'base'</span>,<span class="string">'CurData'</span>) <span class="comment">%display CurData in the workspace</span>
3740310         commandwindow
3750311     <span class="keyword">end</span>
3760312 <span class="keyword">end</span>
3770313 <span class="keyword">if</span> test_drawing==0
3780314         AxeData.Drawing=<span class="string">'off'</span>;<span class="comment">%stop current drawing action</span>
3790315 <span class="keyword">end</span>
3800316 set(currentaxes,<span class="string">'UserData'</span>,AxeData);
3810317 <span class="keyword">if</span> ~isempty(huvmat)
3820318     set(huvmat,<span class="string">'UserData'</span>,UvData);
3830319 <span class="keyword">end</span>
3840320
3850321     
3860322</pre></div>
387<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>
388</body>
389</html>
Note: See TracBrowser for help on using the repository browser.