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

波变换

开发平台:

Matlab

  1. function varargout = wmemtool(option,varargin)
  2. %WMEMTOOL Manage memory tool.
  3. %
  4. % GENERAL BUFFER OPTIONS
  5. %-----------------------
  6. %   'handle' , 'create' , 'close', 'empty' ,
  7. %   'put', 'get', 'del', 'find'.
  8. %  
  9. %   HDL = WMEMTOOL('handle')
  10. %   HDL = WMEMTOOL('create')
  11. %   WMEMTOOL('close')
  12. %   WMEMTOOL('empty')
  13. %   WMEMTOOL('put',NAME,VAL) or wmemtool('put',NAME,VAL,STRINFO)
  14. %   creates if buffer is not found.
  15. %
  16. %   VAL = WMEMTOOL('get',NAME,STRINFO)
  17. %   returns [] if variable named "NAME" is not found.
  18. %
  19. %   WMEMTOOL('del',NAME,VAL) or WMEMTOOL('del',NAME,VAL,STRINFO)
  20. %
  21. %   REP = WMEMTOOL('find') returns 1 if buffer exists else
  22. %   0 is returned.
  23. %
  24. %  BUFFER IN A FIGURE OPTIONS
  25. %----------------------------
  26. %   T = WMEMTOOL('ini',FIG,BLOCNAME,NBVAL)
  27. %   T = WMEMTOOL('hmb',FIG,BLOCNAME)
  28. %   T is the handle of the text which contains the MemBloc.
  29. %
  30. %   WMEMTOOL('wmb',FIG,BLOCNAME,IND1,V1,...,IND12,V12),
  31. %   [V1,..V12] = WMEMTOOL('rmb',FIG,BLOCNAME,IND1,...,IND12),
  32. %   with : Vj = jth value and INDj = jth index in the MemBloc.
  33. %
  34. %   WMEMTOOL('dmb',FIG,BLOCNAME) deletes the MemBloc.
  35. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-May-96.
  36. %   Last Revision: 15-Jun-1998.
  37. %   Copyright 1995-2002 The MathWorks, Inc.
  38. % $Revision: 1.14 $
  39. % Tag for GENERAL BUFFER.
  40. %------------------------
  41. tag_fig_mem = 'Fig_Mem_Buffer';
  42. tag_axe_mem = 'Axe_Mem_Buffer';
  43. % Show Buffers.
  44. %--------------
  45. old_show = get(0,'ShowHiddenHandles');
  46. set(0,'ShowHiddenHandles','on');
  47. option = option(1:3);
  48. %-----------------------------%
  49. %                             %
  50. %  BUFFER IN A FIGURE OPTIONS %
  51. %                             %
  52. %-----------------------------%
  53. switch option
  54.     case 'rmb'
  55.         %******************************************%
  56.         %** OPTION = 'rmb' - reading in MemBloc. **%
  57.         %******************************************%
  58.         % win_handle = in2
  59.         % bloc_name  = in3
  60.         % if nargin>3
  61.         %    in(k+3) index and out(k) value.
  62.         %-----------------------------------
  63.         varargout{1} = [];
  64.         fig = varargin{1};
  65.         [okFig,axe_mem] = bufferInFig(fig,tag_axe_mem);
  66.         if okFig & ~isempty(axe_mem)
  67.             t = findobj(axe_mem,'type','text','tag',varargin{2});
  68.             if ~isempty(t)
  69.                 bloc    = get(t,'Userdata');
  70.                 indices = cat(1,varargin{3:end});
  71.                 varargout = bloc(indices);
  72.             end
  73.         end
  74.     case 'wmb'
  75.         %******************************************%
  76.         %** OPTION = 'wmb' - writing in MemBloc. **%
  77.         %******************************************%
  78.         % win_handle = in2
  79.         % bloc_name  = in3
  80.         %    in(2k+2) index and in(2k+3) value
  81.         %
  82.         % out(1) = text handle.
  83.         %--------------------------------------
  84.         fig = varargin{1};
  85.         [okFig,axe_mem] = bufferInFig(fig,tag_axe_mem);
  86.         if okFig
  87.             if ~isempty(axe_mem)
  88.                 t = findobj(axe_mem,'type','text','tag',varargin{2});
  89.                 ok_bloc = ~isempty(t);
  90.             else
  91.                 ok_bloc = 0;
  92.             end
  93.             if ~ok_bloc
  94.                 nbval = fix((length(varargin)-2)/2);
  95.                 if nbval<0 , nbval = 0; end
  96.                 t = wmemtool('ini',fig,varargin{2},nbval);
  97.             end
  98.             bloc    = get(t,'Userdata');
  99.             indvar  = 3:2:length(varargin)-1;
  100.             indices = cat(1,varargin{indvar});
  101.             bloc(indices) = varargin(indvar+1);
  102.             set(t,'Userdata',bloc);
  103.             varargout{1} = t;
  104.         else
  105.             varargout{1} = [];
  106.         end
  107.     case 'hmb'
  108.         %*****************************************%
  109.         %** OPTION = 'hmb' - handle of MemBloc. **%
  110.         %*****************************************%
  111.         % win_handle = in2
  112.         % bloc_name  = in3
  113.         %------------------
  114.         fig = varargin{1};
  115.         [okFig,axe_mem] = bufferInFig(fig,tag_axe_mem);
  116.         if okFig & ~isempty(axe_mem)
  117.             varargout{1} = findobj(axe_mem,'type','text','tag',varargin{2});
  118.         else
  119.             varargout{1} = [];
  120.         end
  121.     case 'ini'
  122.         %******************************************%
  123.         %** OPTION = 'ini' - creating a MemBloc. **%
  124.         %******************************************%
  125.         % win_handle = in2
  126.         % bloc_name  = in3
  127.         % nbval = in4
  128.         %-------------------
  129.         fig = varargin{1};
  130.         [okFig,axe_mem] = bufferInFig(fig,tag_axe_mem);
  131.         if okFig 
  132.             if isempty(axe_mem)
  133.                 axe_mem = axes(...
  134.                                'Parent',fig,                   ...
  135.                                'HandleVisibility','off',       ...
  136.                                'Visible','off',                ...
  137.                                'Position',[-1 -1 0.001 0.001], ...
  138.                                'tag',tag_axe_mem               ...
  139.                                );
  140.             end
  141.             t = findobj(axe_mem,'type','text','tag',varargin{2});
  142.             if isempty(t)
  143.                 t = text('Parent',axe_mem,'Visible','off','tag',varargin{2});
  144.             end
  145.             set(t,'Userdata',cell(1,varargin{3}));
  146.             varargout{1} = t;
  147.         else
  148.             varargout{1} = [];
  149.         end
  150.     case 'dmb'
  151.         %***********************%
  152.         %** OPTION = 'dmb' -  **%
  153.         %***********************%
  154.         % fig = in2             %
  155.         % bloc_name = in3 , ... %
  156.         %-----------------------%
  157.         fig = varargin{1};
  158.         [okFig,axe_mem] = bufferInFig(fig,tag_axe_mem);
  159.         if okFig & ~isempty(axe_mem)
  160.             t = [];
  161.             txt_handles = findobj(axe_mem,'type','text');
  162.             if ~isempty(txt_handles)
  163.                 for k = 2:length(varargin)
  164.                     t = [t;findobj(txt_handles,'tag',varargin{k})];
  165.                 end
  166.             end
  167.             if ~isempty(t) , delete(t); end
  168.         end
  169. %------------------------%
  170. %                        %
  171. % GENERAL BUFFER OPTIONS %
  172. %                        %
  173. %------------------------%
  174.     case 'han'
  175.         %***************************************************%
  176.         %** OPTION = 'handle' - get handle of fig buffer  **%
  177.         %***************************************************%
  178.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  179.     case 'cre'
  180.         %********************************************%
  181.         %** OPTION = 'create' - create fig buffer  **%
  182.         %********************************************%
  183.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  184.         if isempty(fig)
  185.             fig = colordef('new','none');
  186.             set(fig,'HandleVisibility','Off','Tag',tag_fig_mem);
  187.         end
  188.         varargout{1} = fig;
  189.     case 'put'
  190.         %************************%
  191.         %** OPTION = 'put' -   **%
  192.         %************************%
  193.         %------------------------------------
  194.         % bloc_name = in2
  195.         % bloc_set:  k = 1 , ...
  196.         %   in(2k+1) index and in(2k+2) value
  197.         %------------------------------------
  198.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  199.         if isempty(fig) , fig = wmemtool('create'); end
  200.         varargout{1} = wmemtool('wmb',fig,varargin{:});
  201.         varargout{2} = fig;
  202.     case 'get'
  203.         %************************%
  204.         %** OPTION = 'get' -   **%
  205.         %************************%
  206.         %------------------------------%
  207.         % name = in2                   %
  208.         % in3 optional string value    %
  209.         %------------------------------%
  210.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  211.         if ~isempty(fig)
  212.             [varargout{1:length(varargin)-1}] = wmemtool('rmb',fig,varargin{:});
  213.         else
  214.             varargout{1} = [] ;
  215.         end
  216.     case 'del'
  217.         %*************************%
  218.         %** OPTION = 'del' -    **%
  219.         %*************************%
  220.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  221.         if ~isempty(fig), wmemtool('dmb',fig,varargin{:}); end
  222.         
  223.     case 'emp'
  224.         %**************************%
  225.         %** OPTION = 'empty' -   **%
  226.         %**************************%
  227.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  228.         if ~isempty(fig) , delete(findobj(fig,'type','text')); end
  229.     case 'fin'
  230.         %************************%
  231.         %** OPTION = 'find' -  **%
  232.         %************************%
  233.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  234.         varargout{1} = 1-isempty(fig);
  235.     case 'clo'
  236.         %******************************************%
  237.         %** OPTION = 'close' - close fig buffer  **%
  238.         %******************************************%
  239.         fig = findobj(0,'type','figure','tag',tag_fig_mem);
  240.         if ~isempty(fig)
  241.             answer = questdlg(...
  242.                             'Delete Globals Buffer ?',...
  243.                             'Main Memory Buffer', ...
  244.                             'yes','no','cancel','no');
  245.             if strcmp(answer,'yes'), delete(fig); end
  246.         end
  247.     otherwise
  248.         %********************%
  249.         %** UNKNOWN OPTION **%
  250.         %********************%
  251.         errargt(mfilename,'Unknown Option','msg');
  252.         error('*');
  253. end
  254. % Hide Buffers.
  255. %--------------
  256. set(0,'ShowHiddenHandles',old_show);
  257. %=============================================================================%
  258. % INTERNAL FUNCTIONS
  259. %=============================================================================%
  260. %-----------------------------------------------------------------------------%
  261. function  [okFig,axe] = bufferInFig(fig,tagAxe)
  262. % bufferInFig returns the handle of the axes Buffer
  263. okFig = ishandle(fig);
  264. if ~okFig , axe = []; return; end
  265. axe = findobj(get(fig,'Children'),'flat','type','axes','tag',tagAxe);
  266. %-----------------------------------------------------------------------------%
  267. %=============================================================================%