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

波变换

开发平台:

Matlab

  1. function [out1,out2,out3] = ...
  2.                 wboxtitl(option,in2,in3,in4,in5,in6,in7,in8,in9,in10)
  3. %WBOXTITL Box title for axes.
  4. %   [OUT1,OUT2,OUT3] = ...
  5. %       WBOXTITL(OPTION,IN2,IN3,IN4,IN5,IN6,IN7,IN8,IN9,IN10)
  6. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-May-96.
  7. %   Last Revision: 01-Jun-1998.
  8. %   Copyright 1995-2002 The MathWorks, Inc.
  9. % $Revision: 1.11 $
  10. tag_boxtitle   = 'Box_Title';
  11. tag_axefigutil = 'Axe_FigUtil';
  12. switch option
  13.     case 'create'
  14.         % in2  = parent axes    (invisible)
  15.         % in3  = axes;
  16.         % in4  = color
  17.         % in5  = title          (optional)
  18.         % in6  = visible        (optional)
  19.         % in7  = fontsize       (optional)
  20.         % in8  = hy_title/2     (optional)
  21.         % in9  = bdx            (optional)
  22.         % in10 = bdy            (optional)
  23.         % out1 = line
  24.         % out2 = text
  25.         %-----------------------------
  26.         Def_AxeFontSize = mextglob('get','Def_AxeFontSize');
  27.         if nargin<5
  28.             in5 = '';     in6 = 'off';    in7  = Def_AxeFontSize;
  29.             in8 = 9;      in9 = 2*in8;    in10 = 2*in8;
  30.         elseif nargin<6
  31.             in6 = 'off';  in7 = Def_AxeFontSize;
  32.             in8 = 9;      in9 = 2*in8;    in10 = 2*in8;
  33.         elseif nargin<7
  34.             in7 = Def_AxeFontSize;
  35.             in8 = 9;      in9 = 2*in8;    in10 = 2*in8;
  36.         elseif nargin<8
  37.             in8 = 9;      in9 = 2*in8;    in10 = 2*in8;
  38.         elseif nargin<9
  39.             in9 = 2*in8;  in10 = 2*in8;
  40.         elseif nargin<10
  41.             in10 = 2*in9;
  42.         end     
  43.         if ~ishandle(in2)
  44.             f = get(in3,'Parent');
  45.             in2 = findobj(f,'type','axes','tag',tag_axefigutil);
  46.             if isempty(in2)
  47.                 in2 = axes(...
  48.                         'Parent',f,               ...
  49.                         'Units','normalized',     ...
  50.                         'Position',[0 0 1 1],     ...
  51.                         'Xlim',[0 1],'Ylim',[0 1],...
  52.                         'Visible','off',          ...
  53.                         'Tag',tag_axefigutil      ...
  54.                         );
  55.             end
  56.         end
  57.         commonProp = {...
  58.            'Parent',in2,     ...
  59.            'Visible','off',  ...
  60.            'Color',in4,      ...
  61.            'Userdata',in3,   ...
  62.            'Tag',tag_boxtitle...
  63.            };
  64.         out1 = line(commonProp{:});
  65.         out2 = text(commonProp{:}, ...
  66.                     'String',in5,                ...
  67.                     'FontSize',in7,              ...
  68.                     'HorizontalAlignment','left' ...
  69.                     );
  70.         [xdata,ydata,pos_txt] = wboxtitl('compute_pos',...
  71.                                         in3,out1,out2,in8,in9,in10);
  72.         set(out1,'Xdata',xdata,'Ydata',ydata,'Visible',in6);
  73.         set(out2,'Position',pos_txt,'Visible',in6);
  74.     case 'pos'
  75.         % in2 = axes
  76.         % in3 = visible (optional)
  77.         % in4 = hy_title/2 (optional)
  78.         % in5 = bdx        (optional)
  79.         % in6 = bdy        (optional)
  80.         %-----------------------------
  81.         f = get(in2,'Parent');
  82.         l = findobj(f,'type','line','userdata',in2,'tag',tag_boxtitle);
  83.         t = findobj(f,'type','text','userdata',in2,'tag',tag_boxtitle);
  84.         if nargin<3
  85.             in3 = get(l,'visible');
  86.             in4 = 9;     in5 = 2*in4;  in6 = 2*in4;
  87.         elseif nargin<4
  88.             in4 = 9;     in5 = 2*in4;  in6 = 2*in4;
  89.         elseif nargin<5
  90.             in5 = 2*in4; in6 = 2*in4;
  91.         elseif nargin<6
  92.             in6 = 2*in4;
  93.         end
  94.         [xdata,ydata,pos_txt] = wboxtitl('compute_pos',in2,l,t,in4,in5,in6);
  95.         set(l,'Xdata',xdata,'Ydata',ydata,'Visible',in3);
  96.         set(t,'Position',pos_txt,'Visible',in3);
  97.     case 'vis'
  98.         % in2 = axes
  99.         % in3 = visible
  100.         %------------
  101.         f = get(in2,'Parent');
  102.         l = findobj(f,'type','line','userdata',in2,'tag',tag_boxtitle);
  103.         t = findobj(f,'type','text','userdata',in2,'tag',tag_boxtitle);
  104.         set([l t],'Visible',in3);
  105.     case 'compute_pos'
  106.         % in2 = axes
  107.         % in3 = line
  108.         % in4 = text
  109.         % in5 = hy_title/2 (optional)
  110.         % in6 = bdx        (optional)
  111.         % in7 = bdy        (optional)
  112.         % out1 = xdata
  113.         % out2 = ydata
  114.         % out3 = pos_txt
  115.         %------------
  116.         if nargin<5
  117.             in5 = 9;      in6 = 2*in5;  in7 = 2*in5;
  118.         elseif nargin<6
  119.             in6 = 2*in5;  in7 = 2*in5;
  120.         elseif nargin<7
  121.             in7 = 2*in5;
  122.         end     
  123.         f    = get(in2,'Parent');
  124.         pos  = get(in2,'Position');
  125.         xmin = pos(1);  xmax = xmin+pos(3);
  126.         ymin = pos(2);  ymax = ymin+pos(4);
  127.         [xpixl,ypixl] = wfigutil('prop_size',f,1,1);
  128.         hy    = in5*ypixl;
  129.         dx    = in6*xpixl;
  130.         dy    = in7*ypixl;
  131.         ext   = get(in4,'Extent');
  132.         l4    = (xmax-xmin+2*dx)/4;
  133.         mul1  = 1.1;
  134.         res   =((xmax-xmin+2*dx)-mul1*ext(3))/2;
  135.         l4    = min(res,l4);
  136.         mul2  = 1.4;
  137.         xdata = [xmin-dx+l4,xmin-dx,xmin-dx,xmax+dx,xmax+dx,xmax+dx-l4];
  138.         ydata = [ymax+dy,ymax+dy,ymin-mul2*dy,ymin-mul2*dy,ymax+dy,ymax+dy];
  139.         out1  = [xdata,xmax+dx-l4,xmin-dx+l4,xmin-dx+l4,xmax+dx-l4,xmax+dx-l4];
  140.         out2  = [ydata,ymax+dy+hy,ymax+dy+hy,ymax+dy-hy,ymax+dy-hy,ymax+dy+hy];
  141.         out3  = [(xmin+xmax)/2-ext(3)/2,ymax+dy];
  142.     case 'fontsize'
  143.         % in2 = axes
  144.         % in3 = fontsize
  145.         %----------------
  146.         f = get(in2,'Parent');
  147.         t = findobj(f,'type','text','userdata',in2,'tag',tag_boxtitle);
  148.         set(t,'FontSize',in3);
  149.     case 'set'
  150.         % in2 = axes
  151.         % in3 = title
  152.         % in4 = fontsize   (optional)
  153.         % in5 = hy_title/2 (optional)
  154.         % in6 = bdx        (optional)
  155.         % in7 = bdy        (optional)
  156.         % in8 = visible    (optional)
  157.         %----------------------------
  158.         f = get(in2,'Parent');
  159.         l = findobj(f,'type','line','userdata',in2,'tag',tag_boxtitle);
  160.         t = findobj(f,'type','text','userdata',in2,'tag',tag_boxtitle);
  161.         vis = get(t,'Visible');
  162.         if nargin<4 , in4 = get(t,'FontSize'); end
  163.         set(t,'String',in3,'FontSize',in4);
  164.         if nargin<5
  165.             in5 = 9;      in6 = 2*in5;  in7 = 2*in5;  in8 = vis;
  166.         elseif nargin<6
  167.             in6 = 2*in5;  in7 = 2*in5;  in8 = vis;
  168.         elseif nargin<7
  169.             in7 = 2*in5;  in8 = vis;
  170.         elseif nargin<8
  171.             in8 = vis;
  172.         end
  173.         [xdata,ydata,pos_txt] = wboxtitl('compute_pos',in2,l,t,in5,in6,in7);
  174.         set(l,'Xdata',xdata,'Ydata',ydata,'Visible',in8);
  175.         set(t,'Position',pos_txt,'Visible',in8);
  176. end