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

波变换

开发平台:

Matlab

  1. function cbthrw2d(option,in2,in3,in4)
  2. %CBTHRW2D Callbacks for threshold utilities 2-D.
  3. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 03-Oct-98.
  4. %   Last Revision: 31-Jan-2003.
  5. %   Copyright 1995-2004 The MathWorks, Inc.
  6. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:39:46 $
  7. switch option
  8.     case 'down'
  9.         % in2 = [fig; pop_dir; dir; level;
  10.         %        h_CMD_LVL(2:3,dir,level); <-- lin_min & lin_max ...
  11.         %        h_CMD_LVL(2:3,level)]     <-- slider & edit
  12.         % in3 = +1 or -1
  13.         % in4 = maxval
  14.         %--------------------------------------------------------------
  15.         fig = in2(1);
  16.         sel_type = get(fig,'SelectionType');
  17.         if strcmp(sel_type,'open') , return; end
  18.         calledFUN = wfigmngr('getWinPROP',fig,'calledFUN');
  19.         feval(calledFUN,'clear_GRAPHICS',fig);
  20.                  
  21.         axe = get(in2(5),'Parent');
  22.         if (axe~=gca) , axes(axe); drawnow discard; end;
  23.         xval = get(in2(5),'Xdata');
  24.         set(in2(5),'Userdata',xval(1)); 
  25.         dir_pop = get(in2(2),'Value');
  26.         if ~isequal(dir_pop,in2(3))
  27.             cb = get(in2(2),'callback');
  28.             dir_pop = in2(3);
  29.             set(in2(2),'Value',dir_pop);
  30.             eval(cb)
  31.         end
  32.         % Setting the compressed coefs axes invisible.
  33.         %---------------------------------------------
  34.         set(in2(5:6),'Color','g');
  35.         drawnow
  36.         argStr   = [num2mstr(in2) ',' int2str(in3)];
  37.         cba_move = [mfilename '(''move'',' argStr ',' num2mstr(in4) ');'];
  38.         cba_up   = [mfilename '(''up'',' argStr ');'];
  39.         wtbxappdata('set',fig,'save_WindowButtonUpFcn',get(fig,'WindowButtonUpFcn'));
  40.         set(fig,'WindowButtonMotionFcn',cba_move,'WindowButtonUpFcn',cba_up);
  41.         setptr(fig,'lrdrag');
  42.     case 'move'
  43.         % in2 = [fig; pop_dir; dir; level;
  44.         %        h_CMD_LVL(2:3,dir,level); <-- lin_min & lin_max ...
  45.         %        h_CMD_LVL(2:3,level)]     <-- slider & edit
  46.         % in3 = +1 or -1
  47.         % in4 = maxval
  48.         %--------------------------------------------------------------
  49.         axe = get(in2(5),'Parent');
  50.         p   = get(axe,'currentpoint');
  51.         new_thresh = p(1,1)*in3;
  52.         if     (new_thresh<=0)   , new_thresh = 0;
  53.         elseif (new_thresh>=in4) , new_thresh = in4;
  54.         end
  55.         sli_lev = in2(7);
  56.         if sli_lev~=0
  57.            min_sli = get(sli_lev,'Min');
  58.            max_sli = get(sli_lev,'Max');
  59.            new_thresh = max(min_sli,min(new_thresh,max_sli));
  60.         end
  61.         xnew = [new_thresh new_thresh];
  62.         xold = get(in2(6),'Xdata');
  63.         if isequal(xold,xnew) , return; end
  64.         if sli_lev~=0
  65.            set(sli_lev,'Value',new_thresh);
  66.            set(in2(8),'string',sprintf('%1.4g',new_thresh));
  67.         end
  68.         if norm(xnew)==0 , vis = 'off'; else , vis = 'on'; end
  69.         set(in2(5),'Xdata',xnew,'Userdata',new_thresh);
  70.         set(in2(6),'Visible',vis,'Xdata',-xnew);
  71.     case 'up'
  72.         % in2 = [fig; pop_dir; dir; level;
  73.         %        h_CMD_LVL(2:3,dir,level); <-- lin_min & lin_max ...
  74.         %        h_CMD_LVL(2:3,level)]     <-- slider & edit
  75.         % in3 = +1 or -1
  76.         %--------------------------------------------------------------
  77.         fig = in2(1);
  78.         save_WindowButtonUpFcn = wtbxappdata('del',fig,'save_WindowButtonUpFcn');
  79.         set(fig,'WindowButtonMotionFcn','wtmotion',...
  80. 'WindowButtonUpFcn',save_WindowButtonUpFcn);
  81.         set(in2(5:6),'Color',wtbutils('colors','linTHR'));
  82.         mousefrm(0,'watch');
  83.         drawnow;
  84.         new_thresh = get(in2(5),'Userdata');
  85.         dir_sel = in2(3);
  86.         lev_sel = in2(4);
  87.         sli_lev = in2(7);    
  88.         utthrw2d('update_thrStruct',fig,dir_sel,lev_sel,new_thresh);
  89.         utthrw2d('show_LVL_perfos',fig);
  90.         mousefrm(0,'arrow');
  91. end