www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/xregtextlist.m

    function [totalH, totalW]=xregtextlist(axH,pos,strings,indents,bolds,spacing,indent_size)
%XREGTEXTLIST  Create a series of text items in an axes
%
%  totalH=XREGTEXTLIST(axH, [XPOS YPOS ZPOS], STR, INDENT, BOLD, SPACING, INDENTSZ)
%

%  Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc.


if nargin<7
   indent_size=15;  % (points)
end
if nargin<6
   spacing=0;  % (points)
end
if nargin<5
   bolds=[];
end
if nargin<4
   indents=[];
end

% ensure all 3 lists are the same length
Nstr=length(strings);
if length(bolds)<Nstr
   bolds(end+1:Nstr)=0;   
end
if length(indents)<Nstr
   indents(end+1:Nstr)=0;   
end

% Get default fontsize in points
DaxH=mbcgui.hgclassesutil.toNative(axH);
deftextunits=get(DaxH,'DefaultTextFontUnits');
set(DaxH,'DefaultTextFontUnits','points');
txsize=get(DaxH,'DefaultTextFontSize');
set(DaxH,'DefaultTextFontUnits',deftextunits);

% Create items
count=0;
for n=Nstr:-1:1
   if bolds(n)
      fw='bold';
   else
      fw='normal';
   end
   tH(n)=text('Parent',axH,...
      'Units','points',...
      'Position',pos+[indents(n)*indent_size count*(txsize+spacing) 0],...
      'VerticalAlignment','baseline',...
      'HorizontalAlignment','left',...
      'String',strings{n},...
      'FontWeight',fw);
   count=count+1;
end

if nargout
   pos=get(tH(1),'Position');
   pixperpoint=pos(2);
   set(tH(1),'Units','pixels');
   pos=get(tH(1),'Position');   
   pixperpoint=pos(2)/pixperpoint;
   set(tH(1),'Units','points');
   totalH = (Nstr*(txsize+spacing)-spacing)*pixperpoint;
   if nargout>1
      % calculate the horizontal extent
      ext=get(tH,{'Extent'});
      ext=cat(1,ext{:});
      ext=(ext(:,3)+indents(:)*indent_size)*pixperpoint;
      totalW=max(ext);      
   end
end