www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregGui/@labelcontrol/generateOffset.m
function generateOffset(h) %GENERATEOFFSET Make auto settings for baseline offset % % GENERATEOFFSET(OBJ) sets the label positioning based on the type of the % current control. % Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc. if h.hascontrol && strcmp(h.BaselineOffsetMode,'auto') set(h.BaselineList,'enabled','off'); ctrl = h.Control; if isgraphics(ctrl,'uicontrol') style=get(ctrl,'Style'); switch style case 'text' h.BaselineOffset=-10; h.BaselineOffsetZero='top'; case 'edit' h.BaselineOffset=-3; h.BaselineOffsetZero='middle'; case 'listbox' h.BaselineOffset=-12; h.BaselineOffsetZero='top'; case {'pushbutton','togglebutton'} h.BaselineOffset=-3; h.BaselineOffsetZero='middle'; case 'popupmenu' h.BaselineOffset=-15; h.BaselineOffsetZero='top'; case {'radiobutton','checkbox'} h.BaselineOffset=-4; h.BaselineOffsetZero='middle'; otherwise h.BaselineOffset=-4; h.BaselineOffsetZero='middle'; end elseif isa(ctrl, 'mbcgui.widget.Label') % Same as a text uicontrol h.BaselineOffset=-10; h.BaselineOffsetZero='top'; elseif isa(ctrl, 'mbcgui.widget.IconText') switch ctrl.Style case 'line' h.BaselineOffset=-5; h.BaselineOffsetZero='middle'; case 'paragraph' h.BaselineOffset=-12; h.BaselineOffsetZero='top'; case 'item' % The text is below an icon. There isn't a clear best way to % label this so just centre the text. h.BaselineOffset=-4; h.BaselineOffsetZero='middle'; end elseif isa(ctrl, 'mbcgui.widget.Spinner') h.BaselineOffset=-3; h.BaselineOffsetZero='middle'; elseif isa(ctrl, 'xregGui.labelcontrol') % Take values from labelcontrol we are labelling. h.BaselineOffset=ctrl.BaselineOffset; h.BaselineOffsetZero=ctrl.BaselineOffsetZero; else h.BaselineOffset=-5; h.BaselineOffsetZero='middle'; end set(h.BaselineList,'enabled','on'); end