wtmotion.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:3k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = wtmotion
  2. %WTMOTION Wavelet Toolbox default WindowButtonMotionFcn.
  3. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 13-Oct-98.
  4. %   Last Revision: 18-May-1998.
  5. %   Copyright 1995-2002 The MathWorks, Inc.
  6. %   $Revision: 1.4 $  $Date: 2002/04/14 19:49:38 $
  7. fig = get(0,'PointerWindow');
  8. if isempty(fig) | (fig==0) , return; end
  9. axeInFig = findobj(allchild(fig),'flat','type','axes','Visible','On');
  10. nbAxes   = length(axeInFig);
  11. pAx = get(axeInFig,'Position');
  12. if nbAxes>1 ,  pAx = cat(1,pAx{:}); end
  13. figCurPt = get(fig,'CurrentPoint');
  14. indAxe = 0;
  15. for k = 1:nbAxes
  16.    xflag = (pAx(k,1)-figCurPt(1))*(pAx(k,1)+pAx(k,3)-figCurPt(1));
  17.    yflag = (pAx(k,2)-figCurPt(2))*(pAx(k,2)+pAx(k,4)-figCurPt(2));
  18.    if xflag<0 & yflag<0 , indAxe = k; break; end
  19. end
  20. pointer = 'arrow';
  21. if indAxe~=0 
  22.    selAxes = axeInFig(indAxe);
  23.    lines   = findobj(selAxes,'type','line');
  24.    nbLines = length(lines);
  25.    if nbLines>0
  26.        indLines = false(nbLines,1);
  27.        for k = 1:nbLines
  28.           indLines(k) = isappdata(lines(k),'selectPointer');
  29.        end
  30.        selLines = lines(indLines);
  31.        nbLines  = length(selLines);
  32.        if nbLines>0
  33.            xlim   = get(selAxes,'Xlim');
  34.            rx     = (figCurPt(1)-pAx(indAxe,1))/pAx(indAxe,3);
  35.            xPoint = xlim(1)+rx*(xlim(2)-xlim(1));
  36.            ylim   = get(selAxes,'Ylim');
  37.            ry     = (figCurPt(2)-pAx(indAxe,2))/pAx(indAxe,4);
  38.            yPoint = ylim(1)+ry*(ylim(2)-ylim(1));
  39.            dx     = Inf;
  40.            dy     = Inf;
  41.            iLx    = 0;
  42.            iLy    = 0;
  43.            for k = 1:nbLines
  44.              xd = get(selLines(k),'Xdata')-xPoint;
  45.              yd = get(selLines(k),'Ydata')-yPoint;
  46.              mx = min(abs(xd));
  47.              my = min(abs(yd));
  48.              if mx<dx , dx = mx; iLx = k; end
  49.              if my<dy , dy = my; iLy = k; end
  50.            end
  51.            [xpix,ypix] = wfigutil('xyprop',fig,1,1);
  52.            tolx = 3*abs(xlim(2)-xlim(1))/(pAx(indAxe,3)/xpix);
  53.            toly = 3*abs(ylim(2)-ylim(1))/(pAx(indAxe,4)/ypix);
  54.            if iLx>0 & dx<tolx
  55.                val = getappdata(selLines(iLx),'selectPointer');
  56.                switch val
  57.                  case 'H', pointer = 'uddrag';
  58.                  case 'V', pointer = 'lrdrag';
  59.                end
  60.            elseif iLy>0 & dy<toly
  61.                val = getappdata(selLines(iLy),'selectPointer');
  62.                switch val
  63.                  case 'H', pointer = 'uddrag';
  64.                  case 'V', pointer = 'lrdrag';
  65.                end
  66.            end
  67.        end
  68.    end
  69. end
  70. setptr(fig,pointer);
  71. drawnow