Home > src > plt.m

plt

PURPOSE ^

- plt package by Paul Mennen

SYNOPSIS ^

function [Volv1,Volv2] = plt(varargin);

DESCRIPTION ^

 - plt package by Paul Mennen

 plt.m:   An alternative to plot and plotyy (version 11May10) by Paul Mennen
 Author:  Paul Mennen (paul@mennen.org)
          Copyright (c) 2010, Paul Mennen

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 % - plt package by Paul Mennen
0002 %
0003 % plt.m:   An alternative to plot and plotyy (version 11May10) by Paul Mennen
0004 % Author:  Paul Mennen (paul@mennen.org)
0005 %          Copyright (c) 2010, Paul Mennen
0006 
0007 % This code is covered by the BSD license (note by BCA).
0008 
0009 
0010 function [Volv1,Volv2] = plt(varargin);
0011 
0012 global copia;
0013 
0014 Volv1 = 0;
0015 
0016 if ~nargin
0017   eval('evalin(''base'',''pltdef'','''')');
0018   w = plt('select','base','who');
0019   lix = length(w);  b = zeros(1,lix);
0020   opcion = [];
0021   wstruct = {}; ws=0;
0022   rnsion = 6;
0023   for k=1:lix
0024     a = plt('select','base',w{k});
0025     if length(w{k})>6 & findstr(w{k},'pltopt') opcion = [opcion a]; end;
0026     if strcmp(w{k},'TraceIDlen') rnsion = a;  end;
0027     if isnumeric(a) & length(a)>3 b(k)=1;
0028     elseif isstruct(a) & numel(a)==1
0029       f = fieldnames(a);
0030       for fn=1:length(f)
0031         g = getfield(a,f{fn});
0032         if isnumeric(g) & length(g)>3 ws=ws+1; wstruct{ws} = [w{k} '.' f{fn}]; end;
0033       end;
0034     end;
0035   end;
0036   w = [w(logical(b)); wstruct'];  nov = length(w);
0037   if nov<2 disp('Not enough vectors to plot'); return; end;
0038   spix = get(0,'screenpix');
0039   Sfuente = (196-spix)/10;
0040   spix = spix/80 - .2;
0041   espaciV = round(20 * spix);
0042   espaciH = round(200 * spix);
0043   set(0,'units','pix');  ssz = get(0,'screensize');
0044   fct = fix((ssz(4)-110)/espaciV);
0045   nov1 = nov+3;  fct = ceil(nov1/fct);
0046   nr = ceil(nov1/fct);
0047   wid = fct*espaciH+20; hei = nr*espaciV+40;
0048   fig = figure('menu','none','number','off','name','PLT select','color','black',...
0049                'Invert','on','pos',[ssz(3)-wid-5 ssz(4)-hei-65 wid hei]);
0050   axes('xli',[0 fct],'yli',[0 nr]-.5,'pos',[.02/fct 0 1 1],...
0051        'color','black','xcol','black','ycol','black');
0052   hb = hei-25;
0053   set([uicontrol('str','Plot',    'pos',[  5 hb 40 21],'call','plt select plot;');
0054        uicontrol('str','CloseAll','pos',[ 60 hb 60 21],'call','plt close;');
0055        uicontrol('str','Help',    'pos',[135 hb 40 21],'call','plt(''helpv'',0);');
0056       ],'units','nor','fontsi',Sfuente);
0057   absc=nr-3; x=0;
0058   set([text(0,absc+1.1,'Right click on desired x vectors');
0059        text(0,absc+.45, 'Left click on desired y vectors');
0060        text(0,absc-.2, 'Double click for right hand axis');
0061       ],'fonta','ita','fontsi',9,'color',[.5 .5 1]);
0062   txt = zeros(nov,1); sz1=txt; sz2=txt; len=txt; nvec=txt; sxy=txt; yderecho=txt;
0063   for k=1:nov
0064     absc = absc-1;  if absc<0 absc=nr-1; x=x+1;  end;
0065     sz = size(plt('select','base',w{k}));
0066     sz1(k)  = sz(1);
0067     sz2(k)  = sz(2);
0068     len(k)  = max(sz);
0069     nvec(k) = min(sz);
0070     txt(k) = text(x,absc,' ');
0071     set(txt(k),'ButtonD',['plt(''select'',' int2str(k) ');']);
0072   end;
0073   set(fig,'use',[txt sz1 sz2 len nvec sxy yderecho]);
0074   setappdata(fig,'w',w);
0075   setappdata(fig,'opt',opcion);
0076   setappdata(fig,'IDlen',rnsion);
0077   plt('select','text');
0078   return;
0079 end;
0080 
0081 y1 = varargin{1};
0082 if ~ischar(y1) y1='none'; end;
0083 if y1(1)=='g' y1(1)='G';  end;
0084 switch sum(y1)
0085 case 640
0086   v2 = varargin{2};
0087   if isnumeric(v2) | v2(1) ~= 'b'
0088       w = getappdata(gcf,'w');  e = get(gcf,'use');
0089       len = e(:,4); sxy = e(:,6); nov = length(len);
0090       xk = []; for k=1:nov if sxy(k)<0 xk = [xk k]; end; end;
0091   end;
0092   switch sum(v2)
0093     case 411, Volv1 = eval(['evalin(''base'',''' varargin{3} ''');']);
0094     case 453,
0095       lnxk = length(xk);
0096       for k=1:nov
0097         s = w{k};  if length(s)>20 s=s(1:20); end;
0098         s = strrep(s,'_','\_');
0099         s = [s '  (' int2str(e(k,2)) ',' int2str(e(k,3)) ')'];
0100         if sxy(k) s = [s ' \leftarrow ']; s2 = int2str(abs(sxy(k)));  end;
0101         c = [1 1 1];
0102         if lnxk
0103           if lnxk==1 s2 = ''; end;
0104           if ~sxy(k)
0105             if ~length(find(len(xk)==len(k))) c = .5*c; end;
0106           elseif sxy(k)<0                 c = [.9 .3 .3]; s = [s 'x' s2];
0107           else
0108             if e(k,7)               c = [ 1 .6 .2]; s = [s 'y' s2 'R'];
0109                       else                c = [ 1  1  0]; s = [s 'y' s2];
0110                       end;
0111           end;
0112         else if e(k,5) ~= 1 c = .5*c; end;
0113         end;
0114         if c(3)==.5 | c(3)==1 bold = 'norm'; else bold = 'bold';  end;
0115         set(e(k,1),'color',c,'fontw',bold,'str',s);
0116       end;
0117     case 447
0118       if ~max(sxy) return; end;
0119       opcion       = getappdata(gcf,'opt');
0120       rnsion = getappdata(gcf,'IDlen');
0121       opt = [];
0122       for k=1:length(opcion)
0123         t = opcion{k};
0124         if   isnumeric(t) v = num2str(t);
0125              if length(t)>1 v = ['[' v ']']; end;
0126         else v = ['''''' t ''''''];
0127         end;
0128         opt = [opt v ','];
0129       end;
0130       if length(xk)==1 x = w{find(sxy<0)}; else x = 'X axis'; end;
0131       derecho = [];
0132       ny = 0;
0133       nvL = 0; nvR = 0;
0134       func = ['plt(''''LabelX'''',''''' x ''''','];
0135       id = '''''TraceID'''',[''''';
0136       for k=1:nov
0137         if sxy(k)>0
0138           nvec = e(k,5);
0139           x = w{find(sxy==-sxy(k))};  absc = w{k};
0140           s2 = strrep(absc,'_','\_');
0141           ss = strrep(absc,'_','');
0142           nn = rnsion - (nvec>1);  s = [];
0143           if length(ss) > nn
0144             sp = findstr(ss,'.');
0145             if length(sp)
0146               nn1 = min(sp-1,floor((nn-1)/2));
0147               nn2 = min(nn-nn1-1,length(ss)-sp);
0148               nn1 = nn - nn2 - 1;
0149               ss = ss([1:nn1-1 sp-1:sp+nn2-1 end]);
0150             else
0151               ss = [ss(1:nn-1) ss(end)];
0152             end;
0153           end;
0154           while length(ss) < nn ss = [ss ' ']; end;
0155           st = ss;
0156           for v = 1:nvec
0157             if nvec>1 ss = [st '0'+mod(v,10)]; end;
0158             s = [s ss ''''';'''''];
0159           end;
0160           if e(k,7) derecho = [derecho ny+(1:nvec)];  s2R=s2; nvR=nvR+1;  else  s2L=s2; nvL=nvL+1;  end;
0161           ny = ny + nvec;
0162           func = [func x ',' absc ','];
0163           id = [id s];
0164         end;
0165       end;
0166       if nvL==1 func = [func '''''LabelY'''','''''  s2L ''''',']; end;
0167       if nvR==1 func = [func '''''LabelYr'''',''''' s2R ''''',']; end;
0168       if nvR>0  func = [func '''''Right'''',' plt('vtoa','%d',derecho) ',']; end;
0169       if ny>1 func = [func id(1:end-3) '],']; end;
0170       func = [func opt];
0171       func = [func(1:end-1) ');'];
0172       plt('select','base',func);
0173     otherwise,
0174       clic = get(gcf,'SelectionT'); clic = clic(1);  sk = sxy(v2);
0175       if clic=='a' | ~length(xk)
0176         if sk>=0
0177              if e(v2,5)==1 e(v2,6) = min(sxy)-1; end;
0178         else e(v2,6) = 0;
0179              e(find(sxy==-sk),6)=0;
0180         end;
0181       elseif sk>=0
0182         if clic=='o' & sk sk = 0; end;
0183         xki = sort(-sxy(xk(find(len(xk)==len(v2)))));
0184         if length(xki)
0185           if sk liy = find(xki==sk)+1;
0186                 if liy>length(xki) sk=0; e(v2,7)=0; else sk=xki(liy);  end;
0187           else  sk = xki(1);
0188           end;
0189           e(v2,6) = sk;
0190           if clic=='o' & sk  e(v2,7)=1; end;
0191         end;
0192       end;
0193       set(gcf,'use',e);
0194       plt('select','text');
0195   end;
0196 
0197 case 756
0198     x = varargin{2};
0199     liy=0;  nv=x;
0200     if ~x Volv1=''; Volv2=1; return; end;
0201     while nv>900  liy=liy+1;  nv=.001*nv; end;
0202     while nv<.9   liy=liy-1;  nv=1000*nv; end;
0203     if (liy==1 & x<10000) | (liy==-1 & x>=.1 ) liy=0; nv=x; end;
0204     Volv2 = nv/x;
0205     if     liy>5  Volv1 = plt('ftoa','%4w',1/Volv2);
0206     elseif liy<-6 Volv1 = plt('ftoa','%5w',1/Volv2);
0207     else        qs=reshape('Atto FemtoPico Nano MicroMilli     Kilo Mega Giga Tera Peta ',5,12)';
0208                 Volv1 = deblank(qs(liy+7,:));
0209     end;
0210     if length(Volv1) Volv1 = [Volv1 '-']; end;
0211 
0212 case 426
0213 
0214   Csena = varargin{2};  val = varargin{3};  val = val(:);
0215   if length(val) > 1
0216     if nargin < 4 arado = ' '; else arado = varargin{4}; end;
0217     Volv1 = '';
0218     for k=1:length(val) Volv1 = [Volv1 plt('ftoa',Csena,val(k)) arado]; end;
0219     Volv1 = Volv1(1:end-length(arado));
0220     return;
0221   end;
0222   atir = length(Csena);  vrto = Csena(atir);
0223   while vrto==' ' atir=atir-1; vrto = Csena(atir); end;
0224   if vrto=='w' | vrto=='v'
0225      v = s2i(Csena(2:atir-1));
0226      absc = abs(val);
0227      if isnan(val) Volv1 = 'NaN'; return; end;
0228      if ~val Volv1='0'; if vrto=='v' Volv1=[blanks(v) Volv1]; end; return;
0229      elseif val<0 vv = v-1;
0230      else vv = v;
0231      end;
0232      if     absc < 1.0e-99  pf = [7 1 2 2];   elseif absc < 1.0e-9   pf = [6 2 2 3];
0233      elseif absc < 0.01     pf = [5 1 4 4];   elseif absc < 10.0^vv  pf = [1 1 1 1];
0234      elseif absc < 1.0e10   pf = [4 1 5 5];   elseif absc < 1.0e100  pf = [5 2 3 4];
0235      else                pf = [6 3 1 3];
0236      end;
0237      pf = pf - 1;
0238      fp = v-pf(1);  if val<0 fp=fp-1; end;
0239      if fp<0  Volv1='0'; return; end;
0240      if pf(1) tipo = 'e'; else tipo = 'g'; end;
0241      if ~fp  pf = pf + [0,1,-1,-1]; end;
0242      Volv1 = sprintf(sprintf('%%1.%d%c',fp,tipo),val);
0243      lix = length(Volv1);
0244      if pf(1) pf = [1:v-pf(2) v+pf(3):v+pf(4)];
0245      else     pf = 1:min(v+1,lix);  end;
0246      if max(pf)<=lix Volv1 = Volv1(pf); else Volv1 = '0'; end;
0247      if vrto=='v'
0248        zp = v-length(Volv1);
0249        if isempty(findstr('.',Volv1))
0250           if zp>0  Volv1 = [Volv1 '.']; end;
0251        else zp = zp + 1;
0252        end;
0253        for k=1:zp  Volv1 = [Volv1 '0']; end;
0254 
0255      end;
0256   else
0257      Volv1 = sprintf(Csena,val);
0258   end;
0259 
0260 case 442
0261   tipo = varargin{2};  v = varargin{3};
0262   if nargin < 4 arado = ' '; else arado = varargin{4}; end;
0263   Volv1 = plt('ftoa',tipo,v,arado);
0264   if length(v)>1 Volv1 = ['[' Volv1 ']']; end;
0265 case 759
0266   c = datevec(varargin{2});
0267   if isempty(c) | isnan(c(1)) Volv1 = []; return; end;
0268   if nargin<3 tipo=0; else tipo=varargin{3}; end;
0269   frac = sprintf('%4.3f',mod(c(6),1));
0270   c(6) = floor(c(6));
0271   if strcmp(frac,'1.000')
0272     if c(6)==59 frac = '0.999'; else c(6) = c(6)+1;  end;
0273   end;
0274   Volv1 = [datestr(datenum(c),tipo) frac(2:end)];
0275   if strcmp(Volv1(7:9),'-20') Volv1(8:9) = []; end;
0276 case 543
0277   if varargin{2} f = get(gcbo,'use'); else  f = ''; end;
0278   if isempty(f)
0279      if ispc f = 'plt.chm'; else f = 'plt.htm'; end;
0280   end;
0281   if isempty(findstr(f,filesep)) 
0282     foobar = 0;
0283     if exist('foobar')
0284          f = feval('which',f);
0285     else f = fullfile(fileparts(GetExe),f);
0286     end;
0287   end;
0288   if exist(f)
0289     if strcmpi(f(end-2:end),'chm') dos(['hh ' f ' &']);
0290     elseif exist('foobar')         feval('web',['file:///' f ],'-browser');
0291     else                           ibrowse(f);
0292     end;
0293   end;
0294 
0295 case 335
0296 
0297   k = 2;  a1 = varargin{2};
0298   if ischar(a1)
0299        g = gca;
0300        a = [0 .3 .4];
0301        a = axes('vis','of','XtickL',' ','YtickL',' ','TickLen',[0 0]','color',a,'xcol',a,'ycol',a);
0302        pd = {a   [.1 1 .9]   [0 0]   'none'   []     0         ''      1       1};
0303        Volv1 = text(0,0,'','use',pd,'interp','none','color',[1 1 .4]);
0304        set(Volv1,'ButtonD',['plt(''pop'',' int2str(Volv1*8192) ',''open'',0);']);
0305        axes(g);
0306   else lix = length(a1);  Volv1 = a1;
0307        if lix==1 if Volv1>8192 Volv1=Volv1/8192; end;
0308                k=k+1; pd=get(Volv1,'use'); a=pd{1};
0309        else    paraN = varargin{3};  param = varargin{4};  s = size(param,1);
0310                if s for k=1:lix plt('pop',Volv1(k),paraN,param(min(k,s),:)); end;
0311                else for k=1:lix plt('pop',Volv1(k),paraN,[]); end;
0312                end;
0313                return;
0314        end;
0315   end;
0316   while k <= length(varargin)
0317     paraN  = lower(varargin{k});  param = varargin{k+1}; k=k+2;
0318     switch sum(paraN)
0319     case 857, if max(param)>1 s='pixels'; else s='normal'; end;
0320                     if length(param)<2 fp=get(a,'pos');  param=[fp(1:3) param]; end;
0321                     set(a,'pos',param,'units',s);
0322     case 734,  lix = length(param);  pd{6} = param;
0323                     set(Volv1,'str',param{1},'pos',[.08 .5-lix],'use',pd);
0324                     set(a,'yli',[-lix 0]);
0325     case 434,     if ~pd{8} return; end;
0326                     c = get(gcf,'SelectionT'); c = c(1);
0327                     if c=='n'
0328                       uh = findobj(pd{5},'vis','on');
0329                       setappdata(Volv1,'Uhide',uh);
0330                       set([Volv1; uh],'vis','of');  ch = pd{6};  lix = length(ch);
0331                       of = pd{3};  p=get(a,'pos'); pt = p(4)+p(2)+of(2);
0332                       s = get(a,'Units');
0333                       if s(1)=='n' & pt>1
0334                         of(2)=of(2)-pt+1; pd{3}=of; set(Volv1,'use',pd);
0335                       end;
0336                       set(a,'vis','on','pos',p+[of 0 0]);  axes(a);
0337                       s = ['plt(''pop'',' int2str(8192*Volv1) ',''index'','];
0338                       for liy=1:lix 
0339                           ht = text(.08,.5-liy,ch{liy});
0340                           set(ht,'interp',pd{4},'color',pd{2},'ButtonD',[s int2str(liy) ');']);
0341                           if liy==pd{9} set(ht,'fontw','bol'); end;
0342                       end;
0343                       cr = get(a,'color');  z = zeros(1,lix-1);
0344                       x = [z;z+1;z];  z = [z;z;z+NaN];   absc = 1:lix-1;  absc = -[absc;absc;absc];
0345                       line('z',z(:),'y',absc(:),'x',x(:),'color',cr-.2+.4*(cr<.5));
0346                     else
0347                       lix = length(pd{6});  v = pd{9};
0348                       if v==lix v=1; else v=v+1; end;
0349                       plt('pop',Volv1,'index',v);
0350                     end;
0351     case 410,     pd{5} = param;   set(Volv1,'use',pd);
0352     case 647,   if length(param)<2 param=[0 param]; end;  pd{3}=param; set(Volv1,'use',pd);
0353     case 759,  pd{2} = param;   set(Volv1,'use',pd);
0354     case 748,  set(a,'color',param,'xcol',param,'ycol',param);
0355     case 658,   pd{4} = param;  set(Volv1,'use',pd,'interp',param);
0356     case 536,    pd{9} = abs(param);  set(Volv1,'use',pd);  v = get(a,'vis');
0357                     if v(2)=='n'
0358                       of = pd{3};
0359                       if any(of) set(a,'pos',get(a,'pos')-[of 0 0]); end;
0360                       set(a,'vis','of');  ch = get(a,'child');  ch(find(ch==Volv1)) = [];
0361                       delete(ch);
0362                       uh = getappdata(Volv1,'Uhide');
0363                       set([Volv1; uh],'vis','on');
0364                       ch = gcf;
0365                       matVer = version;  mver = (matVer([1 3])-'0') * [10; 1];
0366                       if mver<75 & matVer(2)=='.'
0367                         set(ch,'Share','off');
0368                         set(ch,'Share','on');
0369                       end;
0370                     end;
0371                     kk = pd{6}{abs(param)};  set(Volv1,'str',kk);
0372                     if param>0 evalRep(pd{7},{'@STR',kk,'@IDX',int2str(param)}); end;
0373     case 617,   pd{7} = param;  set(Volv1,'use',pd);
0374     case 320,      Volv1 = pd{6}; xk = pd{9};
0375                     switch sum(param)
0376                       case 536,   Volv1 = xk;
0377                       case 663,  Volv1 = Volv1{xk};
0378                       case 734,
0379                       otherwise, disp(['Invalid argv=' param ' in plt(''pop'',H,''get'',argv)']);;
0380                     end;
0381     case 615,   pd{8} = param;  set(Volv1,'use',pd);
0382     otherwise,      set(Volv1,paraN,param);
0383     end;
0384   end;
0385 
0386 case 422
0387 
0388   k = 2;  a1 = varargin{2};
0389   if ischar(a1)
0390        pd = {''     1     1   -1e9  1e9    1    1    ''    ''  '%7w'};
0391        Volv1 = text(0,0,'1','horiz','cent','color',[1 1 .4],'use',pd);
0392        set(Volv1,'ButtonD',['plt(''edit'',' int2str(Volv1*8192) ',''click'',0);']);
0393   else lix = length(a1);  Volv1 = a1;
0394        if lix==1 if Volv1>8192 Volv1=Volv1/8192; end;
0395                k=k+1; pd=get(Volv1,'use'); a=pd{1};
0396        else    paraN = varargin{3};  param = varargin{4};  s = size(param,1);
0397                if s for k=1:lix plt('edit',Volv1(k),paraN,param(min(k,s),:)); end;
0398                else for k=1:lix plt('edit',Volv1(k),paraN,[]); end;
0399                end;
0400                return;
0401        end;
0402   end;
0403   while k <= length(varargin)
0404     paraN  = lower(varargin{k});  param = varargin{k+1}; k=k+2;
0405     switch sum(paraN)
0406     case 518,
0407       if param
0408         c = get(gcf,'CurrentChar');
0409         if ~length(c) c=666;  end;
0410         if param==2 c=27; end;
0411         t = get(Volv1,'str');   u = get(Volv1,'color');
0412         p = findstr(t,'_');  lix = length(t);   termi = 0;  valuar = 0;
0413         switch abs(c)
0414         case 666,
0415         case 8,    if p>1 t(p-1)=[]; end;
0416         case 127,  if p==lix t='_';
0417                    else    t(p+1)=[];
0418                    end;
0419         case 127,  if p==lix t='_'; else t(p+1)=[];  end;
0420         case 28,   if p>1 t(p)=t(p-1); t(p-1)='_'; end;
0421         case 29,   if p<lix t(p)=t(p+1); t(p+1)='_'; end;
0422         case 27,   termi = 1;  t = pd{8};
0423         case 13,   termi = 1;
0424                    t(p) = [];
0425                    if pd{7}
0426                      tt=t;  t = 'error';
0427                      try, s = eval(tt);
0428                         if pd{7}==-1 | pd{7}==length(s)
0429                           if length(s)==1
0430                             if isreal(s)
0431                                  s = max(min(s,pd{5}),pd{4});
0432                                  t = ['  ' plt('ftoa',pd{10},s) '  '];
0433                             else pd{6} = imag(s);
0434                                  t = pd{8};
0435                             end;
0436                           else  t = ['[' num2str(s) ']'];
0437                           end;
0438                           if isreal(s)  pd{3} = s;  valuar = 1; end;
0439                         end;
0440                      end;
0441                    else pd{3}=0; valuar=1;
0442                    end;
0443         otherwise, t = strrep(t,'_',[c '_']);
0444         end;
0445         set(Volv1,'str',t);
0446         if termi
0447           set(Volv1,'use',pd,'color',u([3 1 2]),'erase','norm','interp',pd{9});
0448           set(gcf,'keypress','');
0449           if valuar evalRep(pd{1},{'@VAL',t,'@OBJ',int2str(8192*Volv1)}); end;
0450         end;
0451       else
0452         kp = get(gcf,'keypress');  f = findstr(kp,'click');
0453         if length(f)==1  kp(f+7) = '2';  eval(kp); return; end;
0454         if ~pd{2} return; end;
0455         c = get(gcf,'SelectionT'); c = c(1);
0456         if c ~= 'a'
0457           v = pd{3}; w = pd{6};
0458           if pd{7}==1 & abs(round(v/w)*w-v) < 1e-9
0459             cp = get(gca,'curre'); cp = cp(1,1);
0460             imX = get(gca,'xli');  rp = get(Volv1,'pos');
0461             cp = (cp-imX(1))/diff(imX) > rp(1);
0462             cp = w * (2*cp-1);
0463             s = v + cp;
0464             if s>pd{5} s=pd{4}; elseif s<pd{4} s=pd{5}; end;
0465             pd{3} = s;  s = ['  ' plt('ftoa',pd{10},s) '  '];
0466             set(Volv1,'str',s,'use',pd);
0467             evalRep(pd{1},{'@VAL',s,'@OBJ',int2str(8192*Volv1)});
0468             return;
0469           else c='a';
0470           end;
0471         end;
0472         if c=='a'
0473           t = get(Volv1,'str');
0474           if ~strcmp(t,'error') pd{8} = t; end;
0475           t = deblank(t);  while(t(1)==' ') t(1)=[]; end;
0476           viehoc = get(Volv1,'color');
0477           pd{9} = get(Volv1,'interp');
0478           set(Volv1,'interp','none','str',[t '_'],'color',viehoc([2 3 1]),'erase','xor','use',pd);
0479           set(gcf,'keypress',['plt(''edit'',' int2str(Volv1*8192) ',''click'',1);']);
0480         end;
0481       end;
0482     case 320,     Volv1 = pd{3};
0483     case 541,   pd{3}  = param;  set(Volv1,'str',['  ' plt('ftoa',pd{10},param) '  '],'use',pd);
0484     case 617,  pd{1} = param;  set(Volv1,'use',pd);
0485     case 324,     pd{4}    = param;  set(Volv1,'use',pd);
0486     case 326,     pd{5}    = param;  set(Volv1,'use',pd);
0487     case 428,    pd{6}   = param;  set(Volv1,'use',pd);
0488     case 642,  pd{7}    = param;  set(Volv1,'use',pd);
0489     case 615,  pd{2}    = param;  set(Volv1,'use',pd);
0490     case 649,  pd{10}    = param;  set(Volv1,'use',pd);
0491     otherwise,     set(Volv1,paraN,param);
0492     end;
0493   end;
0494 
0495 case 643
0496   Hin = varargin{2};
0497   if length(Hin)>1
0498      if nargin>2  en1 = varargin{3}; else en1 = [50 0 100]; end;
0499      if nargin>3  en2 = varargin{4}; else en2 = '';    end;
0500      if nargin>4  en3 = varargin{5}; else en3 = '';    end;
0501      if nargin>5  en4 = varargin{6}; else en4 = 1;     end;
0502      if nargin>6  en5 = varargin{7}; else en5 = '%6w'; end;
0503      if nargin>7  en6 = varargin{8}; else en6 = [.75 .75 .75; 0 1 1]; end;
0504 
0505      if length(en1)<5 en1 = [en1 -1e99 1e99]; end;
0506      if ischar(en5) & length(en5(:,1))==1 en5 = {'%2w'; en5; '%3w'}; end;
0507      if iscell(en5) en5 = char(en5); end;
0508      if length(en6(:,1))<3 en6 = [en6; 0 0 0; 0 0 0]; end; 
0509 
0510      t = get(findobj('tag','PltSlider'),'Val');
0511      if iscell(t) Volv1 = 1+max([t{:}]);
0512      else Volv1 = 1+length(t);
0513      end;
0514      hs = zeros(1,8);
0515      hs(2)  = uicontrol('sty','text','str',en2,'tag','PltSlider','Val',Volv1,'horiz','cent');
0516      if isempty(en2) set(hs(2),'vis','off'); end;
0517      hs(4) = uicontrol('sty','text','str','a','use',en5,'horiz','left');
0518      hs(5) = uicontrol('sty','text','str','a','use',en3,'horiz','right');
0519      hs(3)  = uicontrol('sty','slid','use',en1(1),'call',sprintf('plt(''slider'',%d,''CBslide'');',Volv1));
0520      hs(6)  = uicontrol('sty','edit','backg',en6(2,:),'foreg',en6(4,:),'use',en1(4:5),'horiz','cent',...
0521                       'call',sprintf('plt(''slider'',%d,''CBedit'');',Volv1));
0522      set(hs(2:5),'backg',en6(1,:),'foreg',en6(3,:));
0523      en4 = [en4 10];  hs([7 8]) = en4(1:2);
0524      set(hs(2),'use',hs);
0525      plt('slider',Volv1,'set','minmax',en1(2:5),en1(1));
0526      plt('slider',Volv1,'set','position',Hin);
0527      return;
0528   end;
0529 
0530   hs = findobj('tag','PltSlider','Val',Hin);
0531   if length(hs) ~= 1 disp('Bad PltSlider handle'); return; end;
0532   hs   = get(hs,'use');
0533   fmat = get(hs(4),'use');
0534 
0535   accion = varargin{3};
0536   if nargin>3  en0 = varargin{4};  else en0 = ''; end;
0537   if nargin>4  en1 = varargin{5};  else en1 = []; end;
0538   if nargin>5  en2 = varargin{6};  else en2 = []; end;
0539 
0540   switch sum(accion)
0541   case 662
0542      ov = get(hs(3),'use');    nv = get(hs(3),'Val');
0543      smax   = get(hs(3),'max');   smin   = get(hs(3),'min');
0544      dv = nv-ov;  sdv = sign(dv);
0545      switch hs(7)
0546      case 4,
0547         v = hs(8)*round(nv/hs(8));
0548         if v==ov v = v + hs(8)*sdv; end;
0549         nv = v;
0550      case 2,
0551         v = round(nv);
0552         if v==ov v = v + sdv; end;
0553         nv = v;
0554      case 5,
0555         paso = exp(log(smax/smin)*abs(dv)/(smax-smin));
0556         if dv>0 nv=ov*paso; elseif dv<0 nv=ov/paso; end;
0557      case 3,
0558         if nv >= get(hs(3),'use')-eps  nv=2^nextpow2(nv);
0559         else                                  nv=2^nextpow2(nv/2);
0560         end;
0561      case 6,
0562         pdv = abs(dv)/(smax-smin);
0563         if pdv > .11     nv = hs(8)*round(nv/hs(8));
0564         elseif pdv > .02 nv = ov + hs(8)*sdv;
0565         else             nv = ov + sdv;
0566         end;
0567      end;
0568      if nv<smin nv = smin; end;
0569      if nv>smax nv = smax; end;
0570      set(hs(6),'str',plt('ftoa',fmat(2,:),nv));
0571      set(hs(3),'Val',nv,'use',nv);
0572      evalRep(get(hs(5),'use'),{'@VAL',sprintf('%g',nv)});
0573 
0574   case 555
0575      nv = s2d(get(hs(6),'str'));
0576      if isempty(nv)
0577          set(hs(6),'str',plt('ftoa',fmat(2,:),get(hs(3),'Val')));
0578      else
0579         switch hs(7)
0580         case 2,  nv = round(nv);
0581         case 3,  nv = 2 ^ nextpow2(nv/1.414);
0582         case 4, nv=hs(8)*round(nv/hs(8));
0583         end;
0584         minmax = get(hs(6),'use');
0585         nv = min(max(nv,minmax(1)),minmax(2));
0586         Volv1 = nv;
0587         set(hs(6),'str',plt('ftoa',fmat(2,:),nv));
0588         nv = max(min(get(hs(3),'max'),nv),get(hs(3),'min'));
0589         set(hs(3),'Val',nv,'use',nv);
0590         evalRep(get(hs(5),'use'),{'@VAL',sprintf('%g',nv)});
0591      end;
0592 
0593   case 320
0594      switch sum(en0)
0595      case 338, Volv1 = sum(get(hs(2),'vis')) == 221;
0596      case 308, Volv1 = sum(get(hs(2),'ena')) == 221;
0597      case 315, Volv1 = hs(2:6);
0598      otherwise Volv1 = s2d(get(hs(6),'str'));
0599      end;
0600   case 332
0601      if isnumeric(en0) en1 = en0;  en0 = 'value'; end;
0602      switch sum(en0)
0603      case 541
0604         set(hs(6),'str',num2str(en1));
0605         Volv1 = plt('slider',get(hs(2),'Val'),'CBedit');
0606      case 323
0607         set(hs(6),'str',num2str(en1));
0608         sv = get(hs(5),'use');  set(hs(5),'use','');
0609         Volv1 = plt('slider',get(hs(2),'Val'),'CBedit');
0610         set(hs(5),'use',sv);
0611      case 495, set(hs(2:6),'vis','on')
0612                    if isempty(get(hs(2),'str')) set(hs(2),'vis','of'); end;
0613      case 557, set(hs(2:6),'vis','of');
0614      case 527, set(hs([3 6]),'ena','of');
0615      case 465,  set(hs([3 6]),'ena','on');
0616      case 885,
0617         a = .1*get(0,'screenp')-9.6;
0618         p = get(gcf,'pos');
0619         if length(en1<3) en1 = [en1 .13]; end;
0620         if en1(1)<1 en1(1) = en1(1)*p(3); end;
0621         if en1(2)<1 en1(2) = en1(2)*p(4); end;
0622         if en1(3)<1 en1(3) = en1(3)*p(3); end;
0623         lmax = 7 + 7*fix(s2d(fmat(3,2:(length(deblank(fmat(3,:)))-1))));
0624         lmin = 7 + 7*fix(s2d(fmat(1,2:(length(deblank(fmat(1,:)))-1))));
0625         if isnan(lmax) lmax = 28; end;
0626         if isnan(lmin) lmin = 14; end;
0627         ha = a + 17;       ya = en1(2) - a - 17;
0628         set(hs(2:6),'units','pix',{'pos'},...
0629                {[en1(1:3) 16+a/2];
0630                 [en1(1),en1(2)-33,en1(3),17-a-1];
0631                 [en1(1),ya,lmin,ha];
0632                 [en1(3)+en1(1)-lmax,ya,lmax,ha];
0633                 [en1(1)+lmin,ya-1,en1(3)-(lmin+lmax),ha+2]},...
0634             'units','nor');
0635      case 421
0636         hs(7) = en1(1);
0637         if length(en1)>1 hs(8) = en1(2); end;
0638         set(hs(2),'use',hs);
0639         Volv1 = plt('slider',get(hs(2),'Val'),'CBedit');
0640      case 650
0641         if length(en1)<4 en1 = [en1 -1e99 1e99]; end;
0642         set(hs(5),'str',[plt('ftoa',fmat(3,:),en1(2)) ' ']);
0643         set(hs(4),'str',[' ' plt('ftoa',fmat(1,:),en1(1))]);
0644         set(hs(6),'use',en1(3:4));
0645         v = s2d(get(hs(6),'str'));
0646         if ~isempty(en2) v = en2; end;
0647         v = min(max(v,en1(3)),en1(4));
0648         set(hs(6),'str',plt('ftoa',fmat(2,:),v));
0649         set(hs(3),'min',en1(1),'max',en1(2),'Val',min(max(en1(1),v),en1(2)));
0650         Volv1 = s2d(get(hs(6),'str'));
0651      case 512,  set(hs(2),'str',en1);
0652                    if isempty(en1) set(hs(2),'vis','of'); end;
0653      end;
0654   otherwise disp(sprintf('Invalid Action in plt(''slider''), Action=%s',accion));
0655   end;
0656 
0657 case 390
0658   v2 = varargin{2};
0659   if nargin==2 accion='update'; else  accion = varargin{3};  end;
0660   if sum(accion) == 436
0661     if nargin<4 grdclr = [.3,.3,.3]; else grdclr = varargin{4}; end;
0662     if nargin<5 erMode = 'xor'; else erMode = varargin{5}; end;
0663     axes(v2);  f = findobj(v2,'type','line');
0664     if length(f) f=get(f(1),'ButtonD'); end;
0665     rejaH = line('color',grdclr,'Tag','SkipCur','ButtonD',f,'LineStyle',':','use','grid','erase',erMode);
0666     accion = 'on';
0667     if nargin >= 6 set(rejaH,varargin{6},varargin{7}); end;
0668     if nargin >= 8 set(rejaH,varargin{8},varargin{9}); end;
0669     set(v2,'child',flipud(get(v2,'child')));
0670   else  rejaH = findobj(v2,'use','grid');  z = get(rejaH,'z');
0671         Volv1 = length(z);
0672         if Volv1 Volv1 = z(1) | Volv1>=2; end;
0673   end;
0674 
0675   switch sum(accion)
0676   case 643, if Volv1 accion='on'; end;
0677                 fixMark;
0678   case 642, if Volv1 accion='off'; else accion='on'; end;
0679   end;
0680 
0681   x=0; absc=0;
0682   switch sum(accion)
0683   case 221,  z=1; Volv1=1;
0684              l = [get(v2,'xli') get(v2,'yli')];
0685              ckY = [l(3) get(v2,'YTICK') l(4)];  liy = length(ckY);
0686              ckX = [l(1) get(v2,'XTICK') l(2)];  lix = length(ckX);
0687              if ckY(2) <= ckY(1)   ckY = ckY(2:liy);   liy=liy-1; end;
0688              if ckY(liy) <= ckY(liy-1) liy=liy-1;  ckY = ckY(1:liy);  end;
0689              if ckX(2) <= ckX(1)   ckX = ckX(2:lix);   lix=lix-1; end;
0690              if ckX(lix) <= ckX(lix-1) lix=lix-1;  ckX = ckX(1:lix);  end;
0691              t = liy + lix - 4;
0692              if t s = ones(3,1);  absc = [1 liy liy];  x = [1 lix lix];  lix=lix-1;  liy=liy-1;
0693                   z = [0;0;NaN] * ones(1,t);           z=z(:);
0694                   absc = [s*ckY(2:liy)  ckY(absc)'*ones(1,lix-1)]; absc=absc(:);
0695                   x = [ckX(x)'*ones(1,liy-1) s*ckX(2:lix)];  x=x(:);
0696              end;
0697   case 315, z=0; Volv1=0;
0698   end;
0699   set(rejaH,'z',z,'y',absc,'x',x);
0700 
0701 case 436
0702   accion = varargin{2};
0703   if nargin > 2  en0 = varargin{3};
0704                  if nargin > 3  en1 = varargin{4}; end;
0705   end;
0706   switch sum(accion)
0707   case 436
0708      copia(12)= en0;
0709      set(0,'units','pix');  sz = get(0,'screens');
0710      szw = sz(3) - 350 - 4;
0711      ppos  = get(gcf,'pos');
0712      if ppos(4)<1 sp = sz(3:4); ppos = ppos .* [sp sp]; end;
0713      xp = min(ppos(1)+ppos(3)+6,szw);
0714      yp = ppos(2)+ppos(4)-105-30*length(findobj('type','fig','use',gcf));
0715      if nargin ==4  renderer = en1; else renderer = '-painters';  end;
0716      copia(1)=figure('menu','none','number','off','Back','off','resize','off','pos',[xp yp 350 105],'color',[0,.4,.4],'name','Hardcopy','use',gcf);
0717      foobar = 0;
0718      if exist('foobar')
0719           cpath = feval('which','plt.m');
0720      else cpath = GetExe;
0721      end;
0722      filen = [fileparts(cpath) filesep 'pltHcpy.mat'];
0723      f = fopen(filen);
0724      if f>=0 fclose(f); load(filen);
0725      else
0726        z = [0 0];  t = z+1;  w = [0 1];
0727        pS1=[z;z;[2 1];w;t;w;t;z;t;w;z];
0728        pS2 = 'nofile.000';
0729      end;
0730      copia(3)   = uicontrol('sty','pop','str',['Win Meta|Bit Map|HPGL|LaserJet IIp|Post Script|Encaps PS|Windows'],...
0731                              'call','plt(''hcpy'',''ModePUcb'');');
0732      copia(5)  = uicontrol('sty','radio','str','color','call','plt(''hcpy'',''rbg1'',''C'');');
0733      copia(4)     = uicontrol('sty','radio','str','B&W','call','plt(''hcpy'',''rbg1'',''BW'');');
0734      copia(6) = uicontrol('sty','radio','str','Clip Board','call','plt(''hcpy'',''rbg2'',''cb'');');
0735      copia(8)    = uicontrol('sty','radio','str','Device','call','plt(''hcpy'',''rbg2'',''dev'');');
0736      copia(7)   = uicontrol('sty','radio','str','File','call','plt(''hcpy'',''rbg2'',''file'');');
0737      copia(11) = uicontrol('sty','text','str',pS2,'horiz','left');
0738      copia(10)  = uicontrol('sty','text','str', 'Path/File:','horiz','left');
0739      copia(9)  = uicontrol('str','Print','call','plt(''hcpy'',''print'');','use',renderer);
0740      copia(2)   = uicontrol('str','Select File','call',['plt(''hcpy'',''OpenPBcb'');']);
0741      cncl            = uicontrol('str','Cancel','call','close(gcf)');
0742      h1 = copia([3 5 4 6 8 7]);
0743      h2 = copia([11 10]);
0744      h3 = [copia([9 2]) cncl];
0745      set(h1,{'Val'},{pS1(3,1); pS1(5,1); pS1(4,1); pS1(6,1); pS1(8,1); pS1(7,1)});
0746      set([h1 h2],'backg',[.8,.8,.9],'foreg','black');
0747      set([h1 h2 h3],{'pos'},{[115 80 100 15]; [ 10 85 65 15]; [10 70  65 15]; [245 85 95 15];
0748                            [245 55  95 15]; [245 70 95 15]; [10 35 330 15]; [ 10 50 65 15];
0749                            [110  5  55 20]; [ 10  5 85 20]; [180 5  55 20]});
0750 
0751      for kk=1+1:12-1
0752        if pS1(kk,2)==1  set(copia(kk),'ena','on'); else set(copia(kk),'ena','of'); end;
0753      end;
0754 
0755      if get(copia(8),'Val') set(copia(2),'str','Select Dev');
0756      else                       set(copia(2),'str','Select File');
0757      end;
0758      set(copia(1),'vis','on');
0759   case 364
0760      switch sum(en0)
0761      case 67,  set(copia(5),'Val',1); set(copia(4),'Val',0);
0762      case 153, set(copia(4),'Val',1);    set(copia(5),'Val',0);
0763      end;
0764   case 365
0765      switch sum(en0)
0766      case 319,  set(copia(6),'Val',0);  set(copia(7),'Val',0);
0767                  set(copia(9),'ena','on'); set(copia(11),'ena','of');
0768                  set(copia(8),'Val',1);      set(copia(2),'str','Select Dev','ena','on');
0769      case 197,   set(copia(6),'Val',1);   set(copia(7),'Val',0);
0770                  set(copia(9),'ena','on'); set(copia(11),'ena','of');
0771                  set(copia(8),'Val',0);     set(copia(2),'ena','of');
0772      case 416, set(copia(6),'Val',0);  set(copia(7),'Val',1);
0773                  set(copia(8),'Val',0);     set(copia(2),'str','Select File','ena','on');
0774                  cher = get(copia(11),'str');
0775                  if length(cher)<5 cher='none'; set(copia(11),'str',cher); end;
0776                  if strcmp(cher(1:4),'none') set(copia(9),'ena','of'); end;
0777                  set(copia(11),'ena','on');
0778      end;
0779   case 751
0780      en = [1 1 0 1 1; 1 1 0 1 0; 1 1 0 1 1; 1 1 0 0 1; 0 1 0 1 1; 0 1 0 1 1; 0 0 1 1 1];
0781      va = [0 1 0 1 0; 0 1 0 1 0; 0 1 0 0 1; 0 1 0 0 1; 0 1 0 1 0; 0 1 0 1 0; 0 0 1 1 0];
0782      s = get(copia(3),'Val');
0783      ipo=reshape('WMFBMPHGLJETPS EPSxxxxxx',3,8)';
0784      if s==7  set(copia(2),'str','Select Dev', 'ena','on'); set(copia(11),'ena','of');
0785      else     set(copia(2),'str','Select File','ena','on'); set(copia(11),'ena','on');
0786               cher = get(copia(11),'str');
0787               if length(cher)<5 cher='none'; set(copia(11),'str',cher); end;
0788               nfn=length(cher);
0789               if cher(nfn-3) == '.'
0790                    set(copia(11),'str',[cher(1:nfn-3) ipo(s,:)]);
0791               else set(copia(11),'str',[cher ipo(s,:)]);
0792               end;
0793      end;
0794      ena = {'off' 'on'};
0795      set(copia(6),'ena',ena{1+en(s,1)},'Val',va(s,1));
0796      set(copia(7),  'ena',ena{1+en(s,2)},'Val',va(s,2));
0797      set(copia(8),   'ena',ena{1+en(s,3)},'Val',va(s,3));
0798      set(copia(5), 'ena',ena{1+en(s,4)},'Val',va(s,4));
0799      set(copia(4),    'ena',ena{1+en(s,5)},'Val',va(s,5));
0800   case 745
0801      if strcmp('Select File',get(copia(2),'str'))
0802         ipo=reshape('WMFBMPHGLJETPS EPSxxxxxx',3,8)';
0803         [cher,pathN]= uiputfile(['*.',ipo(get(copia(3),'Val'),:)],'Open (new) File');
0804         if cher
0805            fi = cher;
0806            if isempty(findstr(',',fi)) fi = [fi '.' ipo(get(copia(3),'Val'),:)]; end;
0807            set(copia(11),'str',[pathN fi]);  set(copia(9),'ena','on');
0808         end;
0809      elseif strcmp('Select Dev',get(copia(2),'str')) print -dsetup
0810      else   disp('Invalid OpenPBcb string');
0811      end;
0812   case 557
0813      trvS= get(copia(12),'invert');
0814      set(copia(12),'invert','off');
0815      figure(copia(12)); drawnow;
0816      PrintMode = get(copia(3),'Val');
0817      colorFlg  = get(copia(5),'Val');
0818      nirS = sprintf('print -f%d',copia(12));
0819      renderer = get(copia(9),'use');
0820      opcion={[' ' renderer ' -dmeta '];' -dbitmap ';' -dhpgl ';' -dljet2p '};
0821      if colorFlg opcion = [opcion; {' -dpsc ';' -depsc ';' -dwinc '}];
0822      else        opcion = [opcion; {' -dps ' ;' -deps  ';' -dwin  '}];
0823      end;
0824      nirS=[nirS opcion{PrintMode,:} ' '];
0825      if get(copia(7),'Val')==1
0826         PathFilen = get(copia(11),'str');  nirS=[nirS '''' PathFilen ''''];
0827      end;
0828      nirS = [nirS ' -noui'];  axh = [];  axh = findobj(copia(12),'type','axes');  nvx = length(axh);
0829      if ~colorFlg
0830         figC=get(copia(12),'color');
0831         nino = [];   axCol = zeros(nvx,3);  imar = zeros(nvx,1);
0832         for kk=1:nvx
0833            x = get(axh(kk),'color');
0834            if strcmp('none',x) imar(kk) = 1; else axCol(kk,:)  = x; end;
0835            nino = [nino; get(axh(kk),'child')];
0836            xCol(kk,:) = get(axh(kk),'xcol');  yCol(kk,:) = get(axh(kk),'ycol');
0837            tCol(kk,:) = get(get(axh(kk),'title'),'color');
0838            if xCol(kk,:) == figC  imar(kk) = imar(kk) + 2; end;
0839         end;
0840         nnino = length(nino);
0841         for kk=1:nnino
0842            if sum(get(nino(kk),'type'))==528   kidCol(kk,:) = get(nino(kk),'facecolor');
0843                                                     set(nino(kk),'facecolor',[.25 .25 .25]);
0844            else kidCol(kk,:) = get(nino(kk),'color'); set(nino(kk),'color','black');
0845            end;
0846         end;
0847         set(copia(12),'color','white');
0848         for kk= 1:nvx
0849            if imar(kk)==1 | imar(kk)==3
0850            else set(axh(kk),'color','white');
0851            end;
0852            if imar(kk)>=2 set(axh(kk),'xcol','white','ycol','white' );
0853            else            set(axh(kk),'xcol','black','ycol','black' );
0854            end;
0855         end;
0856         for kk=1:nvx
0857            if get(get(axh(kk),'title'),'color')==figC set(get(axh(kk),'title'),'color','white');
0858            else                                    set(get(axh(kk),'title'),'color','black');
0859            end;
0860            if imar(kk) >=2
0861                 set(get(axh(kk),'xlabel'),'color','white'); set(get(axh(kk),'ylabel'),'color','white');
0862            else set(get(axh(kk),'xlabel'),'color','black'); set(get(axh(kk),'ylabel'),'color','black');
0863            end;
0864         end;
0865      end;
0866      set(copia(1),'pointer','watch'); drawnow; pause(1);
0867      if PrintMode == 2
0868         set(copia(1),'vis','of');
0869         refresh
0870         eval(nirS);
0871         set(copia(1),'vis','on');
0872      else  drawnow discard;  eval(nirS);
0873      end;
0874      if ~colorFlg & (PrintMode ~=4 | PrintMode ~=7)
0875         set(copia(12),'color',figC);
0876         for kk=1:nvx
0877            if ~rem(imar(kk),2) set(axh(kk),'color',axCol(kk,:)); end;
0878            set(axh(kk),'xcol',xCol(kk,:)); set(axh(kk),'ycol',yCol(kk,:));
0879            set(get(axh(kk),'title'),'color',tCol(kk,:));
0880         end;
0881         for kk=1:nnino
0882            if sum(get(nino(kk),'type'))==528 set(nino(kk),'facecolor',kidCol(kk,:));
0883            else                                   set(nino(kk),'color',kidCol(kk,:));
0884            end;
0885         end;
0886         if PrintMode==2 drawnow; else drawnow discard; end;
0887      end;
0888      pS1=zeros(12-1,2);
0889      for kk=1+1:12-1
0890         pS1(kk,1) = get(copia(kk),'Val');
0891         if sum(get(copia(kk),'ena'))==221 pS1(kk,2)=1; end;
0892      end;
0893      pS2=get(copia(11),'str');
0894      foobar = 0;
0895      if exist('foobar')
0896           cpath = feval('which','plt.m');
0897      else cpath = GetExe;
0898      end;
0899      save([fileparts(cpath) filesep 'pltHcpy.mat'],'pS1','pS2');
0900      close(copia(1));
0901      set(copia(12),'invert',trvS);
0902      clear copia
0903   otherwise disp([accion ' invalid Action in plt(hcpy)']);
0904   end;
0905 
0906 case 670
0907 
0908     if nargin<3 disp('Not enough arguments plt(''cursor'',...)'); return;  end;
0909     cador = varargin{2};
0910     accion = varargin{3};
0911     if nargin > 3
0912       en0 = varargin{4};
0913       if nargin > 4
0914         en1 = varargin{5};
0915         if nargin > 5
0916           en2 = varargin{6};  if iscell(en2) en2 = char(en2); end;
0917           if nargin > 6
0918             en3 = varargin{7};
0919             if nargin > 7
0920               en4 = varargin{8};
0921               if nargin > 8
0922                 en5 = varargin{9};  if iscell(en5) en5 = char(en5); end;
0923                 if nargin > 9
0924                   en6 = varargin{10};
0925                   if nargin > 10
0926                     en7 = varargin{11};
0927                     if nargin > 11 en8 = varargin{12}; end;
0928                   end;
0929                 end;
0930               end;
0931             end;
0932           end;
0933         end;
0934       end;
0935     end;
0936 
0937     CurPri = getappdata(0,'CurMain');
0938     sact = sum(accion);
0939     if sact ~= 436
0940       if isempty(cador) return; end;
0941       Hc = get(CurPri(cador),'use');
0942       v2 = Hc(13);  ax2 = Hc(14);
0943       aconex = 0;
0944       if ax2
0945            if sum(get(ax2,'vis')) == 315  ax2=0;
0946            else aconex = [get(get(ax2,'ylabel'),'str') '  '];
0947                 aconex = aconex(1)~=92 | aconex(2) ~= 'd';
0948            end;
0949       end;
0950       nw1 = Hc(4);  nw2 = Hc(6);
0951       tm = get(nw1,'use');
0952       actv = tm(4);
0953       iact = 14 + actv;
0954       hact = Hc(iact);
0955       LMda = [get(v2,'xli') get(v2,'yli')];
0956       xyli = LMda;
0957       if get(hact,'par')==ax2 xyli(3:4) = get(ax2,'yli'); end;
0958       DuaC = getappdata(v2,'DualCur');
0959     end;
0960     nargin2=nargin;
0961     switch sact
0962     case 436
0963       v2 = cador(1);
0964       DuaC = getappdata(v2,'DualCur');
0965       if isempty(DuaC) DuaC = 0;  setappdata(v2,'DualCur',0); end;
0966       Hc(13) = v2;
0967       if length(cador)==2  ax2 = cador(2); else ax2 = 0; end;
0968       Hc(14) = ax2;
0969       hf = get(v2,'par');
0970       if nargin2>=10 vis=en6; else vis = 'on'; end;
0971       Cn = length(CurPri);
0972       f = find(~CurPri);
0973       if length(f) cador = f(1);
0974       else CurPri = [CurPri 0]; cador = Cn+1;
0975       end;
0976       if cador>200 disp('Warning: Clear actions missing for 200 cursor inits'); end;
0977       Volv1 = cador;
0978       rasHT = sprintf('plt(''cursor'',%d,',cador);
0979       hRastro = getappdata(v2,'Lhandles');
0980       if isempty(hRastro)
0981         hRastro = flipud(findobj(v2,'type','line'));
0982       end;
0983       fct = findobj(hRastro,'Tag','SkipCur');
0984       if length(fct) [c kk] = setdiff(hRastro,fct);
0985                     c = sortrows([c kk],2);
0986                     hRastro = c(:,1);
0987       end;
0988       axes(v2);
0989       if isempty(en1) en1 = [.7 .7 .7; 0 0 0; 1 1 .5; 1 0 0; 0 0 0]; end;
0990       trk = ~sum(en1(2,:));
0991       if length(hRastro)
0992          en1n = length(en1(:,1));
0993          cHilo = length(hRastro);
0994          cli4 = cHilo + 4;
0995          if en1n < cli4
0996            en1 = en1(min(1:cli4,en1n*ones(1,cli4)),:);
0997          end;
0998          en3n = length(en3);
0999          if en3n<cHilo
1000            en3 = en3(min(1:cHilo,en3n*ones(1,cHilo)));
1001          end;
1002          en1n     = length(en1(:,1));
1003          objectoC = en1(5:en1n,:);
1004          tact = 0;
1005          if ax2  hLines2 = findobj(ax2,'type','line'); else hLines2 = 0; end;
1006          for kk=1:cHilo
1007             hi = hRastro(kk);
1008             argo = [get(hi,'x'); get(hi,'y')];
1009             if sum(objectoC(kk,:)) curColor = objectoC(kk,:);
1010             else                  curColor = get(hi,'color');
1011             end;
1012             Hc(14+kk)=line('x',argo(1,1),'y',argo(2,1),'erase','xor','color',curColor,...
1013                             'clipping','on','vis',vis,'use',[hi trk]);
1014             set(Hc(14+kk),'Marker',en3(kk),'MarkerSize',en4);
1015             set(hi,'ButtonD',sprintf('%s''lineCB'',%d);',rasHT,kk));
1016             if ~tact & (sum(get(hi,'vis'))==221) tact = kk; end;
1017             if length(find(hi==hLines2)) set(Hc(14+kk),'par',ax2); end;
1018          end;
1019       else disp('no lines to attach cursors to')
1020       end;
1021       if max(max(en0))>2 unitt = 'Pixels'; else unitt = 'Normal'; end;
1022       Sfuente = (196-get(0,'screenpix'))/10;
1023       for kk=2:3
1024         if kk==2  cordo  = '''x'');'; else cordo  = '''y'');'; end;
1025         cordo= [rasHT '''scaleAxis'',' cordo];
1026         if isempty(en2) en2 = ['x';'y']; end;
1027         Hc(kk) = uicontrol(hf,'Style','text','fontsi',Sfuente,'vis',vis,'str',deblank(en2(kk-2+1,:)),...
1028                 'Units',unitt,'pos',en0(kk-1,:),'backg',en1(1,:),'horiz','cent','ButtonD',cordo,'call',cordo);
1029       end;
1030       for kk=4:7
1031         if trk==1 objectoC = [1 1 1]; else objectoC = en1(2,:); end;
1032         cordo  = sprintf('%s''editCB'',%d);',rasHT,kk-4);
1033         if kk==5 | kk==7   objectoC=get(gcf,'color'); end;
1034         Hc(kk)  = uicontrol(hf,'Style','edit','fontsi',Sfuente,'vis',vis,'str',' ','Units',unitt,'pos',en0(kk-1,:),...
1035                            'foreg',get(v2,'color'),'backg',objectoC,'horiz','left','call',cordo);
1036       end;
1037       if ~DuaC set(Hc(7),'vis','of'); end;
1038       set(Hc(5),'vis','of');
1039       nw1 = Hc(4);  nw2 = Hc(6);
1040       ih = [8 9 10];  c = [173 175 68];  u = {-inf inf ''};
1041       cbs = {'''peakval'',0);', '''peakval'',1);', '''markCB'','''');'};
1042       for k = 1:3
1043         liy = ih(k);
1044         Hc(liy) = uicontrol(hf,'Units',unitt,'pos',en0(liy-1,:),'vis',vis,'horiz','cent',...
1045                   'str',char(c(k)),'fontname','symbol','fontw','bol',...
1046                   'call',[rasHT cbs{k}],'use',u{k});
1047       end;
1048       set(Hc(8), 'ui',uicontextmenu('call',[rasHT '''peakval'',2);']));
1049       set(Hc(9),'ui',uicontextmenu('call',[rasHT '''peakval'',3);']));
1050       set(Hc(10),'fontsi',12,'ena','of');
1051       Hc(12) = line('x',[],'y',[],'erase','xor','color',en1(4,:),'vis','of');
1052       set(Hc(12),'Marker','+','MarkerSize',5*en4,'tag','DeltaC');
1053       if nargin2<9 en5 = ''; end;
1054       if isempty(en5) en5 = ['%7w';'%7w']; end;
1055       set(Hc(3),'use',en5);
1056       if length(en0(:,1)) > 9
1057         uicontrol(hf,'style','slider','Units',unitt,'pos',en0(10,:),...
1058              'backg',[.3 .3 .3],'Min',0,'Max',1000,'Val',500,'use',500,...
1059              'vis',vis,'call',[rasHT '''xslider'');'],'tag','xslider');
1060       end;
1061       set(get(v2,'xlabel'),'ButtonD',[rasHT '''xincr'');']);
1062       kk = [rasHT '''axisCB'');'];
1063       Hc(11) = line('x',[],'y',[],'erase','xor','vis','of','color',en1(3,:),'ButtonD',kk);
1064       set([hf v2],'ButtonD',kk);
1065       if nargin2>=11 & length(en7) jst1 = en7; else jst1 = -1; end;
1066       if nargin2>=12 set(Hc(5),'use',en8); else set(Hc(5),'use',''); end;
1067       tm = zeros(1,8);
1068       if ax2 set(ax2,'ButtonD',[rasHT '''AxisCBaux'');']); end;
1069       tm(5) = jst1;
1070       tm(4) = max(1,tact);
1071       set(nw1,'use',tm);
1072       set(Hc(7),'use','','Tag','');
1073       set(Hc(2),'use',Hc);
1074       CurPri(cador) = Hc(2);
1075       setappdata(0,'CurMain',CurPri);
1076 
1077     case 719
1078       if nargin<8
1079         en4 = [];
1080         if nargin<7
1081           en3 = [];
1082           if nargin<5 en1 = []; end;
1083         end;
1084       end;
1085       if isempty(en1)
1086         RastH = get(hact,'use');
1087         x = get(RastH(1),'x');  absc = get(RastH(1),'y');
1088         if en0<1 en0 = tm(1); end;
1089         lix = length(x);
1090         if en0>lix  lix = round(lix/2);  en1 = x(lix);    en2 = absc(lix);
1091         else                       en1 = x(en0);  en2 = absc(en0);
1092         end;
1093       end;
1094       if isempty(en3) en3 = sum(get(Hc(12),'vis'))==221; end;
1095 
1096       lmx = xyli(1:2);   ylim = xyli(3:4);
1097       xd = 1.01 * (en1-lmx);
1098       yd = 1.01 * (en2-ylim);
1099       if xd(1)<=0 lmx = lmx + xd(1); elseif xd(2)>=0 lmx = lmx+xd(2); end;
1100       if yd(1)<=0 ylim = ylim + yd(1); elseif yd(2)>=0 ylim = ylim+yd(2); end;
1101       if ~isequal(xyli,[lmx ylim])
1102          set(v2,'xli',lmx);
1103          if ax2 set(ax2,'xli',lmx); end;
1104          set(get(hact,'par'),'yli',ylim);
1105          if length(findobj(v2,'use','grid')) plt('grid',v2,'update'); end;
1106          evalQ(get(Hc(5),'use'));
1107       end;
1108 
1109       set(hact,'y',en2,'x',en1);
1110       tipo = get(Hc(3),'use');
1111       if length(en4)
1112          fr = repmat(max(en4.*[.9 1 .5])<=.5,1,3);
1113          set([nw1 nw2],'backg',en4,'foreg',fr);
1114          allC = Hc(14+1:end);
1115          if DuaC allC(DuaC) = []; end;
1116          set(allC,'vis','of');
1117          set(hact,'vis','on');
1118          if ax2 | en3  set(Hc(7),'backg',en4,'foreg',fr); end;
1119          set(Hc([2:3]),'ena','inact'); set(Hc(10),'ena','on');
1120       end;
1121       set(nw2,'str',plt('ftoa',tipo(2,:),en2));
1122       set(nw1,'str',plt('ftoa',tipo(1,:),en1));
1123       if en3
1124          bk = get(nw1,'backg');
1125          fr = get(nw1,'foreg');
1126          set(Hc(7),'str',plt('ftoa',tipo(2,:),en2-get(Hc(12),'y')),'backg',bk,'foreg',fr,'vis','on');
1127          set(Hc(5),'str',plt('ftoa',tipo(1,:),en1-get(Hc(12),'x')),'backg',bk,'foreg',fr,'vis','on');
1128       end;
1129       tm([1 2 3]) = [en0 en1 en2];
1130       set(nw1,'use',tm);
1131       s = get(Hc(7),'Tag');
1132       if length(s) eval(s); end;
1133       sx = getappdata(v2,'xstr');  sy = getappdata(v2,'ystr');  s = [sx sy];
1134       rep1 = {'@XVAL','real(@XY)',...
1135               '@YVAL','imag(@XY)',...
1136               '@XY',  'plt("cursor",@CID,"get","position")',...
1137               '@IDX', 'plt2nd({"cursor",@CID,"get","position"})',...
1138               '@LNUM','plt("cursor",@CID,"get","activeLine")',...
1139               '@HAND','plt2nd({"cursor",@CID,"get","activeLine"})',...
1140               '@XU'  ,['get8192(' int2str(8192*sx) ',"user")'],...
1141               '@YU'  ,['get8192(' int2str(8192*sy) ',"user")'],...
1142               '@CID', sprintf('%d',cador)};
1143       for k=1:length(s)
1144         set(s(k),'str',evalRep2(getappdata(s(k),'evl'),rep1));
1145       end;
1146       if length(getappdata(v2,'moveCBext')) | length(find(v2==findobj(gcf,'type','axes')))
1147         s = get(Hc(7),'use');
1148         if length(s) evalRep(s,rep1); end;
1149       end;
1150 
1151     case 632
1152       tipo  = get(Hc(3),'use');
1153       kvs = tm(1);
1154       RastH = get(Hc(14+DuaC),'use'); lh1 = RastH(1);
1155       argo = [get(lh1,'x'); get(lh1,'y')];
1156       tm(6) = argo(2,kvs);  set(nw1,'use',tm);
1157       largo = length(argo(1,:)); if kvs>largo kvs=largo; end;
1158       set(Hc(14+DuaC),'x', max(xyli(1),min(xyli(2),argo(1,kvs))),...
1159                       'y', max(xyli(3),min(xyli(4),argo(2,kvs))));
1160       if sum(get(Hc(12),'vis'))==221 return; end;
1161       if RastH(2)==1
1162          set(Hc(7),'backg',get(lh1,'color'));
1163          set(Hc(5),'vis','of');
1164       end;
1165       set(Hc(7),'str',plt('ftoa',tipo(2,:),argo(2,kvs)));
1166     case 472
1167       p0 = getappdata(get(v2,'xlab'),'OldCur');
1168       sc = get(v2,'yscale');  liny = sc(2)=='i';
1169       if ischar(en0)
1170           Cpunta = get(ax2,'curre');  cy = Cpunta(1,2);
1171           absc = get(ax2,'yli');
1172           if liny  absc = absc + p0(2) - cy;
1173           else     absc = absc * p0(2) / cy;
1174           end;
1175           set(ax2,'yli',absc);
1176       else
1177         Cpunta = get(v2,'curre');
1178         cx = Cpunta(1,1);  cy = Cpunta(1,2);
1179         if en0<1 x = LMda(1:2);
1180                  sc = get(v2,'xscale');
1181                  if sc(2)=='i' x = x + p0(1) - cx;
1182                  else          x = x * p0(1) / cx;
1183                  end;
1184                  if ax2 axb = [v2 ax2]; else axb = v2; end;
1185                  set(axb,'xli',x);
1186         end;
1187         if en0   absc = LMda(3:4);
1188                  if liny  yi = p0(2) - cy;  absc = absc + yi;
1189                  else     yi = p0(2) / cy;  absc = absc * yi;
1190                  end;
1191                  set(v2,'yli',absc);
1192                  if aconex
1193                    yr = get(ax2,'yli');
1194                    if liny  yr = yr + yi * diff(yr)/diff(absc);
1195                    else     yr = yr * (yr(2)/yr(1))^(log(yi)/log(absc(2)/absc(1)));
1196                    end;
1197                    set(ax2,'yli',yr);
1198                  end;
1199         end;
1200       end;
1201       fixMark;
1202     case 606
1203       p0 = getappdata(get(v2,'xlab'),'OldCur');
1204       if ischar(en0)
1205           Cpunta = get(ax2,'curre');
1206           absc = get(ax2,'yli');  y0 = absc(1);  y1 = absc(2);
1207           cy = Cpunta(1,2)-y0;  if ~cy cy=1e-06; end;
1208           set(ax2,'yli',[y0 y0 + abs((p0(2)-y0)*(y1-y0)/cy)]);
1209       else
1210         Cpunta = get(v2,'curre');
1211         if en0<1 x0 = LMda(1);  x1 = LMda(2);
1212                  cx = Cpunta(1,1)-x0;  if ~cx cx=1e-06; end;
1213                  if ax2 axb = [v2 ax2]; else axb = v2; end;
1214                  set(axb,'xli',[x0 x0 + abs((p0(1)-x0)*(x1-x0)/cx)]);
1215         end;
1216         if en0   y0 = LMda(3);  y1 = LMda(4);  dy = y1-y0;
1217                  cy = Cpunta(1,2)-y0;  if ~cy cy=1e-06; end;
1218                  cy = dy/cy;  p2 = p0(2)-y0;
1219                  set(v2,'yli',[y0 y0 + abs(p2*cy)]);
1220                  if aconex
1221                     sc = get(v2,'yscale');
1222                     if sc(2)=='i'
1223                        absc = get(ax2,'yli');  y0 = absc(1);  y1 = absc(2);
1224                        p2 = (y1-y0) * p2 / dy;
1225                        set(ax2,'yli',[y0 y0 + abs(p2*cy)]);
1226                     else
1227                        yr = get(ax2,'yli');  yr0 = yr(1);  yr1 = yr(2);
1228                        Cpunta = get(ax2,'curre');
1229                        cy = Cpunta(1,2)-yr0;  if ~cy cy=1e-06; end;
1230                        p0 = yr0 * exp(log(p0(2)/y0) * log(yr1/yr0) / log(y1/y0));
1231                        set(ax2,'yli',[yr0 yr0 + abs((p0-yr0)*(yr1-yr0)/cy)]);
1232                      end;
1233                  end;
1234         end;
1235       end;
1236       fixMark;
1237     case 662
1238       Cpunta  = get(v2,'curre');
1239       urX = max(LMda(1),min(LMda(2),Cpunta(1,1)));  yCur = max(LMda(3),min(LMda(4),Cpunta(1,2)));
1240       Cpunta   = get(Hc(11),'use');
1241       xAntiq  = Cpunta(1);  yAntiq  = Cpunta(2);
1242       if sum(get(v2,'yscale')) == 322
1243             vz = abs(log(LMda(3)/LMda(4))) < 50 * abs(log(yAntiq/yCur));
1244       else  vz = diff(LMda(3:4)) < 50 * abs(yAntiq-yCur);
1245       end;
1246       if vz
1247          if sum(get(v2,'xscale')) == 322
1248                vz = abs(log((.0001*LMda(2)+LMda(1))/LMda(2))) < 50 * abs(log(xAntiq/urX));
1249          else  vz = diff(LMda(1:2)) < 50 * abs(xAntiq-urX);
1250          end;
1251       end;
1252       if vz
1253           set(Hc(11),'x',[xAntiq urX urX xAntiq xAntiq],'y',[yAntiq yAntiq yCur yCur yAntiq]);
1254           tipo=get(Hc(3),'use');
1255           if sum(get(Hc(11),'vis')) == 315
1256              set(Hc(11),'vis','on');
1257              set(nw2,'str',plt('ftoa',tipo(2,:),yAntiq));
1258              set(nw1,'str',plt('ftoa',tipo(1,:),xAntiq));
1259              set(Hc([5 7 4 6]),'ena','on');
1260              set(Hc(10),'ena','of');
1261           end;
1262           bk = get(nw1,'backg');
1263           fr = get(nw1,'foreg');
1264           set(Hc(7),'str',plt('ftoa',tipo(2,:),yCur),'backg',bk,'foreg',fr,'vis','on');
1265           set(Hc(5),'str',plt('ftoa',tipo(1,:),urX),'backg',bk,'foreg',fr,'vis','on');
1266       end;
1267     case {570, 557},
1268       Mtipo = sum(get(gcf,'SelectionT'));
1269       if (sum(get(Hc(11),'vis'))==315) & ~tm(7) & ~tm(8)
1270          rasHT = sprintf('plt(''cursor'',%d,',cador);
1271          smv = '';
1272          PareMovi = 'set(gcf,{''WindowButtonMotionFcn'',''WindowButtonUpFcn''},{'''',''''});';
1273          Cpunta  = get(v2,'curre');  cx = Cpunta(1,1);  cy  = Cpunta(1,2);
1274          if     cx<LMda(1) | cx>LMda(2)   dragy =  '1);';
1275          elseif cy<LMda(3) | cy>LMda(4)   dragy =  '0);';
1276          else                               dragy = '-1);';
1277          end;
1278          urX = max(LMda(1),min(LMda(2),cx));
1279          dxy = diff(LMda);
1280          if isempty(getappdata(gcf,'NoEdit')) &  urX-cx > .08*dxy(1)
1281            switch Mtipo
1282              case 649, plt('click','EDIT','1');
1283              case 321,    plt('click','EDIT','2');
1284            end;
1285            return;
1286          end;
1287          switch Mtipo
1288          case 649
1289             yCur = max(LMda(3),min(LMda(4),cy));
1290             if length(get(hact,'ButtonD'))
1291               setappdata(hact,'ilast',getappdata(hact,'i'));
1292               plt('click','EDIT','0');
1293             end;
1294             ovt = 0;
1295             if sact==570
1296                nargin2 = 4;
1297                RastH = get(hact,'use');
1298                if sum(get(RastH(1),'vis')) ~= 221
1299                   for kk=14+1:length(Hc)
1300                       RastH = get(Hc(kk),'use');
1301                       if sum(get(RastH(1),'vis')) == 221 break; end;
1302                   end;
1303                   actv = kk-14;
1304                end;
1305                en0 = actv;
1306                if ax2
1307                  ylm = get(ax2,'yli');  dylm = diff(ylm);
1308                  cvert = (cy - LMda(3)) / dxy(3);
1309                  mdst = 1e+99;
1310                  idst = 0;
1311                  for kk=14+1:length(Hc)
1312                    if get(Hc(kk),'par') ~= ax2 continue; end;
1313                    RastH = get(Hc(kk),'use'); RastH = RastH(1);
1314                    if sum(get(RastH,'vis')) == 315 continue; end;
1315                    x = get(RastH,'x'); absc = get(RastH,'y');
1316                    if length(x)>999 | all(diff(x)>0)
1317                      [toss,j] = min(abs(urX-x));
1318                      dvert = (absc(j) - ylm(1)) / dylm;
1319                      acv = abs(cvert-dvert);
1320                    else
1321                      acv = min(abs((x-urX)/dxy(1)) + abs((absc-ylm(1))/dylm - cvert));
1322                    end;
1323                    if acv < mdst  idst = kk;  mdst = acv; end;
1324                  end;
1325                  if mdst < .02
1326                    ovt = 1;
1327                    ii = idst-14;
1328                    if ii ~= DuaC en0 = ii; end;
1329                  end;
1330                end;
1331             end;
1332             RastH = get(Hc(14+en0),'use');
1333             x = get(RastH(1),'x'); absc = get(RastH(1),'y');
1334             if nargin2==4
1335                set(Hc(8), 'use',-inf);
1336                set(Hc(9),'use',inf);
1337                if tm(5)==-1
1338                   df = diff(x);
1339                   jst1 = all(df>0) | all(df<0);
1340                else jst1 = tm(5);
1341                end;
1342                if RastH(2)==1 clRastro = get(RastH(1),'color');
1343                else        clRastro = get(nw2,'backg');
1344                end;
1345                indic = sum(get(Hc(12),'vis'))==221;
1346             else clRastro=[];  jst1=en1;  indic=en2;
1347             end;
1348             if jst1 [junk,kvs] = min(abs(urX-x));
1349             elseif get(RastH(1),'par')==ax2
1350                   ylm = get(ax2,'yli');  dylm = diff(ylm);
1351                   cvert = (cy - LMda(3)) / dxy(3);
1352                   [toss,kvs] = min(abs((x-urX)/dxy(1)) + abs((absc-ylm(1))/dylm - cvert));
1353             else  [toss,kvs] = min(abs((x-urX)/dxy(1)) + abs(yCur-absc)/dxy(3));
1354             end;
1355             actv = en0;  tm(4) = actv;
1356             iact = 14 + actv;
1357             hact = Hc(iact);
1358             set(nw1,'use',tm);
1359             plt('cursor',cador,'mainCur',kvs,x(kvs),absc(kvs),indic,clRastro);
1360             if DuaC plt('cursor',cador,'auxCur'); end;
1361             if (sact==557) | ovt
1362               if nargin2==4
1363                 smv = sprintf('%s''lineCB'',%d,%d,%d);',rasHT,en0,jst1,indic);
1364               end;
1365             else setappdata(get(v2,'xlab'),'OldCur',[cx cy LMda]);
1366                  PareMovi = [rasHT '''svHist'');' PareMovi];
1367                  smv = [rasHT '''panAX'',' dragy];
1368             end;
1369          case 321
1370             setappdata(get(v2,'xlab'),'OldCur',[cx cy LMda]);
1371             PareMovi = [rasHT '''svHist'');' PareMovi];
1372             smv = [rasHT '''zoomAX'',' dragy];
1373          otherwise,
1374             set(Hc(11),'use',[max(LMda(1),min(LMda(2),cx)) max(LMda(3),min(LMda(4),cy))]);
1375             smv = [rasHT '''expbox'');'];
1376          end;
1377          if length(smv) set(gcf,'WindowButtonMotionFcn',smv,'WindowButtonUpFcn',PareMovi); end;
1378       elseif (sum(get(Hc(11),'vis'))==221) | tm(7) | tm(8)
1379         switch Mtipo
1380         case 649, plt('cursor',cador,'scale','new');
1381         case 321,    plt('cursor',cador,'restore');
1382         end;
1383         tm([7 8]) = 0;  set(nw1,'use',tm);
1384       end;
1385     case 872
1386       rasHT = sprintf('plt(''cursor'',%d,',cador);
1387       Cpunta  = get(ax2,'curre');  setappdata(get(v2,'xlab'),'OldCur',[Cpunta(1,1) Cpunta(1,2)]);
1388       switch sum(get(gcf,'SelectionT'));
1389       case 321,   smv = [rasHT '''zoomAX'',''R'');'];
1390       otherwise,   smv = [rasHT '''panAX'',''R'');'];
1391       end;
1392       set(gcf,'WindowButtonMotionFcn',smv,'WindowButtonUpFcn','set(gcf,{''WindowButtonMotionFcn'',''WindowButtonUpFcn''},{'''',''''});');
1393     case 555
1394       x   = str2double(get(Hc(4+en0),'str'));
1395       tipo = get(Hc(3),'use'); tipo = tipo((1+fix(en0/2)),:);
1396       xpx = (sum(get(Hc(11),'vis'))==221) | tm(7) | tm(8);
1397       if xpx  argo = Hc(11); argo = [get(argo,'x') get(argo,'y')];
1398               if en0 xold=argo(3*en0); else xold=argo(1); end;
1399       else    argo = [get(hact,'x') get(hact,'y')];
1400               if ~en0 xold=argo(1); elseif en0==2 xold=argo(2); else xold=0; end;
1401       end;
1402       if length(x)
1403          if xpx  ixy = [1 4 5; 2 3 3; 6 7 10; 8 9 9];  argo(ixy(en0+1,:)) = x;
1404                  set(Hc(11),'x',argo(1:5),'y',argo(6:10));
1405          else
1406             editd = length(get(hact,'ButtonD'));
1407             if imag(x) x = imag(x); setappdata(hact,'alt',0); end;
1408             if ~en0
1409                RastH = get(hact,'use'); RastH = RastH(1);
1410                xd = get(RastH,'x');  yd = get(RastH,'y');
1411                if editd set(hact,'x',x); plt('click','EDIT','/');
1412                else [v xk] = min(abs(xd-x));
1413                     xv = xd(xk);
1414                     if xv<xyli(1) | xv>xyli(2) plt('cursor',cador,'set','xlim',xv+[-.5 .5].*diff(xyli(1:2))); end;
1415                     plt('cursor',cador,'mainCur',xk);
1416                end;
1417             elseif en0==2  set(hact,'y',x);
1418                            if x<xyli(3) | x>xyli(4)
1419                               plt('cursor',cador,'set','ylim',x+[-.5 .5].*diff(xyli(3:4)));
1420                            end;
1421                            if editd plt('click','EDIT','/'); end;
1422             else set(Hc(4+en0),'str',plt('ftoa',tipo,tm(6)));
1423             end;
1424          end;
1425       else set(Hc(4+en0),'str',plt('ftoa',tipo,xold));
1426       end;
1427     case 641
1428       set(Hc(11),'x',[LMda(1:2) 0 0 0],...
1429                       'y',[LMda(3) 0 LMda(4) 0 0]);
1430       p0 = getappdata(get(v2,'xlab'),'OldCur');
1431       set(v2,'xli',p0(3:4),'yli',p0(5:6));
1432       plt('cursor',cador,'scale','new',0,0);
1433     case 520
1434       toria = get(nw2,'use');
1435       if isempty(toria) toria = [LMda 1]; end;
1436       lExp   = length(toria(:,1));
1437       gasto = find(toria(:,5)==1);
1438       skip   = [];
1439       switch sum(en0)
1440       case 330
1441          argo = Hc(11); argo = [get(argo,'x') get(argo,'y')];
1442          apXY = [sort(argo(1:2)) sort(argo([6 8])) 1];
1443          if isequal(LMda,apXY(1:4))
1444             if length(gasto) toria(gasto,5)=1; end;
1445          else
1446             if length(gasto)
1447                toria(gasto,5)=0;
1448                if max(gasto,lExp) < 4
1449                   toria = [toria; apXY];
1450                else
1451                   if gasto==4  toria(2:4,:)=[toria(3:4,:); apXY];
1452                   elseif gasto >= 1  toria(gasto+1,:)=apXY;
1453                   end;
1454                end;
1455             else
1456                if lExp < 4  toria = [toria; apXY];
1457                else               toria = [toria(lExp-1,:); apXY];
1458                end;
1459             end;
1460          end;
1461          escars=0;
1462       case 319
1463           if sum(get(gcf,'SelectionT'))==321 escars=1;
1464           else
1465             if isempty(gasto) gasto = lExp;
1466             else               toria(gasto,5)=0;  gasto = gasto-1;
1467             end;
1468             if gasto  escars=0;  apXY=toria(gasto,:); toria(gasto,5)=1;
1469             else       escars=1;
1470             end;
1471           end;
1472       case 441
1473           switch sum(en1)
1474           case 120,    escars=2;
1475           case 121,    escars=3;
1476           case 429, escars=1;
1477           otherwise, disp([en1 ' is not a valid action in plt(cursor,CurID,scale,auto,In2)']);
1478           end;
1479       otherwise, disp([en0 ' is not a valid action in plt(cursor,CurID,scale,In1)']);
1480       end;
1481       if escars == 0
1482           set(v2,'xli',sort(apXY(1:2)),'yli',sort(apXY(3:4)));
1483           wii = 0;
1484       else
1485          Nrastro=length(Hc)-14;  ximo=+inf;  xima=-inf;
1486          mc = zeros(Nrastro,2);  Rlista = [];   wii = 1;
1487          for kk=1:Nrastro
1488             rastro=get(Hc(14+kk),'use');
1489             if sum(get(rastro(1),'vis')) == 221
1490                xdatos = get(rastro(1),'x');
1491                ximo  = min(ximo,min(xdatos));
1492                xima  = max(xima,max(xdatos));
1493                if wii ydatos = get(rastro(1),'y'); end;
1494                Rlista = [kk Rlista];  wii = 0;
1495             end;
1496          end;
1497 
1498          if wii msgbox('Possible autoscale without any visible lines','Warning','warn','modal');
1499          else
1500             for kk=1:Nrastro
1501               k = Hc(14+kk);
1502               mc(kk,:) = [get(k,'x') get(k,'y')];
1503               set(k,'x',xdatos(1),'y',ydatos(1));
1504             end;
1505             skip = findobj(v2,'Tag','SkipCur','vis','on'); set(skip,'vis','of');
1506             switch escars
1507             case 1,  set(v2,'YlimM','auto');
1508                          apXY = [ximo xima get(v2,'yli') 1];
1509                          set(v2,'xli',apXY(1:2));
1510             case 2, apXY = [ximo xima get(v2,'yli') 1];
1511                          set(v2,'xli',apXY(1:2));
1512             case 3,
1513                tm=get(nw1,'use');
1514                if ismember(actv,Rlista)
1515                   rastro = get(hact,'use');  ydatos = get(rastro(1),'y');
1516                   ymax = max(ydatos);  ymin = min(ydatos);  dy = 0.25*(ymax-ymin);
1517                   ymin = ymin - dy;   ymax = ymax + dy;
1518                   if ymin ~= ymax  set(v2,'YlimM','man'); set(v2,'yli',[ymin ymax]); drawnow;
1519                   else             set(v2,'YlimM','auto');  drawnow;
1520                   end;
1521                else set(v2,'YlimM','man'); drawnow; set(v2,'YlimM','auto');
1522                end;
1523                apXY = [LMda 1];
1524             end;
1525             for kk=1:Nrastro set(Hc(14+kk),'x',mc(kk,1),'y',mc(kk,2)); end;
1526          end;
1527       end;
1528       if ~wii
1529          if ax2 set(ax2,'xli',apXY(1:2)); end;
1530          set(nw2,'use',toria);
1531          if aconex & nargin<6
1532            yr = get(ax2,'yli');
1533            set(ax2,'yli',yr(1) + (get(v2,'yli') - LMda(3)) * diff(yr) / (LMda(4)-LMda(3)));
1534          end;
1535          plt('cursor',cador,'restore');
1536          axes(v2); evalQ(get(Hc(5),'use'));
1537       end;
1538       set(v2,'YlimM','man');
1539       set(skip,'vis','on');
1540       plt('grid',v2,'update');
1541     case 548,
1542       RastH = get(hact,'use');
1543       lx = length(get(RastH(1),'x'));   xk = tm(1);
1544       ty = get(gcf,'SelectionT');  ty = ty(1);
1545       if ty=='o' & getappdata(gcbo,'ty') ty = 'a'; end;
1546       ty = ty=='a';
1547       if ty xk = max(xk-1,1);
1548       else  xk = min(xk+1,lx);
1549       end;
1550       setappdata(gcbo,'ty',ty);
1551       plt('cursor',cador,'mainCur',xk);
1552       if DuaC plt('cursor',cador,'auxCur'); end;
1553     case 763,
1554       RastH = get(hact,'use'); h1 = RastH(1);
1555       x = get(h1,'x');   absc = get(h1,'y'); lx = length(x);
1556       lmx = LMda(1:2);   ylim = LMda(3:4);  dxlim = diff(lmx);
1557       xk = tm(1);    v = get(gcbo,'Val');
1558       x1 = min(x);  x2 = max(x);   xvalo = x2 - x1;
1559       if xvalo/dxlim < 2
1560         dx = round(v - 500);
1561         if abs(dx)==10 pmove = .01; else pmove = .05; end;
1562         xk = max(min(lx,xk + sign(dx)*round(lx*pmove)),1);
1563         x = x(xk);  xd = 1.01 * (x-lmx);
1564         if xd(1)<0 lmx = lmx + xd(1); elseif xd(2)>0 lmx = lmx+xd(2); end;
1565         v = 500;
1566       else
1567         dx = v - get(gcbo,'use');
1568         switch round(abs(dx))
1569           case 10,   lmx = lmx + sign(dx)*dxlim/10;
1570           case 100,  lmx = lmx + sign(dx)*dxlim;
1571           otherwise, lmx = x1 + xvalo*v/1000 + dxlim*[-.5 .5];
1572         end;
1573         if     lmx(1)<x1  lmx = [x1 x1+dxlim] - dxlim/50;
1574         elseif lmx(2)>x2  lmx = [x2-dxlim x2] + dxlim/50;
1575         end;
1576         xlc = mean(lmx);
1577         v = 1000*(xlc-x1)/xvalo;
1578         v = max(min(v,1000),0);
1579         [dmy xk] = min(abs(xlc-x));
1580       end;
1581       set(gcbo,'Val',v,'use',v);
1582       absc = absc(xk);  yd = 1.01 * (absc-ylim);
1583       if yd(1)<0 ylim = ylim + yd(1); elseif yd(2)>0 ylim = ylim+yd(2); end;
1584       if sum(LMda - [lmx ylim])
1585          set(v2,'xli',lmx,'yli',ylim);
1586          if ax2 set(ax2,'xli',lmx); end;
1587          if length(findobj(v2,'use','grid')) plt('grid',v2,'update'); end;
1588          evalQ(get(Hc(5),'use'));
1589       end;
1590       plt('cursor',cador,'mainCur',xk);
1591       if DuaC plt('cursor',cador,'auxCur'); end;
1592     case 740
1593       b = gcbo;  set(b,'vis','of'); drawnow; set(b,'vis','on');
1594       switch en0
1595         case 2, en0=0; set(Hc(8), 'use',-inf);
1596         case 3, en0=1; set(Hc(9),'use',inf);
1597       end;
1598       RastH = get(hact,'use'); h1 = RastH(1);  absc = get(h1,'y'); x = get(h1,'x');
1599       x12 = find(x <= LMda(2) & x >= LMda(1));
1600       if isempty(x12) x = LMda(1); x12 = 1:length(x); disp('You must select a line for the min/max finder'); end;
1601       absc = absc(x12);  nabsc = length(absc);
1602       if en0
1603          xk=find(absc < [absc(2:nabsc) inf] & ...
1604                  absc < [inf  absc(1:nabsc-1)] & ...
1605                  absc > get(Hc(9),'use'));
1606          if isempty(xk)
1607               [absc xk] = min(absc);
1608          else [absc kk]  = min(absc(xk));
1609               xk = xk(kk);
1610          end;
1611          set(Hc(9),'use',absc);
1612       else
1613          xk=find(absc > [absc(2:nabsc) -inf] & ...
1614                  absc > [-inf absc(1:nabsc-1)] & ...
1615                  absc < get(Hc(8),'use'));
1616          if isempty(xk)
1617               [absc xk] = max(absc);
1618          else [absc kk] = max(absc(xk));
1619               xk = xk(kk);
1620          end;
1621          set(Hc(8),'use',absc);
1622       end;
1623       xk = xk + x12(1) - 1;
1624       if sum(get(Hc(12),'vis')) == 221
1625          indic = 1;
1626          if RastH(2)==1 clRastro = get(RastH(1),'color');
1627          else        clRastro = get(nw2,'backg');
1628          end;
1629       else indic = 0;
1630            clRastro = [];
1631       end;
1632       plt('cursor',cador,'mainCur',xk,x(xk),absc,indic,clRastro);
1633       if DuaC plt('cursor',cador,'auxCur'); end;
1634     case 772
1635       tipo = get(Hc(3),'use');
1636       set(nw2,'str',plt('ftoa',tipo(2,:),tm(3)));
1637       set(nw1,'str',plt('ftoa',tipo(1,:),tm(2)));
1638       set(Hc(11),'vis','of');
1639       if DuaC
1640          RastH = get(Hc(14+DuaC),'use');
1641          if RastH(2)==1
1642               clRastro = get(RastH(1),'color');
1643               set(Hc(7),'str',plt('ftoa',tipo(2,:),tm(6)),'ena','on','backg',clRastro);
1644          else set(Hc(7),'str',plt('ftoa',tipo(2,:),tm(6)),'ena','on')
1645          end;
1646          set(Hc(5),'str','','ena','of','vis','of');
1647          plt('cursor',cador,'auxCur');
1648       else
1649          if sum(get(Hc(12),'vis')) == 315
1650             set(Hc([5 7]),'vis','of','str','');
1651          end;
1652       end;
1653       set(hact,'y',max(xyli(3),min(xyli(4),tm(3))),...
1654                'x',max(xyli(1),min(xyli(2),tm(2))));
1655       set(Hc([2:3]),'ena','inact');  set(Hc(10),'ena','on');
1656     case 560
1657       set(Hc(10),'vis','of','backg',1-get(Hc(10),'backg'));
1658       drawnow; set(Hc(10),'vis','on');
1659       if sum(get(Hc(12),'vis')) == 315
1660             set(Hc(12),'vis','on','par',get(hact,'par'),'use',actv,...
1661                 'x',get(hact,'x'),'y',get(hact,'y'));
1662       else  set(Hc(12),'vis','of'); set(Hc(8:9),'ena','on');
1663             plt('cursor',cador,'restore');
1664       end;
1665     case 493
1666       fg = get(nw1,'par');
1667       a = flipud(findobj(get(findobj(fg,'use','TraceID'),'child'),'type','text'));
1668       if length(a)<actv  s = 'Yval';
1669       else s = deblank(get(a(actv),'str'));
1670       end;
1671       set(findobj(fg,'use','idcur'),{'str','color'},{s,get(hact,'color')});
1672     case 320
1673       switch sum(en0)
1674       case 315
1675          Volv1 = Hc(2:12);
1676       case 885
1677          if nargin2==5 rasNo=en1; else rasNo=actv; end;
1678          k = Hc(14+rasNo);
1679          Volv1 = complex(get(k,'x'),get(k,'y'));
1680          Volv2 = tm(1);
1681       case 1028
1682          RastH = get(hact,'use');
1683          Volv1 = actv;
1684          Volv2 = RastH(1);
1685       case 625
1686          toria = get(nw2,'use');
1687          if isempty(toria)
1688             Volv1  = [[LMda 1]; [zeros(3,4), -ones(3,1)]];
1689          else aa = 4 - length(toria(:,1));
1690               Volv1 = [ toria; [ zeros(aa,4), -ones(aa,1) ] ];
1691          end;
1692          if ax2 Volv1 = [Volv1; [get(ax2,'xli') get(ax2,'yli') 2]];
1693          else   Volv1 = [Volv1; [zeros(1,4) -1]];
1694          end;
1695       otherwise, disp('error in plt(cursor,get)');
1696       end;
1697     case 332
1698       switch sum(en0)
1699       case 557
1700          h = [Hc([2:10 14+1:end]) ...
1701               findobj(gcf,'tag','xstr') ...
1702               findobj(gcf,'tag','ystr') ...
1703               findobj(gcf,'use','idcur') ...
1704               findobj(gcf,'tag','xslider')];
1705          h = findobj(h,'vis','on');
1706          set(h,'vis','of');
1707          setappdata(Hc(2),'hid',h);
1708       case 495, set(getappdata(Hc(2),'hid'),'vis','on');
1709       case 885
1710          for kk=2:10 set(Hc(kk),'pos',en1(kk-1,:)); end;
1711       case 334,      set(Hc(7),'vis',en1);
1712                       if DuaC set(Hc(DuaC),'vis',en1); end;
1713       case 423,     set(Hc(2),'str',en1);
1714       case 424,     set(Hc(3),'str',en1);
1715       case 570,   set(Hc(5),'use',en1);
1716       case 572,   if length(en1) & ischar(en1) & en1(1)==';'
1717                          setappdata(v2,'moveCBext',1);  en1(1) = [];
1718                       end;
1719                       set(Hc(7),'use',en1);
1720       case 622,  set(Hc(7),'Tag',en1);
1721       case {563,443,442},
1722          oldEh = get(nw2,'use');
1723          toria = oldEh;
1724          if length(toria)
1725              gasto = find(toria(:,5)==1);
1726              if length(gasto) toria(gasto,5)=0; end;
1727          end;
1728          switch sum(en0)
1729          case 563, xyl = en1;  toria(1,:) = [xyl 1];
1730          case 443
1731             if length(oldEh)  toria(1,:) = [LMda(1:2) en1,1];  xyl = [LMda(1:2) en1];
1732             else              toria=[];                         xyl = [LMda(1:2) en1];
1733             end;
1734          case 442
1735             if length(oldEh)  toria(1,:) = [en1 LMda(3:4) 1]; xyl  = [en1 LMda(3:4)];
1736             else              toria=[];                        xyl = [en1 LMda(3:4)];
1737             end
1738          end;
1739          set(v2,'xli',sort(xyl(1:2)),'yli',sort(xyl(3:4)));
1740          set(nw2,'use',toria);
1741          if ax2
1742             if nargin2==6 argo = en2; else  argo = get(ax2,'yli'); end;
1743             set(ax2,'xli',xyl(1:2),'yli',argo);
1744             set(nw1,'use',tm);
1745          end;
1746          if length(findobj(v2,'use','grid')) plt('grid',v2,'update'); end;
1747          evalQ(get(Hc(5),'use'));
1748       case 540, set(Hc(8), 'use',-inf); set(Hc(9),'use',inf);
1749       case 625,
1750          if length(en1(1,:)) < 5
1751             plt('cursor',cador,'set','xylim',en1);
1752          elseif isequal(size(en1),[5 5])
1753            toria = [];
1754            for kk=1:5
1755              if kk<=4
1756                if en1(kk,5) >= 0
1757                  toria=[toria; en1(kk,:)];
1758                  if en1(kk,5) == 1
1759                     LMda = en1(kk,1:4);
1760                     set(v2,'xli',en1(kk,1:2),'yli',en1(kk,3:4));
1761                     if length(findobj(v2,'use','grid'));
1762                        plt('grid',v2,'update');
1763                     end;
1764                  end;
1765                end
1766              else
1767                if en1(kk,5)==2 set(ax2,'xli',en1(kk,1:2),'yli',en1(kk,3:4)); end;
1768              end;
1769            end;
1770            set(nw2,'use',toria);
1771          else disp('error in plt(cursor,CurId,set,expHis,xxx), xxx is wrong shape');
1772          end;
1773       case 1028
1774         if en1
1775           set(hact,'vis','of');
1776           actv = en1;
1777           tm(4) = actv;
1778           iact = 14 + actv;
1779           hact = Hc(iact);
1780           set(hact,'vis','on');
1781           set(nw1,'use',tm);
1782         end;
1783         if nargin<6 en2 = 1; end;
1784         plt('cursor',cador,'mainCur',en2,[],[],[],get(hact,'color'));
1785       end;
1786     case 519
1787       delete(Hc([2:12 14+1:end]));
1788       CurPri(cador) = 0;
1789       if ~sum(CurPri) CurPri = []; end;
1790       setappdata(0,'CurMain',CurPri);
1791     case 925
1792       IsY = strcmp(en0,'y');
1793       Mtipo = get(gcf,'SelectionT');
1794       if strcmp(Mtipo,'normal')
1795          if tm(7+IsY)
1796             plt('cursor',cador,'scale','new');  tm(7)=0;  tm(8)=0;  set(nw1,'use',tm);
1797          else
1798             tipo = get(Hc(3),'use'); tipo = tipo(IsY+1,:);
1799             of2 = IsY*2;
1800             set(Hc(4 +of2),'str',plt('ftoa',tipo,LMda(of2+1)),'ena','on' );
1801             set(Hc(5+of2),'str',plt('ftoa',tipo,LMda(of2+2)),'ena','on' ,...
1802                                  'backg',get(nw1,'backg'),'foreg',get(nw1,'foreg'),'vis','on');
1803             tm(7+IsY)=1;
1804             if ~tm(7) | ~tm(8)
1805                set(Hc(11),'x',LMda([1 2 2 1 1]),'y',LMda([3 3 4 4 3]),'vis','on');
1806             end;
1807             set(nw1,'use',tm);
1808          end;
1809       elseif  strcmp(Mtipo,'alt')
1810           plt('cursor',cador,'scale','auto',en0);
1811       end;
1812     otherwise disp([accion ' is not a valid action in plt(cursor)']);
1813     end;
1814 
1815 case 785
1816   switch varargin{2}
1817   case 0,
1818      p = gcbo;  e = getappdata(p,'edt');  f = get(e,'use');
1819      obj = getappdata(p,'obj');  obj = obj(1);
1820      c = get(p,'str');   v = get(p,'Val');  prop = deblank(c(v,:));
1821      if strcmp(prop,'Delete') & ishandle(obj) delete(obj); end;
1822      if ishandle(obj)
1823        s = get(obj,prop);
1824        if isnumeric(s)  set(e,'str',plt('vtoa','%6w',s,'  '));
1825                         if f & length(s)==3 plt('ColorEdit',2,f,2); end;
1826        else             set(e,'str',s);
1827        end;
1828      else set(e,'str','Deleted');
1829      end;
1830   case 1,
1831      e = gcbo;  p = getappdata(e,'pop'); obj = getappdata(p,'obj');
1832      c = get(p,'str'); v = get(p,'Val');   prop = deblank(c(v,:));
1833      s = get(e,'str'); f = get(e,'use');
1834      if strcmp(prop,'Delete')
1835        if strcmpi(s,'all')
1836          if length(c(:,1))==9 c='line'; else c='text'; end;
1837          delete(findobj(get(get(e,'par'),'use'),'type',c,'tag','mark'));
1838        end;
1839      else if isnumeric(get(obj(1),prop))
1840              s = str2num(s);
1841              tid = getappdata(p,'tid');
1842              if length(s)==3 set(tid,prop,s); end;
1843           end;
1844           set(obj,prop,s);
1845           if f plt('ColorEdit',2,f,2); end;
1846      end;
1847    case 2,
1848      p = gcbo;  e = getappdata(p,'edt');  v = get(p,'Val');  f = get(e,'use');
1849      h = get(p,'use');  h = h{v}(1);
1850      if v==3 c = get(h,'xcol');
1851      else    c = get(h,'color');
1852      end;
1853      set(e,'str',plt('vtoa','%6w',c,'  '));
1854      if f plt('ColorEdit',2,f,2); end;
1855    case 3,
1856      e = gcbo;  p = getappdata(e,'pop');  v = get(p,'Val');
1857      c = str2num(get(e,'str'));
1858      h = get(p,'use');  h = h{v};
1859      if v==3 set(h,'xcol',c,'ycol',c);
1860      else    set(h,'color',c);
1861      end;
1862   end;
1863 
1864 case 642
1865   t = gco;
1866   Cpunta  = get(get(t,'par'),'curre');
1867   if nargin==1
1868     switch sum(get(gcf,'SelectionT'));
1869     case 649
1870       setappdata(t,'Dxy',diff([Cpunta(1,:); get(t,'pos')]));
1871       set(gcf,'WindowButtonMotionFcn','plt(''marker'',0);','WindowButtonUpFcn','set(gcf,{''WindowButtonMotionFcn'',''WindowButtonUpFcn''},{'''',''''});');
1872     case 321
1873       callc = 'plt(''ColorEdit'',0);';
1874       callp = 'plt(''MarkEdit'',0);';
1875       calle = 'plt(''MarkEdit'',1);';
1876       set(0,'units','pix');  sz = get(0,'screens');
1877       szw = sz(3) - 302 - 4;
1878       ppos  = get(gcf,'pos');
1879       if ppos(4)<1 sp = sz(3:4); ppos = ppos .* [sp sp]; end;
1880       xp = min(ppos(1)+ppos(3)+6,szw);
1881       yp = ppos(2)+ppos(4)-85-30*length(findobj('type','fig','use',gcf));
1882       figure('menu','none','number','off','Back','off','resize','off','pos',[xp yp 302 85],'color',[0,.4,.4],'name','Edit Marker','use',gcf,...
1883                      'closereq','plt(''click'',''mark'',4);');
1884       ed1 = uicontrol('sty','edit','pos',[8 5 130 22],'call',calle,'ButtonD',callc,'use',0);
1885       pu1 = 'Delete|Color|LineStyle|LineWidth|Marker|MarkerSize|Xdata|Ydata|Zdata';
1886       pu1 = uicontrol('sty','pop','str',pu1,'pos',[8 35 130 20],'call',callp,'Val',5);
1887       uicontrol('sty','text','str', 'Marker properties:','pos',[8 64 130 17]);
1888       ed2 = uicontrol('sty','edit','pos',[145 5 150 22],'call',calle,'ButtonD',callc,'use',0);
1889       pu2 = uicontrol('sty','pop','str','Delete|Color|FontAngle|FontName|FontSize|FontWeight|HorizontalAlign|Position|Rotation|String|VerticalAlign',...
1890                    'pos',[145 35 150 20],'call',callp,'Val',10);
1891       uicontrol('sty','text','str', 'String properties:','pos',[145 64 150 17]);
1892       set([ed1 ed2 pu1 pu2],'backg',[.8,.8,.9],'foreg','black');
1893       l = get(t,'use');
1894       setappdata(ed1,'pop',pu1); setappdata(pu1,'edt',ed1); setappdata(pu1,'obj',l);
1895       setappdata(ed2,'pop',pu2); setappdata(pu2,'edt',ed2); setappdata(pu2,'obj',t);
1896       if ishandle(l) l=get(l,'Marker'); else l='Deleted'; end;
1897       if ishandle(t) t=get(t,'str');      else t='Deleted'; end;
1898       set(ed1,'str',l);  set(ed2,'str',t);
1899     end;
1900   else  dxy = Cpunta(1,:) + getappdata(t,'Dxy'); set(t,'pos',dxy(1:2));
1901   end;
1902 
1903 case 901
1904   switch varargin{2}
1905   case 0,
1906     e = gcbo;
1907     c = str2num(get(e,'str'));
1908     if length(c) ~= 3 return; end;
1909     f = get(e,'use');
1910     if ~f
1911       par = get(e,'par');
1912       f = figure('menu','none','number','off','Back','off','pos',get(par,'pos')+[0 -150 0 120],'color',[0,.4,.4],...
1913                  'name','Color select','use',get(par,'use'),...
1914                  'closereq','plt(''ColorEdit'',4);');
1915       s1 = [0 100];
1916       s4 = 'plt(''ColorEdit'',1,%d,%d);';  d = c*100;
1917       s = [plt('slider',[.025 .870 110],[d(1) s1 s1],'Red (%)'  ,sprintf(s4,1,f),2);
1918            plt('slider',[.025 .545 110],[d(2) s1 s1],'Green (%)',sprintf(s4,2,f),2);
1919            plt('slider',[.025 .220 110],[d(3) s1 s1],'Blue (%)' ,sprintf(s4,3,f),2);
1920           ]';
1921       v2 = axes('xli',[.8 12.15],'yli',[.8 15.4],'color',[0 0 0],'xcol',[0,.4,.4],'ycol',[0,.4,.4],'XtickL',' ','YtickL',' ','TickLen',[0 0]',...
1922                 'units','nor','pos',[.408 .02 .57 .96]);
1923       ph = zeros(11,11);
1924       cb = sprintf('plt(''ColorEdit'',2,%d);',f);
1925       for fila = 1:11
1926         for col = 1:11
1927           ph(fila,col) = patch(col+[0 1 1 0],fila+[0 0 1 1],[0 0 0],'use',[fila col],'ButtonD',cb);
1928         end;
1929       end;
1930       pat = patch([1 12 12 1],12+[.5 .5 3 3],c,'use',ph,'ButtonD',sprintf('plt(''ColorEdit'',2,%d,1);',f));
1931       set(v2,'use',[s e pat c]);  set(e,'use',f);
1932     end;
1933     plt('ColorEdit',2,f,2);
1934   case 1,
1935     s = varargin{3};
1936     f = varargin{4};
1937     v2 = findobj(f,'type','axes');
1938     u = get(v2,'use');
1939     c = [0 0 0];
1940     for k=1:3
1941       h = u(k);
1942       c(k) = plt('slider',h,'get')/100;
1943       if k==s  bk = [1 1 0]; else  bk = [0 1 1]; end;
1944       obj = plt('slider',h,'get','obj');
1945       set(obj(5),'backg',bk);
1946     end;
1947     ph = get(u(5),'use');
1948     phc = [0 0 0];
1949     phc(s) = c(s);
1950     v = mod(s,3)+1;  w = mod(v,3)+1;
1951     for fila = 1:11
1952       phc(v) = (fila-1)/10;
1953       for col = 1:11
1954         phc(w) = (col-1)/10;
1955         set(ph(fila,col),'FaceColor',phc);
1956       end;
1957     end;
1958     set(u(5),'FaceColor',c);
1959     es = get(u(4),'str');
1960     if es(1)~='[' return; end;
1961     set(u(4),'str',plt('vtoa','%6w',c,'  '));
1962     p = getappdata(u(4),'pop');
1963     s = get(p,'str');  v = get(p,'Val');  obj = getappdata(p,'obj');
1964     if length(obj)
1965       prop = deblank(s(v,:));
1966       set(obj,prop,c);
1967       tid = getappdata(p,'tid');
1968       if tid set(tid,prop,c); end;
1969     else  h = get(p,'use');  h = h{v};
1970           if v==3 set(h,'xcol',c,'ycol',c);
1971           else    set(h,'color',c);
1972           end;
1973     end;
1974   case 2,
1975     f = varargin{3};
1976     v2 = findobj(f,'type','axes');
1977     u = get(v2,'use');
1978     if nargin<4 in4 = 0; else in4 = varargin{4}; end;
1979     switch in4
1980       case 0, c = get(gcbo,'FaceColor');
1981       case 1, c = u(6:8);
1982       case 2, c = str2num(get(u(4),'str'));
1983               if length(c)~=3 return; end;
1984     end;
1985     for k=1:3
1986       obj = plt('slider',u(k),'get','obj');   bk =get(obj(5),'backg');
1987       if bk(1) break;  end;
1988     end;
1989     v = mod(k,3)+1;  w = mod(v,3)+1;
1990     plt('slider',u(v),'set',c(v)*100);
1991     plt('slider',u(w),'set',c(w)*100);
1992     plt('slider',u(k),'set',c(k)*100);
1993   case 4,
1994     u = get(findobj(gcf,'type','axes'),'use');
1995     if ishandle(u(4)) set(u(4),'use',0); end;
1996     closereq;
1997   end;
1998 
1999 case 434
2000   if nargin<2 [fi pth] = uigetfile('plt.plt','Select plt figure to open');
2001               if isnumeric(fi) return; end;
2002               fi = [pth fi];
2003   else        fi = varargin{2};
2004   end;
2005   ydat = [];
2006   feval('load',fi,'-mat');
2007   if isempty(ydat)
2008     p = find(fi=='.');
2009     if length(p) f = [fi(1:p(end)) 'mat']; end;
2010     dos(['copy ' fi ' ' f ' > NUL:']);
2011     load(f); delete(f);
2012   end;
2013   xdat = [xdat'; ydat'];
2014   plt(xdat{:},params{:});
2015 
2016 case 431
2017   if nargin<2 [fi pth] = uiputfile('plt.plt','Save plt figure as');
2018               if isnumeric(fi) return; end;
2019               fi = [pth fi];
2020   else        fi = varargin{2};
2021   end;
2022   AX    = findobj(gcf,'Tag','click');
2023   cador = get(AX,'use');
2024   AX2   = findobj(gcf,'YAxisLoc','right','use',cador);
2025     RastH = getappdata(gcf,'Lhandles');
2026     xdat = get(RastH,'x');  ydat = get(RastH,'y');
2027     xlm =  get(AX,'xli');   ylm =  get(AX,'yli');
2028     xymult = getappdata(gcf,'xymult');
2029     if xymult(1) ~= 1
2030        mult = 1/xymult(1);
2031        for k = 1:length(xdat) xdat{k} = mult * xdat{k}; end;
2032        xlm = xlm * mult;
2033     end;
2034     ym = 1;
2035     for k = 1:length(ydat)
2036       mult = xymult(k+1);
2037       if mult ~= 1  
2038          mult = 1/mult;
2039          if ym ylm=ylm*mult; ym=0;  end;
2040          ydat{k} = mult * ydat{k};
2041       end;
2042     end;
2043     v = get(RastH,'vis');  v = [v{:}];  
2044     params = [getappdata(gcf,'params') { ...
2045              'position' get(gcf,'pos') ...
2046              'DIStrace' v(find(v=='o')+1)=='f' ...
2047              'Xlim'     xlm ...
2048              'Ylim'     ylm     }];
2049     if AX2 params = [params {'YlimR' get(AX2,'yli')}]; end;
2050     ver = '11May10';
2051     save(fi,'xdat','ydat','params','ver');
2052 
2053 case 518
2054   y2    = varargin{2};
2055   AX    = findobj(gcf,'Tag','click');
2056   cador = get(AX,'use');
2057   AX2   = findobj(gcf,'YAxisLoc','right','use',cador);
2058   AXrl  = [AX AX2];
2059   if isempty(AX2) AX2=0; end;
2060   CurPri = getappdata(0,'CurMain');
2061   Hc = get(CurPri(cador),'use');
2062   if ischar(y2)
2063     switch sum(y2)
2064     case 430
2065       s = get(gcbo,'str');
2066       if s(1)==92 & s(2)=='d'  s = s(6:end-5);
2067       else                             s = ['\div ' s ' \div'];
2068       end;
2069       set(gcbo,'str',s);
2070     case 733
2071       imX = get(AX,'xli'); imY = get(AX,'yli');
2072       d = [-.2 .2]; dr = 'o';
2073       clic = get(gcf,'SelectionT'); clic = clic(1);
2074       if clic=='a' | (clic=='o' & getappdata(AX,'dir')=='i')
2075          d = d/-1.4; dr = 'i';
2076       end;
2077       set(AXrl,'xli',imX + diff(imX)*d);
2078       set(AX  ,'yli',imY + diff(imY)*d);
2079       if AX2  axl = get(get(AX2,'ylabel'),'str');
2080               if axl(1)~=92 | axl(2) ~= 'd';
2081               imY = get(AX2,'yli'); set(AX2,'yli',imY + diff(imY)*d);
2082               end;
2083       end;
2084       plt('grid',AX,'update');
2085       setappdata(AX,'dir',dr);
2086       axes(AX); evalQ(get(Hc(5),'use'));
2087     case 427
2088       if nargin>2 in3 = varargin{3}; else in3 = -1; end;
2089       switch in3
2090         case 3,
2091           cFIGbk = get(gcf,'color');
2092           cPLTbk = get(AX,'color');
2093           if isstr(cPLTbk) cPLTbk = get(AX2,'color'); end;
2094           cXYax  = get(AX,'xcol');
2095           cXYlbl = get(get(AX,'xlab'),'color');
2096           cGRID  = get(findobj(gcf,'type','line','use','grid'),'color');
2097           cDELTA = get(findobj(gcf,'type','line','tag','DeltaC'),'color');
2098           cTRACE = get(getappdata(gcf,'Lhandles'),'color');
2099           cTRACE = reshape([cTRACE{:}],3,length(cTRACE))';
2100           cFile  = get(findobj(gcf,'style','push','str','D'),'tag');
2101           if isempty(cFile) [cFile pth] = uiputfile('*.mat','Select file for saving colors');
2102                             cFile = [pth cFile];
2103           end;
2104           if sum(cFile)
2105              save(cFile,'cFIGbk','cPLTbk','cXYax','cXYlbl','cGRID','cDELTA','cTRACE');
2106           else disp('No file was selected'); end;
2107           return;
2108         case 4,
2109            h = findobj(gcf,'style','edit');
2110            for k=1:length(h)
2111              f = get(h(k),'use');
2112              if f & ishandle(f) close(f); end;
2113            end;
2114            closereq;
2115            return;
2116       end;
2117       set(0,'units','pix');  sz = get(0,'screens');
2118       szw = sz(3) - 302 - 4;
2119       ppos  = get(gcf,'pos');
2120       if ppos(4)<1 sp = sz(3:4); ppos = ppos .* [sp sp]; end;
2121       xp = min(ppos(1)+ppos(3)+6,szw);
2122       yp = ppos(2)+ppos(4)-85-30*length(findobj('type','fig','use',gcf));
2123       callc = 'plt(''ColorEdit'',0);';
2124       if in3==2
2125         g = gcf;
2126         figure('menu','none','number','off','Back','off','resize','off','pos',[xp yp+25 302 60],'color',[0,.4,.4],'name','Edit figure colors','use',g,...
2127                       'closereq','plt(''click'',''mark'',4);');
2128         ps = 'Figure background|Plot background|Axis color|Axis labels|Grid color|Delta cursor';
2129         pu = uicontrol('sty','pop','str',ps,'pos',[80 35 140 20],'call','plt(''MarkEdit'',2);');
2130         ed = uicontrol('sty','edit','pos', [80  5 140 22],'call','plt(''MarkEdit'',3);','ButtonD',callc,'use',0);
2131         set([ed pu],'backg',[.8,.8,.9],'foreg','black');
2132         setappdata(ed,'pop',pu); setappdata(pu,'edt',ed); setappdata(pu,'obj',[]);
2133         set(ed,'str',plt('vtoa','%6w',get(g,'color'),'  '));
2134         v2 = findobj(g,'type','axes');  a = v2(1); ap = a;
2135         if isstr(get(ap,'color')) ap = v2(end); end;
2136         set(pu,'use',{[g v2(2)];
2137                      ap;
2138                      a;
2139                      [get(a,'xlab'); get(a,'ylab'); get(v2(2),'child')];
2140                      findobj(g,'type','line','use','grid');
2141                      findobj(g,'type','line','tag','DeltaC');
2142                     });
2143         return;
2144       end;
2145       nw1 = Hc(4);
2146       tm = get(nw1,'use');
2147       actv = tm(4);
2148       iact = 14 + actv;
2149       hact = Hc(iact);
2150       clic = get(gcf,'SelectionT'); clic = clic(1);
2151       if clic=='a' | nargin>2
2152         h = findobj(gcf,'use','TraceID');  tx = [];  hb = [];  tid = [];
2153         if length(h) h = flipud(get(h,'child'));
2154                      tx = findobj(h,'type','text');  tid = tx(actv);
2155                      h = findobj(h,'type','line');
2156                      bt = get(h,'button');
2157                      if iscell(bt)
2158                        hb = h(find(cellfun('length',bt)));
2159                        if length(hb)>=actv tid = [tid hb(actv)]; end;
2160                      end;
2161         end;
2162         c = hact;
2163         h = get(c,'use'); h = h(1);
2164         if in3>=0  alll = in3;
2165         else       alll = get(Hc(11),'vis');
2166                    alll = alll(2)=='n';
2167         end;
2168         if alll c = [];  h = [];
2169                 for kk=14+1:length(Hc)
2170                   RastH = get(Hc(kk),'use');
2171                   c = [c Hc(kk)];  h = [h RastH(1)];
2172                 end;
2173                 tid = [tx; hb];
2174                 fname = 'Edit all lines';
2175         else    fname = sprintf('Edit Line %d',actv);
2176         end;
2177         callp = 'plt(''MarkEdit'',0);';
2178         calle = 'plt(''MarkEdit'',1);';
2179         figure('menu','none','number','off','Back','off','resize','off','pos',[xp yp 302 85],'color',[0,.4,.4],'name',fname,'use',gcf,...
2180                'closereq','plt(''click'',''mark'',4);');
2181         props = 'Color|LineStyle|LineWidth|Marker|MarkerSize|Xdata|Ydata|Zdata';
2182         ed1 = uicontrol('sty','edit','pos',[8 5 130 22],'call',calle,'ButtonD',callc,'use',0);
2183         pu1 = uicontrol('sty','pop','str',props,'pos',[8 35 130 20],'call',callp);
2184         uicontrol('sty','text','str', 'Line properties:','pos',[8 64 130 17]);
2185         ed2 = uicontrol('sty','edit','pos',[145 5 150 22],'call',calle,'ButtonD',callc,'use',0);
2186         pu2 = uicontrol('sty','pop','str',props,'pos',[145 35 150 20],'call',callp,'Val',5);
2187         uicontrol('sty','text','str', 'Cursor properties:','pos',[145 64 150 17]);
2188         set([ed1 ed2 pu1 pu2],'backg',[.8,.8,.9],'foreg','black');
2189         setappdata(ed1,'pop',pu1); setappdata(pu1,'edt',ed1); setappdata(pu1,'obj',h); setappdata(pu1,'tid',tid);
2190         setappdata(ed2,'pop',pu2); setappdata(pu2,'edt',ed2); setappdata(pu2,'obj',c); setappdata(pu2,'tid',[]);
2191         set(ed1,'str',plt('vtoa','%6w',get(h(1),'color'),'  '));
2192         set(ed2,'str',get(c(1),'MarkerSize'));
2193         axes(AX);
2194       else
2195         nw2 = Hc(6);
2196         axes(AX);
2197         x = get(hact,'x'); absc = get(hact,'y');
2198         p = get(hact,'par');
2199         rlim = [];
2200         if p ~= AX
2201           rlim = get(p,'yli');
2202           ylim = get(AX,'yli');
2203           absc = ylim(1) + diff(ylim) * (absc - rlim(1)) / diff(rlim);
2204         end;
2205         l = line(x,absc,'marker','s');
2206         t = text(x,absc,['   (' get(nw1,'str') ', ' get(nw2,'str') ')'],...
2207                  'fontsi',get(p,'fontsi'),'use',l,'ButtonD','plt(''marker'');');
2208         set([t l],'color',get(hact,'color'),'tag','mark');
2209         if length(rlim)
2210           set(l,'tag','markR','use',[t AX p ylim rlim]);
2211         end;
2212       end;
2213 
2214     case 674
2215       hl = findobj(gcf,'ButtonD','plt(''click'',''TGLlogy'');');
2216       if strcmp(get(AX,'Yscale'),'log')
2217            sc='linear'; st='LinY';
2218       else sc='log';    st='LogY';
2219            absc = get(AX,'yli');    if absc(1)<=0 set(AX,'yli',absc(2)*[.001 1]); end;
2220            if AX2
2221              absc = get(AX2,'yli'); if absc(1)<=0 set(AX2,'yli',absc(2)*[.001 1]); end;
2222            end;
2223       end;
2224       set(AXrl,'Yscale',sc);  set(hl,'str',st);
2225     case 673
2226       hl = findobj(gcf,'ButtonD','plt(''click'',''TGLlogx'');');
2227       if strcmp(get(AX,'Xscale'),'log')
2228            sc='linear'; st='LinX';
2229       else sc='log';    st='LogX';
2230            x = get(AX,'xli'); if x(1)<=0 set(AXrl,'xli',x(2)*[.001 1]); end;
2231       end;
2232       set(AXrl,'Xscale',sc);  set(hl,'str',st);
2233     case 653, set(AX,'TickLen',(1-plt('grid',AX,'toggle'))*[.01 .025]);
2234                    a = getappdata(gcf,'axis');
2235                    if AX2 a(end) = []; end;
2236                    for k=2:length(a)
2237                      set(a(k),'TickLen',(1-plt('grid',a(k),'toggle'))*[.01 .025]);
2238                    end;
2239 
2240     case 668
2241       if strcmp(get(gcf,'SelectionT'),'normal')
2242         f = get(gcf,'menu');
2243         if   f(1)=='f' delete(findobj(gcf,'type','uimenu')); set(gcf,'menu','none');
2244         else set(gcf,'menu','fig');
2245              v = get(0,'ShowHidden');
2246              set(0,'ShowHidden','on');
2247              a = findobj(gcf,'label','&File');
2248              uimenu(a,'Label','p&lt  save','separator','on','call','plt(''save'');');
2249              uimenu(a,'Label','pl&t  open','call','plt(''open'');');
2250              uimenu(a,'Label','plt  &hardCopy','call','plt(''hcpy'',''init'',gcf);');
2251              c = get(a,'child');
2252              set(a,'child',c([4:end-3 1:3 end-2:end]));
2253              set(0,'ShowHidden',v);
2254              liy = uimenu('label','&Color');
2255              uimenu(liy,'label','&Edit line','accel','e','call','plt(''click'',''mark'',0);');
2256              uimenu(liy,'label','&Edit all lines',       'call','plt(''click'',''mark'',1);');
2257              uimenu(liy,'label','&Edit figure colors',   'call','plt(''click'',''mark'',2);');
2258              uimenu(liy,'label','&Save figure colors',   'call','plt(''click'',''mark'',3);','separator','on');
2259         end;
2260       else
2261         k = get(gcbo,'use');  if isempty(k) k=1; end;
2262         mrk = 'none';  sty = '-';
2263         switch k
2264           case 1, mrk = 'o';  sty = 'none';
2265           case 2, mrk = 'o';
2266           case 3, k = 0;
2267         end;
2268         set(gcbo,'use',k+1);
2269         set(getappdata(gcf,'Lhandles'),'marker',mrk,'linestyle',sty);
2270       end;
2271     case 242
2272       Hc = get(CurPri(cador),'use');
2273       tm = get(Hc(4),'use');
2274       lH = get(Hc(14+tm(4)),'use');
2275       nw1 = Hc(4);  nw2 = Hc(6);  hix2 = Hc(5);  hiy2 = Hc(7);
2276       x = get(lH(1),'x');  absc = get(lH(1),'y');
2277       lmx = get(Hc(13),'xli');
2278       x12 = find(x >= lmx(1)  &  x <= lmx(2));
2279       absc = absc(x12); absc = absc(~isnan(absc)); nabsc = length(absc);
2280       p = findobj(gcf,'use','idcur');  ps = get(p,'str');
2281       switch sum(ps)
2282         case 286,  s = 'RMS'; r = plt('ftoa','%7w',sqrt(sum(absc.^2)/nabsc));
2283         case 242,  s = 'y/x';
2284                     xr = s2d(get(nw1,'str'));
2285                     r = getappdata(p,'idcur');
2286                     r = plt('ftoa','%7w',s2d(r{2})/xr);
2287                     if sum(get(hiy2,'vis'))==221 & sum(get(hix2,'vis'))==221
2288                        xr = str2num(get(hix2,'str'));
2289                        set(hiy2,'str',s2d(get(hiy2,'str'))/xr);
2290                     end;
2291         case 288,  s = '\surdx^2+y^2';
2292                     xr = s2d(get(nw1,'str'));
2293                     q = getappdata(p,'idcur');
2294                     r = plt('ftoa','%7w',abs(xr + s2d(q{2})*1j));
2295                     if sum(get(hiy2,'vis'))==221 & sum(get(hix2,'vis'))==221
2296                        xr = str2num(get(hix2,'str'));
2297                        set(hiy2,'str',abs(xr + s2d(q{3})*1j));
2298                     end;
2299         case 1110, r = getappdata(p,'idcur');  s = r{1}; set(hiy2,'str',r{3});  r = r{2};
2300         otherwise,  setappdata(p,'idcur',{ps get(nw2,'str') get(hiy2,'str')});
2301                     s = 'Avg';
2302                     r = plt('ftoa','%7w',sum(absc)/nabsc);
2303       end;
2304       set(p,'str',s); set(nw2,'str',r);
2305     case 294
2306       v3 = varargin{3};  en2 = v3 - '0';
2307       if en2>5
2308          Cpunta = get(get(gco,'par'),'curre');  en2 = en2-5;
2309          if bitget(en2,1) set(gco,'x',Cpunta(1,1)); end;
2310          if en2>1         set(gco,'y',Cpunta(1,2)); end;
2311          return;
2312       end;
2313       if en2>2
2314          set(gcf,'WindowButtonMotionFcn',['plt click EDIT ' char(v3+3) ';'],...
2315                  'WindowButtonUpFcn',['set(gcf,{''WindowButtonMotionFcn'',''WindowButtonUpFcn''},{'''',''''});' ' plt click EDIT /;']);
2316          return;
2317       end;
2318       Hc = get(CurPri(cador),'use');
2319       tm = get(Hc(4),'use');
2320       hact = Hc(14 + tm(4));
2321       mksz = get(hact,'markersize');
2322       sz = (196-get(0,'screenpix'))/10;
2323       if en2==-1
2324         RastH = get(hact,'use');  RastH = RastH(1);
2325         x = get(RastH,'x');  absc = get(RastH,'y');   kk = tm(1);
2326         x1 = get(hact,'x');  y1 = get(hact,'y');
2327         if strcmp(get(gcf,'SelectionT'),'alt') | length(getappdata(hact,'alt'))
2328              setappdata(hact,'alt','');
2329              iUlti = getappdata(hact,'ilast');  x0 = x(iUlti);  y0 = absc(iUlti);
2330              inc = 1 - 2*(iUlti>kk);  passo = max(1,abs(iUlti-kk));
2331              dx = (x1-x0)/passo; dy = (y1-y0)/passo;
2332              for k = iUlti:inc:kk x(k)=x0; absc(k)=y0; x0=x0+dx; y0=y0+dy; end;
2333         else
2334              if mksz==sz x(kk)=x1; absc(kk)=y1;
2335              else
2336                 ylim = get(Hc(13),'yli');
2337                 if y1<ylim(1) x(kk) = [];  absc(kk) = [];
2338                 else          x = [x(1:kk) x1 x(kk+1:end)];
2339                               absc = [absc(1:kk) y1 absc(kk+1:end)];
2340                 end;
2341              end;
2342         end;
2343         set(RastH,'x',x,'y',absc);
2344         setappdata(hact,'i',kk);
2345         setappdata(gcf,'NewData',1);
2346         return;
2347       end;
2348       liy = get(hact,'marker');
2349       p = get(hact,'par');
2350       v2 = findobj(gcf,'type','axes','tag','click');
2351       if en2==2 sz=sz+4; end;
2352       switch liy(1)
2353         case '^',  k = 1;
2354         case '>',  k = 2;
2355         case 'd',  k = 3;
2356         otherwise, k = 0;
2357       end;
2358       switch k + 4*isempty(getappdata(gcf,'DataEdit')) + 8*~en2
2359         case {1,5},   c = '>';  b = 'plt click EDIT 3;';
2360         case {3,4,7}, c = '^';  b = 'plt click EDIT 4;';
2361         case {0,2,6}, c = 'd';  b = 'plt click EDIT 5;';
2362         otherwise,              b = '';
2363       end;
2364       if p ~= v2  set(v2,'vis','of'); end;
2365       if length(b) ~= length(get(hact,'ButtonD'))
2366         ch = get(p,'child');
2367         if length(b)  a = find(ch==hact);
2368                       setappdata(hact,'swapp',{a liy mksz});
2369         else          a = getappdata(hact,'swapp');
2370                       c = a{2};  sz = a{3};  a = a{1};
2371                       if p ~= v2 set(v2,'vis','on'); end;
2372         end;
2373         sv = ch(a); ch(a) = ch(1); ch(1) = sv;  set(p,'child',ch);
2374       end;
2375       set(hact,'marker',c,'markersize',sz,'ButtonD',b);
2376       axes(AX);
2377     end;
2378     plt('grid',AX,'update');
2379   else y8 = y2/8192;  j = y8(2);
2380        Mtipo = get(gcf,'SelectionT');
2381        p = {'color'; 'marker'; 'linestyle'; 'linewidth'}; q = {[0 .3 .3] 'none' '-' 9};
2382        if strcmp(Mtipo,'normal')
2383           k = y8(1);  s = get(k,'vis');
2384           mk = getappdata(j,'mk');
2385           if s(2)=='f' set(k,'vis','on'); set(j,'fonta','nor','fontw','bol'); set(mk,p,get(k,p));
2386           else         set(k,'vis','of'); set(j,'fonta','ita','fontw','nor'); set(mk,p,q);
2387           end;
2388        else
2389           Mtipo = strcmp(Mtipo,'open');
2390           for k = get(get(j,'par'),'child')'
2391              t = get(k,'ButtonD');  bk = findstr(t,'[');  w = get(k,'type');
2392              if w(1)=='t' & length(bk)
2393                t = s2i(t(bk+1:findstr(t,' ')))/8192;
2394                mk = getappdata(k,'mk');
2395                if Mtipo | k==j  set(t,'vis','on');  set(k,'fonta','nor','fontw','bol');  set(mk,p,get(t,p));
2396                else               set(t,'vis','of');  set(k,'fonta','ita','fontw','nor');  set(mk,p,q);
2397                end;
2398              end;
2399           end;
2400        end;
2401        DuaC = getappdata(AX,'DualCur');
2402        Lh = getappdata(AX,'Lhandles');
2403        if DuaC v = get(Lh(DuaC),'vis'); else v = 'off'; end;
2404        plt('cursor',cador,'set','aux',v);
2405        ls = findobj(Lh,'par',AX);
2406        v = 'off';
2407        for k=1:length(ls)
2408          if strcmp(get(ls(k),'vis'),'on') v = 'on';  break; end;
2409        end;
2410        set(get(AX,'Ylabel'),'vis',v);
2411        if AX2
2412          ls = findobj(Lh,'par',AX2);
2413          v = 'off';  izquC = get(AX2,'color');
2414          for k=1:length(ls)
2415            if strcmp(get(ls(k),'vis'),'on') v = 'on';  izquC = 'none';
2416                                               set(AX2,'xli',get(AX,'xli'));
2417                                               break;
2418            end;
2419          end;
2420          set(AX2,'vis',v);  set(AX,'color',izquC);
2421        end;
2422        TIDback = getappdata(get(j,'par'),'TIDcback');
2423        if isempty(TIDback) return; end;
2424        evalRep(TIDback,{'@TID',int2str(y2(2)),'@LINE',int2str(y2(1))});
2425        axes(AX);
2426   end;
2427 
2428 case 708,
2429   v2 = getappdata(gcf,'axis');  v2 = v2(1);
2430   cid = getappdata(gcf,'cid');  fct = length(cid);
2431   ylbl = get(v2,'Ylabel');
2432   obj = getappdata(ylbl,'obj');
2433   if length(obj)
2434     setappdata(ylbl,'obj',[]);
2435     for k=1:fct plt('cursor',cid(k),'set','visON'); end;
2436     if obj(1) set(obj,'vis','on'); end;
2437   else
2438     for k=1:fct plt('cursor',cid(k),'set','visOFF'); end;
2439     a = findobj(gcf,'str','Zout');
2440     if length(a) a = get(a(1),'par');
2441                  obj = [a; get(a,'child')];
2442                  set(obj,'vis','of');
2443     else         obj = 0;
2444     end;
2445     setappdata(ylbl,'obj',obj);
2446   end;
2447 
2448 case 944,
2449   h = findobj(gcf,'use','TraceID');
2450   if isempty(h) return; end;
2451   h = flipud(findobj(get(h,'child'),'type','text'));
2452   lix = length(h);
2453   e = varargin{2};
2454   e(find(e>lix)) = [];
2455   v = zeros(lix,1);
2456   v(e) = 1;
2457   v = find(xor(v,3-cellfun('length',get(getappdata(gcf,'Lhandles'),'vis'))));
2458   if isempty(v) return; end;
2459   b = get(h,'button');
2460   eval([b{v}]);
2461 
2462 case {959, 534},   for f = findobj('type','fig')'
2463                                b = get(f,'ButtonD');
2464                                if length(b)>3 & strcmp(b(1:4),'plt(')
2465                                  set(f,'closereq','closereq');
2466                                  close(f);
2467                                end;
2468                              end;
2469 case 632,  set(flipud(findobj(get(findobj(gcf,'use','TraceID'),'child'),'type','text')), ...
2470                       {'str'},varargin{2}(:));
2471 case 774, Volv1 = '11May10'; Volv2 = 0;
2472 case 425,    eval('plt(''helpv'',0);');
2473 
2474 otherwise,
2475 cTRACE  = [0  1  0;   1  0  1;   0  1  1;   1  0  0;  .2 .6  1;
2476            1  1  1;   1 .6 .2;   0  0  1;   1 .2 .6;  .2  1 .6;
2477           .6  1 .2;  .6 .2  1;   1  1  0;   0 .6  0;  .6  0 .6;
2478            0 .6 .6;  .6 .6  0;  .7 .7 .7;  .6  0  0;  .2 .2 .7;
2479           .5 .5 .5;  .7 .2 .2;  .2 .7 .2;   0  0 .6;  .3 .3 .3;
2480            0 .9 .4;   0 .4 .9;  .9 .4  0;  .4 .9  0;  .9  0 .4;
2481           .4  0 .9;  .8 .5 .5;  .5 .8 .5;  .5 .5 .8;];
2482 posFIG  = [9 45 700 525];
2483 posFIGd = 1;
2484 o4      = ones(1,4);
2485 axisPOS = o4;
2486 idPOS   = o4;
2487 POScid  = [3,-.075];
2488 cFIGbk  = [.25 .15 .15];
2489 cPLTbk  = [0   0   0  ];
2490 cXYax   = [1   1   1  ];
2491 cXYlbl  = [.7 .8 .95];
2492 CURcDEF = [1   1   .50];
2493 cCRSR = CURcDEF;
2494 cDELTA  = [1   0   0  ];
2495 cGRID   = [.3  .3 .3  ];
2496 for k=35:99 cTRACE = [cTRACE; .75 * cTRACE(k-34,:)]; end;
2497 cDEFAULT = cTRACE;
2498 LabelX = 'X axis';
2499 LabelY = 'Y axis (Left)';
2500 LabelYr = 'Y axis (Right)';
2501 Titulo = '';
2502 LiNueva = '';
2503 NombreF = 'plt';
2504 Xlim   = 'default';
2505 Ylim   = 'default';
2506 YlimR  = 'default';
2507 Xscale = 'linear'; Xsc = 'LinX';
2508 Yscale = 'linear'; Ysc = 'LinY';
2509 Quiv = 0;
2510 cabeQ = [.3 .3];
2511 Reja = 'on';
2512 Mbar = 0;
2513 Xslide = 0;
2514 ayudaF = '';
2515 cFile = '#';
2516 ENApre = ones(1,2);
2517 ENAcur = ones(1,99);
2518 DISras = 0;
2519 estilo  = 0;
2520 marca = 0;
2521 AXr = 0;
2522 Derecho = [];
2523 DuaC = 0;
2524 TIDcback = '';
2525 Ridcol = 0;
2526 Mcaja = [1 1 1 1 0 1 1 1 1];
2527 RASid = reshape(sprintf('Line%2d',1:99),6,99)';
2528 TRACEmk = 0;
2529 Xstring = '';
2530 Ystring = '';
2531 moveCB = '';
2532 axisCB = '';
2533 aConex = 1;
2534 SubPlot = 0;
2535 NoCursor = 0;
2536 GridEr = 'norm';
2537 aLp = {}; aLv = {};
2538 aRp = {}; aRv = {};
2539 lLp = {}; lLv = {};
2540 lRp = {}; lRv = {};
2541 lXp = {}; lXv = {};
2542 sz = posFIG([3 4 3 4]);
2543 posAX   = [.1429  .0933  .8329  .8819];
2544 posPICO = [.0071  .0441  .0286  .0343];
2545 posVALY = [.0071  .0060  .0286  .0343];
2546 posDEL  = [.0386  .0194  .0300  .0457];
2547 posSLDR = [.0071  .0080  .1250  .0200];
2548 posCXL  = [.1386  .0095  .0200  .0410];
2549 posC1X  = [.1643  .0076  .1000  .0450];
2550 posC2X  = [.2686  .0076  .1000  .0450];
2551 posCYL  = [.7609  .0095  .0200  .0410];
2552 posC1Y  = [.7865  .0076  .1000  .0450];
2553 posC2Y  = [.8908  .0076  .1000  .0450];
2554 posAX2  = [.0070  .0870  .0580  .0000];
2555 
2556 Sfuente = (196-get(0,'screenpix'))/10;
2557 if sum(lower(varargin{1})) == 310
2558      FIG = varargin{2};  figure(FIG);  set(FIG,'vis','of');
2559 else FIG = figure('menu','none','number','off','Back','off','vis','of');
2560 end;
2561 set(FIG,'PaperPositionMode','auto','invert','off','PaperOrient','land',...
2562         'PaperUnits','norm','DoubleBuf','on','Invert','on');
2563 AX = axes('units','nor','fontsi',Sfuente,'Tag','click');
2564 Volv1 = [];  nt = 0;
2565 kparam = [];
2566 k = 1;
2567 pp = 1;
2568 while k<=nargin
2569   absc  = varargin{k};  k=k+1;
2570   if ischar(absc)
2571     if k>nargin
2572        disp('Error using ==> plt.  Not enough input arguments.');
2573        disp('For help on using plt, type "help plt"');
2574        eval('plt(''helpv'',0);');
2575        return;
2576     end;
2577     kparam = [kparam k-1 k];
2578     absc = lower(absc);  yy = varargin{k};   k=k+1;
2579     pfx = zeros(1,5);
2580     while 1
2581       b = findstr(absc(1),'+-<>.');
2582       if isempty(b) break; end;
2583       pfx(b) = 1;  absc(1) = [];
2584     end;
2585     switch sum(absc)
2586       case 546,     Titulo    = yy;
2587       case 442,      Xlim     = yy;
2588       case 443,      Ylim     = yy;
2589       case 557,     if absc(1)=='y'  YlimR = yy;  AXr = 1; else cXYax = yy; end;
2590       case 632,    LabelX   = yy;
2591       case 633,    LabelY   = yy;
2592       case 747,   LabelYr  = yy;  AXr = 1;
2593       case 542,     Derecho    = yy;  AXr = 1;
2594       case 752,   DuaC  = yy;
2595       case 727,   NombreF  = yy;
2596       case 640,    cPLTbk   = yy;
2597       case 614,    cFIGbk   = yy;
2598       case 626,    cTRACE   = yy;
2599       case 621,    cDELTA = yy;
2600       case 654,    cXYlbl   = yy;
2601       case 769,   cCRSR  = yy;
2602       case 521,     if any(yy<0) GridEr = 'xor'; end;
2603                        cGRID    = abs(yy);
2604       case 676,    if iscell(yy) estilo = char(yy);   else estilo = yy;   end;
2605       case 757,   if iscell(yy) marca = char(yy);  else marca = yy;  end;
2606       case 732,   if iscell(yy) RASid = char(yy); else RASid = yy; end;
2607       case 743,   if length(yy)==1 & yy  yy = [yy (yy+.9)/2 .9]; end;
2608                        TRACEmk = yy;
2609       case 638,    ENAcur   = yy;
2610       case 847,  DISras = yy;
2611       case 885,  if ~yy(3) yy(3) = yy(4)/.944; elseif ~yy(4) yy(4) = yy(3)*.944; end;
2612                        posFIG   = yy;
2613                        posFIGd  = 0;
2614       case 775,   axisPOS  = yy(1:4);
2615                        switch length(yy) case 5, idPOS(3)=yy(5); case 8, idPOS=yy(5:8); end;
2616       case 821,  TIDcback = yy;
2617       case 975, Ridcol = yy;
2618       case 783,   Xstring  = yy;
2619       case 784,   Ystring  = yy;
2620       case 873,  LiNueva = yy;
2621       case 635,    ENApre   = yy;
2622       case 668,    Quiv     = yy;  if min(yy)<2 disp('No quiver tail position '); return; end;
2623       case 515,     cabeQ    = yy;
2624       case 841,  ayudaF = yy;
2625       case 959, cFile    = yy;
2626       case 846,  cPLTbk = get(0,'defaultaxescolor'); cGRID = .4*cPLTbk + .3;
2627                        cFIGbk = get(0,'defaultfigurecolor');
2628                        cXYax  = get(0,'defaultaxesxcolor');  cXYlbl = cXYax;
2629                        cTRACE = get(0,'defaultaxescolororder');
2630                        if length(yy(1,:))==3 cTRACE = [cTRACE; yy]; end;
2631       case 636,    moveCB = yy;
2632       case 634,    axisCB = yy;
2633       case 867,  aConex = yy;
2634       case 777,   SubPlot = yy;
2635       case 310,
2636       case 780,   kq = 0;
2637         while kq < length(yy)
2638           kq = kq + 1;
2639           switch yy(kq)
2640             case 'T', Reja = 'off';
2641             case 'M', Mbar = 1;
2642             case 'X', Xsc = 'LogX';  Xscale = 'Log';
2643             case 'Y', Ysc = 'LogY';  Yscale = 'Log';
2644             case 'S', Xslide = 1;
2645             case 'N', NoCursor = 1;
2646             case '-', kq = kq + 1;  km =findstr(yy(kq),'HXYGPFMZRA');
2647                       if length(km) if km==10 Mcaja=0; else Mcaja(km)=0; end; end;
2648             case '+', kq = kq + 1;  km =findstr(yy(kq),'HXYGPFMZRA');
2649                       if length(km) if km==10 Mcaja=ones(1,9);
2650                                     else if pp & km~=5 Mcaja=0; pp=0; end;
2651                                          Mcaja(km)=1;
2652                                     end;
2653                       end;
2654           end;
2655         end;
2656       otherwise,
2657          if sum(pfx)
2658            if pfx(1) aLp = [aLp {absc}]; aLv = [aLv {yy}]; end;
2659            if pfx(2) aRp = [aRp {absc}]; aRv = [aRv {yy}]; end;
2660            if pfx(3) lLp = [lLp {absc}]; lLv = [lLv {yy}]; end;
2661            if pfx(4) lRp = [lRp {absc}]; lRv = [lRv {yy}]; end;
2662            if pfx(5) lXp = [lXp {absc}]; lXv = [lXv {yy}]; end;
2663          else
2664            if iscell(yy)
2665              if length(yy)==length(Volv1)
2666                absc = {absc};
2667                yy = yy(:);
2668              else fprintf('Warning: For parameter %s, found %d elements but expected %d\n',absc,length(yy),length(Volv1));
2669              end;
2670            end;
2671            set(Volv1,absc,yy);
2672          end;
2673     end;
2674   else
2675      if k<=nargin         yy = varargin{k}; else yy = 'a'; end;
2676      if ~isreal(absc)        yy = imag(absc);  absc = real(absc);
2677      elseif isnumeric(yy) k = k+1;
2678      else                 yy=absc; absc=1:length(yy);
2679      end;
2680      nxt = length(Volv1) + 1;
2681      if length(find(Quiv==nxt))
2682         a = Volv1(colaQ);
2683         x0 = get(a,'x');  x0 = transpose(x0(:));
2684         y0 = get(a,'y');  y0 = transpose(y0(:));
2685         x1 = transpose(absc(:));
2686         y1 = transpose(yy(:));
2687         rNaN = repmat(NaN,size(y1));
2688         x01 = x0+x1;  y01 = y0+y1;
2689         a = x01-cabeQ(1)*(x1+cabeQ(2)*y1);
2690         b = x01-cabeQ(1)*(x1-cabeQ(2)*y1);
2691         absc  = [x0; x01; rNaN; a; x01; b; rNaN];
2692         a = y01-cabeQ(1)*(y1-cabeQ(2)*x1);
2693         b = y01-cabeQ(1)*(y1+cabeQ(2)*x1);
2694         yy = [y0; y01; rNaN; a; y01; b; rNaN];
2695         absc = absc(:);  yy = yy(:);
2696         ENAcur(nxt) = 0;
2697         nxt = 0;
2698      end;
2699      H = line(absc,yy);  Volv1 = [Volv1; H];   nt = nt + length(H);
2700      if nxt colaQ = nt; end;
2701   end;
2702 end;
2703 
2704 if iscell(Ylim) YlimR = Ylim{2}; Ylim = Ylim{1}; AXr = 1; end;
2705 nSP = length(SubPlot) - 1;
2706 if (iscell(LabelX) | iscell(Xlim)) & ~nSP & nt>1 SubPlot = [100 -50 100]; nSP = 2; end;
2707 if iscell(LabelX) LabelXr = LabelX{2};  LabelX = LabelX{1}; else LabelXr = 'X axis'; end;
2708 if iscell(Xlim)   Xlimr   = Xlim{2};    Xlim   = Xlim{1};   else Xlimr   = 'default'; end;
2709 
2710 nSPl = nSP;
2711 nSPr = 0;
2712 SPw = 1;
2713 if nSP
2714   SubPlot = SubPlot/100;
2715   k = find(SubPlot<0);
2716   if length(k) SPw = -SubPlot(k);
2717                SubPlot(k) = [];      nSP = nSP-1;
2718                nSPr = nSP + 2 - k;   nSPl = nSP - nSPr;
2719   end;
2720 end;
2721 nID = nt - nSP;
2722 if nID>99 & RASid disp(sprintf('Max # of traceIDs = %d',99)); return; end;
2723 if ~iscell(LabelY) LabelY = {LabelY}; end;
2724 if length(LabelY) >= nSP+2  LabelYr = LabelY{nSP+2}; AXr = 1; end;
2725 setappdata(FIG,'params',varargin(kparam));
2726 k = sum(Ridcol);
2727 if k  Ridcol = [nID-k Ridcol]; else Ridcol = nID; end;
2728 ntid = max(Ridcol);
2729 ncol = length(Ridcol);
2730 if ncol>1 & all(axisPOS == o4) & all(idPOS == o4)
2731   idPOS(3) = ncol;
2732   axisPOS = [.4 + ncol/2, 1, (210-11*ncol-ncol^2)/200, 1];
2733 end;
2734 if all(idPOS == o4) & (nt<6 | isempty(LabelY{1})) & ~nSP
2735    idPOS(3) = 1.2;
2736 end;
2737 fsep = length(findstr(cFile,filesep));
2738 if length(cFile) & ~fsep
2739   foobar = 0;
2740   if exist('foobar')
2741        liy = feval('dbstack');
2742        if length(liy)
2743           lix = liy(end).name;
2744           nq = findstr('(',lix);
2745           if length(nq) lix = lix(1:nq(1)-2); end;
2746           np = findstr(filesep,lix);
2747           if length(np) np=np(end); else np=0; end;
2748           if length(lix)-np>30 & length(liy)>1  lix = liy(end-1).name; end;
2749           liy = feval('which',lix);
2750        end;
2751   else liy = GetExe;
2752   end;
2753   [pth, name] = fileparts(liy);
2754   if cFile(1) == '#' cFile = [name 'Color']; end;
2755   cFile = fullfile(pth,[cFile '.mat']);
2756 end;
2757 if fsep cFile = [cFile '.mat']; end;
2758 if exist(cFile) == 2
2759   load(cFile);
2760 end;
2761 if length(ENAcur)<nt  ENAcur = [ENAcur ones(1,nt-length(ENAcur))]; end;
2762 if length(DISras)<nt  DISras = [DISras zeros(1,nt-length(DISras))]; end;
2763 nC = length(cTRACE(:,1));
2764 if length(Titulo)
2765    axisPOS = axisPOS .* [1 1 1 .96];
2766    ntx = findstr('[TexOff]',Titulo);
2767    if length(ntx)==1
2768         Titulo(ntx:ntx+7) = [];
2769         title(Titulo,'color',cXYlbl,'HandleV','on','interp','none');
2770    else title(Titulo,'color',cXYlbl,'HandleV','on');
2771    end;
2772 end;
2773 setappdata(AX,'DualCur',DuaC);
2774 if AXr & nID>1
2775    if isempty(Derecho) Derecho = nID; end;
2776    axisPOS = axisPOS .* [1 1 .94 1];
2777    if ischar(YlimR)
2778      mn = inf;  mx = -inf;
2779      for k=Derecho
2780        absc = get(Volv1(k),'y');  mn = min(mn,min(absc));  mx = max(mx,max(absc));
2781      end;
2782       df=(mx-mn)/20; YlimR=[mn-df mx+df];
2783       if ~diff(YlimR) YlimR = [mn mn+max(1e-12,mn*1e-12)];  end;
2784    end;
2785    if length(Derecho)==1 yclr = cTRACE(mod(Derecho-1,nC)+1,:); else yclr = cXYax; end;
2786    AXr = axes('units','nor','fontsi',Sfuente,'YAxisLoc','right','yli',YlimR,...
2787               'color',cPLTbk,'xcol',cXYax,'ycol',yclr,'xtick',[]);
2788    if ~aConex LabelYr = ['\div ' LabelYr ' \div']; end;
2789    ylabel(LabelYr,'color',yclr,'HandleV','on','ButtonD','plt click link;');
2790    set(Volv1(Derecho),'par',AXr);
2791    axes(AX);
2792    AXrl = [AX AXr];
2793 else AXrl = AX; set(AX,'Box','On');
2794 end;
2795 mrk = repmat('+',1,nt);
2796 mrk(Derecho) = 'o';
2797 if DuaC
2798   if length(find(DuaC==Derecho)) mrk(DuaC)='s'; else mrk(DuaC) = '*'; end;
2799 end;
2800 ceq = isequal(cCRSR,CURcDEF);  cEXcaja = cCRSR;
2801 if ceq & sum(cPLTbk)>2 cEXcaja=1-cEXcaja; cCRSR=1-cCRSR; end;
2802 curclr = [.7 .7 .7; 0 0 0; cEXcaja; cDELTA];
2803 ENAcurS = sum(ENAcur(1:nt));
2804 if ceq & ENAcurS>1 cCRSR = [0 0 0]; end;
2805 for k=1:nt  set(Volv1(k),'color',cTRACE(mod(k-1,nC)+1,:));
2806             if ENAcur(k) curclr=[curclr; cCRSR]; else  set(Volv1(k),'Tag','SkipCur'); end;
2807 end;
2808 if estilo  if length(estilo(:,1)) < nt estilo=estilo'; end;
2809           for k=1:nt
2810             if length(findstr(estilo(k,1),'+o*.xsd^v<>ph'))
2811                   set(Volv1(k),'LineStyle','none','Marker',estilo(k,1));
2812             else  set(Volv1(k),'LineStyle',estilo(k,:));  end;
2813           end;
2814 end;
2815 if marca if length(marca(:,1)) < nt marca=marca'; end;
2816           for k=1:nt set(Volv1(k),'Marker',marca(k,:)); end;
2817 end;
2818 for k=1:nt if DISras(k) set(Volv1(k),'vis','of'); end; end;
2819 
2820 Ret1a = Volv1;
2821 axS = [];
2822 if nSP
2823   if posFIGd posFIG([3 4]) = [840 570]; end;
2824   ySP = .11;  ySPr = ySP;
2825   ySP  = cumsum([ySP   (1-ySP)*SubPlot(1:nSPl+1)]);
2826   hSP  = diff(ySP)  - .03;  ySP  = ySP  + .012;
2827   dx = ((AXr>0)*.025 - .07) * (nSPr>0);
2828   posAX = [posAX(1) ySP(1) (posAX(3)+dx)*SPw hSP(1)];
2829   dx = posFIG(3);  dx1 = 64/dx;  dx2 = 14/dx;  dx3 = 67/dx;  dx4 = 19/dx;
2830   dy = posFIG(4);  dy1 = 20/dy;  y1a = .0076;  y2a = y1a + 24/dy;
2831   x1 = .1386;  x2 = x1+dx4;  x3 = x2+dx3;  x4 = x2+nSPl*dx3;
2832   posCXL = [x1 y2a dx2 dy1];
2833   posCYL = [x1 y1a dx2 dy1];
2834   posC1X = [x2 y2a dx1 dy1];
2835   posC2X = [x3 y2a dx1 dy1];
2836   posC1Y = [x4 y1a dx1 dy1];
2837   posC2Y = posC1Y + [dx3 0 0 0];
2838   if nSPr
2839     ySPr = cumsum([ySPr (1-ySPr)*SubPlot(nSPl+2:end)]);
2840     hSPr = diff(ySPr) - .03;  ySPr = ySPr + .012;
2841     SPx = sum(posAX([1 3])) + .075;
2842     x1 = SPx-.03;  x2 = x1+dx4;  x3 = x2+dx3;  x4 = x2+(nSPr-1)*dx3;
2843     posCXLr = [x1 y2a dx2 dy1];
2844     posCYLr = [x1 y1a dx2 dy1];
2845     posC1Xr = [x2 y2a dx1 dy1];
2846     posC2Xr = [x3 y2a dx1 dy1];
2847     posC1Yr = [x4 y1a dx1 dy1];
2848     posC2Yr = posC1Yr + [dx3 0 0 0];
2849     p2r = [posCXLr;posCYLr;posC1Xr;posC2Xr;posC1Yr;posC2Yr];
2850   end;
2851   for k=1:nSP
2852     l = Volv1(nt+k-nSP);
2853     Ret1a(nt+k-nSP) = 0;
2854     c = get(l,'color');
2855     a = axes('ycol',c,'xcol',c);
2856     setappdata(a,'Lhandles',l);
2857     set(l,'par',a);
2858     if length(LabelY)>k ylabel(LabelY{k+1}); end;
2859     if k == nSPl+1 xlabel(LabelXr); end;
2860     axS = [axS a];
2861   end;
2862 end;
2863 set(AXrl,'pos',posAX.*axisPOS,'Xscale',Xscale,'Yscale',Yscale);
2864 if ischar(Ylim)
2865    Ylim = get(AX,'yli');
2866 end;
2867 Ret1a(find(~Ret1a)) = [];
2868 setappdata(AX,'Lhandles',Ret1a);
2869 setappdata(FIG,'Lhandles',Volv1);
2870 axData = [AX axS];
2871 if AXr axData = [axData AXr]; end;
2872 setappdata(FIG,'axis',axData);
2873 
2874 pb = [posPICO;posVALY;posDEL];
2875 if Xslide
2876    posAX2(2) = posAX2(2) + .028;  pb(:,2) = pb(:,2) + .028;  pb = [pb; posSLDR];
2877 end;
2878 cador = plt('cursor',AXrl,'init',...
2879   [posCXL;posCYL;posC1X;posC2X;posC1Y;posC2Y;pb],...
2880   curclr,'', mrk, 0.8*Sfuente,'','on',[],LiNueva);
2881 
2882 set(findobj(gcf,'style','push','str','D'),'use',cDEFAULT,'tag',cFile);
2883 rasHT = sprintf('plt(''cursor'',%d,',cador);
2884 set(AXrl,'use',cador);
2885 Izqu = setdiff(1:nt-nSP,Derecho);
2886 nIzqu = length(Izqu);
2887 if (AXr | nSP) & nIzqu==1
2888   yclr = cTRACE(mod(Izqu-1,nC)+1,:); leftclr=yclr;
2889 else yclr = cXYax;  leftclr = cXYlbl;
2890 end;
2891 set(AX,'xcol',cXYax,'ycol',yclr);
2892 if ischar(Xlim)
2893   if nIzqu Xlim = get(AX,'xli'); else Xlim = get(AXr,'xli'); end;
2894 end;
2895 [prefix xmult] = plt('metricp',max(abs((Xlim))));
2896 if ENApre(1) & xmult~=1
2897   for k=1:nt set(Volv1(k),'x',xmult*get(Volv1(k),'x')); end;
2898   LabelX = [prefix LabelX];
2899 else xmult = 1;
2900 end;
2901 set(AXrl,'xli',Xlim*xmult);
2902 [prefix mult] = plt('metricp',max(abs((Ylim))));
2903 ymult = ones(1,nt);
2904 if ENApre(2) & mult~=1
2905   for k=1:nIzqu
2906      kk = Volv1(Izqu(k));
2907      set(kk,'y',mult*get(kk,'y'));
2908      ymult(Izqu(k)) = mult;
2909   end;
2910   LabelY{1} = [prefix LabelY{1}];
2911 else mult = 1;
2912 end;
2913 set(AX,'yli',Ylim*mult);
2914 setappdata(FIG,'xymult',[xmult ymult]);
2915 xlabel(LabelX,'color',cXYlbl,'HandleV','on');
2916 hYlab = ylabel(LabelY{1},'color',leftclr,'HandleV','on');
2917 plt('cursor',cador,'set','moveCB2',[rasHT '''MVcur'');']);
2918 plt('grid',AX,'init',cGRID,GridEr);
2919 set(AX,'TickLen',(1-plt('grid',AX,Reja))*[.01 .025]);
2920 axes('pos',posCYL+[0 0 .2 0],'vis','of');
2921 text(-.02,.45,'','fontsi',Sfuente,'horiz','right','ButtonD','plt click RMS;','use','idcur');
2922 if length(Xstring)
2923   if ischar(Xstring) & Xstring(1) == '?'
2924         Xstring(1)=[];
2925         a = uicontrol('sty','edit','units','nor','pos',posC2X.*[1 1 1.7 1],'horiz','cent',...
2926                  'backg',[.2 .2 .2],'foreg',[1 1 .3]);
2927   else  a = text(-2.22,.45,'','color',cXYlbl);
2928   end;
2929   set(a,'fontsi',Sfuente,'tag','xstr');
2930   setappdata(a,'evl',Xstring);
2931   ch = get(FIG,'child');
2932   ch([1 end-1]) = ch([end-1 1]);  set(FIG,'child',ch);
2933 end;
2934 if length(Ystring)
2935   if ischar(Ystring) & Ystring(1) == '?'
2936         Ystring(1)=[];
2937         a = uicontrol('sty','edit','units','nor','pos',posC2Y,'horiz','cent',...
2938                  'backg',[.2 .2 .2],'foreg',[1 1 .3]);
2939   else  a = text(.6,.45,'','color',cXYlbl);
2940   end;
2941   set(a,'fontsi',Sfuente,'tag','ystr');
2942   setappdata(a,'evl',Ystring);
2943   ch = get(FIG,'child');
2944   ch([1 end-2]) = ch([end-2 1]);  set(FIG,'child',ch);
2945 end;
2946 nMenu = sum(Mcaja);
2947 aid = 0;
2948 ahi = .035*nMenu;
2949 if nID>1 & RASid
2950   h = 19*ntid;
2951   ahip = ahi * sz(2);
2952   hr = (sz(2)-85) / (h+ahip);
2953   if hr<1 ahi = ahi*hr;  h = h*hr;  end;
2954   aidp = idPOS.*[3 sz(2)-4-h 50 h]./sz;
2955   aid = axes('xli',[0 ncol],'yli',[-ntid 0]-.5,'color',cPLTbk,'xcol',cFIGbk,'ycol',cFIGbk,'XtickL',' ','YtickL',' ','TickLen',[0 0]','use','TraceID',...
2956         'units','nor','pos',aidp);
2957   setappdata(aid,'TIDcback',TIDcback);
2958   cRid = cPLTbk + .16*(2*(cPLTbk<.5)-1);
2959   fila = 1;  col = 1;
2960   bln = 0;
2961   lpl = {'color'; 'marker'; 'linestyle'; 'linewidth'};
2962   [tn tw] = size(RASid);
2963   if nID>tn RASid = [RASid; repmat(' ',nID-tn,tw)]; end;
2964   for k=1:nID
2965     if length(find(k==Derecho)) cR=cRid; line(col-[1 .05],[0 0]-fila,'color',cR,'LineWidth',9);
2966     else                      cR=cPLTbk;
2967     end;
2968     s = RASid(k,:);
2969     if all(s==' ') bln=bln+1; continue; end;
2970     d = text(col-.93,-fila,s);
2971     ms = sprintf('plt(''click'',[%d %d]);',8192*Volv1(k),8192*d);
2972     set(d,'fontsi',Sfuente,'fontw','bol','color',cTRACE(mod(k-1,nC)+1,:),'ButtonD',ms);...
2973     if TRACEmk
2974       mk = line(TRACEmk,TRACEmk*0-k,lpl,get(Volv1(k),lpl),'ButtonD',ms);
2975       setappdata(d,'mk',mk);
2976       if TRACEmk(1)<.25 set(d,'color',cR); end;
2977     else mk = [];
2978     end;
2979     if DISras(k) set(d,'fonta','ita','fontw','nor'); set(mk,lpl,{[0 .3 .3] 'none' '-' 9}); end;
2980     fila = fila+1;
2981     if fila>Ridcol(col) col=col+1; fila=1; end;
2982   end;
2983   if bln & ncol==1
2984      dy = aidp(4) * (1 - (nID-bln)/nID);
2985      set(aid,'yli',[bln-nID 0]-.5,'pos',aidp+[0 dy 0 -dy]);
2986   end;
2987 end;
2988 if nMenu
2989   posAX2(4) = ahi;  c = (cXYax + cFIGbk)/2;
2990   amb = axes('units','nor','pos',posAX2,'yli',[-nMenu 0]-.45,'Box','On','XaxisLoc','top',...
2991            'color',cFIGbk,'xcol',c,'ycol',c,'XtickL',' ','YtickL',' ','TickLen',[0 0]','Tag','MenuBox');
2992   b=0; t=[];
2993   txt = { 'Help',    Xsc,       Ysc,       'Grid',    'Print',   'Menu',    'Mark',    'Zout',   'XY\leftrightarrow'};
2994   btn = { 'plt(''helpv'',1);'; 'plt(''click'',''TGLlogx'');'; 'plt(''click'',''TGLlogy'');'; 'plt(''click'',''TGLgrid'');'; 'plt(''hcpy'',''init'',gcf);'; 'plt(''click'',''TGLmenu'');'; 'plt(''click'',''mark'');'; 'plt(''click'',''ZoomOut'');'; ''   };
2995   for k=1:length(Mcaja)
2996     if Mcaja(k)
2997        b=b-1;  t = [t text(.5,b,txt{k},'interp','tex')];  bt = btn{k};
2998        if isempty(bt) bt = [rasHT '''scale'',''old'');']; end;
2999        set(t(end),'ButtonD',bt);
3000        if k==1 set(t(1),'use',ayudaF); end;
3001     end;
3002   end;
3003   set(t,'fontsi',Sfuente,'color',cXYlbl,'horiz','cent');
3004 end;
3005 CurPri = getappdata(0,'CurMain');
3006 Hc = get(CurPri(cador),'use');
3007 set(Hc(4),'ButtonD','plt click EDIT 1;');
3008 set(Hc(6),'ButtonD','plt click EDIT 2;');
3009 if posFIG(1)<0 posFIG = abs(posFIG);
3010 else for k=fliplr(findobj('Type','figure')')
3011       if get(k,'pos') == posFIG  posFIG = posFIG + [30 25 0 0]; end;
3012      end;
3013 end;
3014 set(FIG,'pos',posFIG,'Name',NombreF,'color',cFIGbk,'CloseReq',...
3015  [rasHT '''clear'');delete(findobj(''type'',''fig'',''user'',gcf));closereq;']);
3016 if Mbar plt('click','TGLmenu'); end;
3017 ac = plt('cursor',cador,'get','activeLine');
3018 t = Volv1(ac); x=get(t,'x'); absc=get(t,'y'); k=round(length(x)/2);
3019 set(AX,aLp,aLv);
3020 set(get(AX,'Ylabel'),lLp,lLv);
3021 set(get(AX,'Xlabel'),lXp,lXv);
3022 if AXr set(AXr,aRp,aRv);
3023        set(get(AXr,'Ylabel'),lRp,lRv);
3024 end;
3025 xyll = get(AX,{'xli' 'yli'});
3026 plt('cursor',cador,'mainCur',k,x(k),absc(k),0,get(t,'color'));
3027 setappdata(AX,'xstr',findobj(gcf,'tag','xstr'));
3028 setappdata(AX,'ystr',findobj(gcf,'tag','ystr'));
3029 set(AX,{'xli' 'yli'},xyll);
3030 if DuaC & ~DISras(DuaC) plt('cursor',cador,'auxCur');
3031 else                            plt('cursor',cador,'set','aux','off');
3032 end;
3033 v = 'off';
3034 for k=1:nIzqu
3035   if strcmp(get(Volv1(Izqu(k)),'vis'),'on') v = 'on'; break; end;
3036 end;
3037 set(hYlab,'vis',v,'ui',uicontextmenu('call','plt hideCur;'));
3038 izquC = cPLTbk;
3039 if AXr
3040   ls = Volv1(Derecho)';
3041   set(Hc(14+Derecho),'par',AXr,'erase','xor');
3042   v = 'off';
3043   for k=1:length(ls)
3044     if strcmp(get(ls(k),'vis'),'on')
3045        v = 'on';
3046        izquC = 'none';
3047        break;
3048     end;
3049   end;
3050   set(AXr,'vis',v);
3051 end;
3052 plt('cursor',cador,'MVcur');
3053 if length(moveCB) plt('cursor',cador,'set','moveCB',moveCB); end;
3054 if length(axisCB) plt('cursor',cador,'set','axisCB',axisCB); end;
3055 set(AX,'color',izquC);
3056 cidS = cador;
3057 if nSP
3058   if aid & all(idPOS([1 2 4]) == [1 1 1])
3059     set(aid,'units','nor');
3060     p = get(aid,'pos');
3061     p(2) = ySP(2)-p(4)-.025;
3062     if p(2) < sum(posAX2([2 4]))+.015
3063        p(2) = posAX2(2);  posAX2(2) = p(2) + p(4) + .02;
3064        set(amb,'pos',posAX2);
3065     end;
3066     set(aid,'pos',p);
3067   end;
3068   h = plt('cursor',cador,'get','obj');
3069   q = [-1 .1 .1 .1];  u = [q;q;q;q];
3070   py1 = get(h(5),'pos');   p1 = [u;py1;u];
3071   p = {'pos' 'Xlim' 'color' 'Xscale' 'FontSize' 'TickLength' 'Box'};
3072   v = get(AX,p);
3073   if ischar(v{3}) v{3} = get(AXr,'color'); end;
3074   for k=1:nSPl
3075     v{1}([2 4]) = [ySP(k+1) hSP(k+1)];
3076     set(axS(k),p,v);
3077     p1(5,1) = p1(5,1) - dx3;
3078     cidS = [cidS plt('cursor',axS(k),'init',p1,'','','+',8)];
3079     set(axS(k),'use',cidS(end));
3080   end;
3081   if nSPr
3082     v{1}([1 3]) = [SPx .98-SPx];  p2r = [p2r;q;q;q];
3083     if ischar(Xlimr) k = get(Volv1(end),'x');  v{2} = [min(k) max(k)];
3084     else             v{2} = Xlimr;
3085     end;
3086     for k=1:nSPr
3087       kr = k+nSPl;
3088       v{1}([2 4]) = [ySPr(k) hSPr(k)];
3089       set(axS(kr),p,v);
3090       cidS = [cidS plt('cursor',axS(kr),'init',p2r,'','','+',8)];
3091       set(axS(kr),'use',cidS(end));
3092       if k==1 p2r([1 2 3 4 6],:) = [u;q]; end;
3093       p2r(5,1) = p2r(5,1) - dx3;
3094     end;
3095   end;
3096   creq = [];
3097   s = 'plt(''cursor'',';
3098   cidSS = {[s int2str(cidS(1))]};
3099   for k=1:nSP
3100     SS = [s int2str(cidS(k+1))];
3101     cidSS = [cidSS {SS}];
3102     creq = [creq SS ',''clear'');'];
3103     plt('grid',axS(k),'init',cGRID,GridEr);
3104     if length(Reja)==3 plt('grid',axS(k),'off'); end;
3105   end;
3106   set(FIG,'closereq',[creq get(FIG,'closereq')]);
3107   setappdata(FIG,'c',0);
3108   s1a = 'if getappdata(gcf,"c")==%d setappdata(gcf,"c",0); else setappdata(gcf,"c",getappdata(gcf,"c")+1);';
3109   s1 = sprintf(s1a,nSPl);
3110   s2 = ',"set","activeLine",0,@IDX); end';
3111   s3 = ',"set","xlim",get(gca,"xlim")); end';
3112   for k=0:nSPl
3113     if k==nSPl j=1; else j=k+2; end;
3114     plt('cursor',cidS(k+1),'set','moveCB',[s1 cidSS{j} s2]);
3115     plt('cursor',cidS(k+1),'set','axisCB',[s1 cidSS{j} s3]);
3116   end;
3117   xk = Xlim(1) + diff(Xlim)/9;
3118   [a xk] = min(abs(x-xk));
3119   plt('cursor',cador,'mainCur',xk);
3120   if nSPr
3121     s1 = sprintf(s1a,nSPr);
3122     for k=1:nSPr
3123       kr = k+nSPl+1;
3124       if k==nSPr j=nSPl+2; else j=kr+1; end;
3125       plt('cursor',cidS(kr),'set','moveCB',[s1 cidSS{j} s2]);
3126       plt('cursor',cidS(kr),'set','axisCB',[s1 cidSS{j} s3]);
3127     end;
3128     plt('cursor',cidS(nSPl+2),'mainCur',round(length(get(Volv1(end),'x'))/9));
3129     axS(nSPl+1) = [];
3130   end;
3131   set(axS,'xticklabel',[]);
3132   set(findobj(FIG,'use','idcur'),'vis','of');
3133 end;
3134 setappdata(FIG,'cid',cidS);
3135 if NoCursor plt('cursor',cador,'set','visOFF'); end;
3136 axes(AX);
3137 if length(Reja)==2 plt('grid',AX); end;
3138 set(FIG,'vis','on');
3139 drawnow;
3140 end;
3141 
3142 function fixMark()
3143   markR = findobj(gcf,'tag','markR')';
3144   if isempty(markR) return; end;
3145   for l = markR
3146     u = get(l,'use');
3147     t = u(1);  v2 = u(2);  axr = u(3);  ylim = u(4:5);  rlim = u(6:7);
3148     if ishandle(t) p = get(t,'pos');  else p = [0 0]; end;
3149     absc = [get(l,'y') p(2)];
3150     absc = rlim(1) + diff(rlim) * (absc - ylim(1)) / diff(ylim);
3151     rlim = get(axr,'yli');   ylim = get(v2,'yli');
3152     absc = ylim(1) + diff(ylim) * (absc - rlim(1)) / diff(rlim);
3153     set(l,'y',absc(1),'use',[u(1:3) ylim rlim]);
3154     if ishandle(t) p(2) = absc(2);  set(t,'pos',p); end;
3155   end;
3156 
3157 function r2 = plt2nd(v)
3158   [r1 r2] = plt(v{:});
3159 
3160 function r = get8192(h,prop)
3161   r = get(h/8192,prop);
3162 
3163 function evalQ(a)
3164   if ischar(a)     a = strrep(a,'"','''');
3165                    eval(a);
3166   elseif iscell(a) feval(a{:});
3167   else             feval(a);
3168   end;
3169 
3170 function evalRep(a,rep)
3171   if ischar(a)     for k=1:2:length(rep) a = strrep(a,rep{k},rep{k+1}); end;
3172                    a = strrep(a,'"','''');
3173                    eval(a);
3174   elseif iscell(a) feval(a{:});
3175   else             feval(a);
3176   end;
3177 
3178 function r = evalRep2(a,rep)
3179   if ischar(a)     for k=1:2:length(rep) a = strrep(a,rep{k},rep{k+1}); end;
3180                    a = strrep(a,'"','''');
3181                    r = eval(a);
3182   elseif iscell(a) r = feval(a{:});
3183   else             r = feval(a);
3184   end;
3185 
3186 function v = s2d(s)
3187    v = sscanf(s,'%f');
3188 
3189 function v = s2i(s)
3190    v = sscanf(s,'%d');

Generated on Fri 27-Jan-2012 16:18:41 by m2html © 2005