gusucode.com > 信号处理工具箱 - signal源码程序 > signal\signal\siggui\@fdline\fdline.m
function obj = fdline(varargin) %FDLINE Constructor for filtdes line object % Syntax: % obj = fdline('prop1',val1,'prop2',val2,...) creates a new object % obj = fdline(objstruct) where objstruct is a structure array with a single % field named 'h' and the handle is to a valid object, simply calls % class(objstruct,'fdline'). % Author: T. Krauss % Copyright (c) 1988-98 by The MathWorks, Inc. % $Revision: 1.1 $ if nargin>0 & isstruct(varargin{1}) & isequal(fieldnames(varargin{1}),{'h'}) obj = class(varargin{1},'fdline'); return end fig = findobj('type','figure','tag','filtdes'); ud = get(fig,'userdata'); % define default properties objud.xdata = [0 1]; objud.ydata = [0 1]; objud.delayrender = 'off'; objud.xneedrender = 0; objud.yneedrender = 0; objud.vertexdragmode = {'none'}; objud.vertexdragcallback = {''}; objud.vertexenddragcallback = {''}; objud.segmentdragmode = {'none'}; objud.segmentdragcallback = {''}; objud.segmentenddragcallback = {''}; objud.buttondownfcn = ''; objud.buttonupfcn = ''; objud.affectlimits = 'on'; objud.help = {''}; objud.vertexpointer = {''}; objud.segmentpointer = {''}; objud.userdata = []; % HP - handle properties structure hp.parent = []; for i=1:2:length(varargin) varargin{i} = lower(varargin{i}); switch varargin{i} case {'delayrender' 'affectlimits'} objud = setfield(objud,varargin{i:i+1}); case 'vertexdragmode' objud = setfield(objud,varargin{i:i+1}); case 'vertexdragcallback' objud = setfield(objud,varargin{i:i+1}); case 'vertexenddragcallback' objud = setfield(objud,varargin{i:i+1}); case 'segmentdragmode' objud = setfield(objud,varargin{i:i+1}); case 'segmentdragcallback' objud = setfield(objud,varargin{i:i+1}); case 'segmentenddragcallback' objud = setfield(objud,varargin{i:i+1}); case {'buttondownfcn','buttonupfcn'} objud = setfield(objud,varargin{i:i+1}); case 'help' objud = setfield(objud,varargin{i:i+1}); case 'vertexpointer' objud = setfield(objud,varargin{i:i+1}); case 'segmentpointer' objud = setfield(objud,varargin{i:i+1}); case 'userdata' objud = setfield(objud,varargin{i:i+1}); otherwise % send to hg object hp = setfield(hp,varargin{i:i+1}); end end hp.buttondownfcn = 'filtdes(''lineclick'',gcbo)'; if ~isfield(objud,'parent') % place in last axes object if length(ud.Objects.fdax)<1 error('must create fdax axes object before fdline') else hp.parent = ud.Objects.fdax(end).h; end end obj.h = line(hp); set(obj.h,'userdata',objud) obj = class(obj,'fdline'); % % Add this object to figure's object list % if ~isfield(ud.Objects,'fdline') | isempty(ud.Objects.fdline) ud.Objects.fdline = obj; else ud.Objects.fdline(end+1) = obj; end set(fig,'userdata',ud)