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

波变换

开发平台:

Matlab

  1. function [out1,out2] = utsetcol(opt,in2,in3,in4)
  2. %UTSETCOL Utilities for Setting Color.
  3. %   [OUT1,OUT2] = UTSETCOL(OPT,IN2,IN3,IN4)
  4. %   OPT = 'define' : Construction
  5. %   IN2  = fig is optional
  6. %   IN3  = [XLeft YDown] is optional
  7. %   IN4  = str_title is optional
  8. %   OUT1 = Handles , out2 = Position
  9. %
  10. %   OPT = 'get'   : get color
  11. %   IN2  = Handles
  12. %   OUT1 = [R G B]
  13. %
  14. %   OPT = 'set'   : set color
  15. %   IN2 = Handles
  16. %   IN3 = [R G B]
  17. %
  18. %   OPT = 'pos'   : change position
  19. %   IN2  = [dx dy]
  20. %   OUT1 = newpos
  21. %
  22. %   OPT = 'change' & 'change_txt' : internal options.
  23. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-May-96.
  24. %   Last Revision: 14-May-2003.
  25. %   Copyright 1995-2004 The MathWorks, Inc.
  26. % $Revision: 1.10.4.2 $
  27. % Handles = [ ...
  28. %    Sl_Color_R Rval_txt
  29. %    Sl_Color_G Gval_txt
  30. %    Sl_Color_B Bval_txt 
  31. %    Frame_col  hdls]
  32. %
  33. % Frame = hdls(1) , Large = 340 , Hight = 72
  34. switch opt
  35.     case {'change','change_txt','get','set'}
  36.         Sl_Color_R = in2(1); Rval_txt = in2(2);
  37.         Sl_Color_G = in2(3); Gval_txt = in2(4);
  38.         Sl_Color_B = in2(5); Bval_txt = in2(6);
  39.         Frame_col  = in2(7);
  40. end
  41. switch opt
  42.     case 'define'
  43.         % Get Globals.
  44.         %--------------
  45.         [Def_TxtBkColor,Def_EdiBkColor,Def_FraBkColor] = ...
  46.            mextglob('get',...
  47.                 'Def_TxtBkColor','Def_EdiBkColor','Def_FraBkColor');
  48.         txt_color = Def_TxtBkColor;
  49.         if nargin<2
  50.             fig = gcf;
  51.             xg  = 10;        yb = 10;
  52.             str_title = 'Color';
  53.         elseif nargin<3
  54.             fig = in2;
  55.             xg  = 10;        yb = 10;
  56.             str_title = 'Color';
  57.         elseif nargin<4
  58.             fig = in2;
  59.             xg  = in3(1);    yb = in3(2);
  60.             str_title = 'Color';
  61.         else
  62.             fig = in2;
  63.             xg  = in3(1);    yb = in3(2);
  64.             str_title = in4;
  65.         end
  66.         but_High = 22;
  67.         large = 120;
  68.         ltxt  =  40;    htxt = but_High;
  69.         ljg   =  15;    hjg  = 3*but_High;
  70.         dx = 5;
  71.         lcadre = 2*dx+6*dx+3*ltxt+3*ljg+large+3*dx;
  72.         hcadre = 6+hjg;
  73.         y = yb+3+but_High;
  74.         out2 = [xg yb lcadre hcadre];
  75.         hdls = zeros(1,6);
  76.         hdls(1) = uicontrol('Parent',fig,'Style','Frame',...
  77.                         'Position',[xg yb lcadre hcadre]);
  78.         col = get(hdls(1),'BackGroundColor');
  79.         xg = xg+2*dx;
  80.         hdls(2) = uicontrol('Parent',fig,'Style','Frame',...
  81.                         'BackGroundColor',txt_color,...
  82.                         'Position',[xg y+but_High-5 large but_High]);
  83.         hdls(3) = uicontrol('Parent',fig,'Style','Text',...
  84.                         'BackGroundColor',txt_color,...
  85.                         'Position',[xg+3 y+but_High-2 large-6 but_High-6],...
  86.                         'HorizontalAlignment','center',...
  87.                         'String',str_title);
  88.         Frame_col = uicontrol('Parent',fig,'Style','Frame',...
  89.                         'Position',[xg y-but_High+5 large htxt]);
  90.         xg = xg+large+2*dx;
  91.         hdls(4) = uicontrol('Parent',fig,'Style','Text',...
  92.                         'BackGroundColor',txt_color,...
  93.                         'Position',[xg y+20 ltxt htxt],...
  94.                         'String','R');
  95.         Rval_txt = uicontrol('Parent',fig,'Style','Edit',...
  96.                         'BackGroundColor',Def_EdiBkColor,...
  97.                         'Position',[xg y-20 ltxt htxt],  ...
  98.                         'String','');
  99.         xg = xg+ltxt+dx;
  100.         Sl_Color_R = uicontrol('Parent',fig,'Style','Slider',...
  101.                         'Position',[xg yb+3 ljg hjg]);
  102.         xg = xg+ljg+dx;
  103.         hdls(5) = uicontrol('Parent',fig,'Style','Text',...
  104.                         'BackGroundColor',txt_color,    ...
  105.                         'Position',[xg y+20 ltxt htxt], ...
  106.                         'String','G');
  107.         Gval_txt = uicontrol('Parent',fig,'Style','Edit',...
  108.                         'BackGroundColor',Def_EdiBkColor,...
  109.                         'Position',[xg y-20 ltxt htxt],  ...
  110.                         'String','');
  111.         xg = xg+ltxt+dx;
  112.         Sl_Color_G = uicontrol('Parent',fig,'Style','Slider',...
  113.                         'Position',[xg yb+3 ljg hjg]);
  114.         xg = xg+ljg+dx;
  115.         hdls(6) = uicontrol('Parent',fig,'Style','Text',...
  116.                         'BackGroundColor',txt_color,    ...
  117.                         'Position',[xg,y+20,ltxt htxt], ...
  118.                         'String','B');
  119.         Bval_txt = uicontrol('Parent',fig,'Style','Edit', ...
  120.                         'BackGroundColor',Def_EdiBkColor, ...
  121.                         'Position',[xg y-20 ltxt htxt],   ...
  122.                         'String','');
  123.         xg = xg+ltxt+dx;
  124.         Sl_Color_B = uicontrol('Parent',fig,'Style','Slider',...
  125.                         'Position',[xg yb+3 ljg hjg]);
  126.         out1 = [Sl_Color_R , Rval_txt , ...
  127.                 Sl_Color_G , Gval_txt , ...
  128.                 Sl_Color_B , Bval_txt , ...
  129.                 Frame_col  , hdls];
  130.         action = [mfilename '(''change'',' num2mstr(out1) ');'];
  131.         set([Sl_Color_R,Sl_Color_G,Sl_Color_B],'CallBack',action);
  132.         set(Sl_Color_R,'Value',col(1));
  133.         set(Sl_Color_G,'Value',col(2));
  134.         set(Sl_Color_B,'Value',col(3));
  135.         action = [mfilename '(''change_txt'',' num2mstr(out1) ');'];
  136.         set([Rval_txt,Gval_txt,Bval_txt],'CallBack',action);
  137.         eval(get(Sl_Color_R,'Callback'));
  138.     case 'set'
  139.         set(Sl_Color_R,'Value',in3(1));
  140.         set(Sl_Color_G,'Value',in3(2));
  141.         set(Sl_Color_B,'Value',in3(3));
  142.         utsetcol('change',in2);
  143.     case 'change'
  144.         R = setValSli(Sl_Color_R,Rval_txt);
  145.         G = setValSli(Sl_Color_G,Gval_txt);
  146.         B = setValSli(Sl_Color_B,Bval_txt);
  147.         set(Frame_col,'BackGroundColor',[R G B]);
  148.     case 'change_txt'
  149.         R = setValTxt(Sl_Color_R,Rval_txt);
  150.         G = setValTxt(Sl_Color_G,Gval_txt);
  151.         B = setValTxt(Sl_Color_B,Bval_txt);
  152.         set(Frame_col,'BackGroundColor',[R G B]);
  153.     case 'get'
  154.         out1(1) = get(Sl_Color_R,'Value');
  155.         out1(2) = get(Sl_Color_G,'Value');
  156.         out1(3) = get(Sl_Color_B,'Value');
  157.     case 'pos'
  158.         dx = in3(1);    dy = in3(2);
  159.         set(in2,'Visible','Off');
  160.         for k = 1:length(in2)
  161.             pos  = get(in2(k),'Position');
  162.             npos = [pos(1)+dx pos(2)+dy pos(3:4)];
  163.             set(in2(k),'Position',npos);
  164.         end
  165.         set(in2,'Visible','On');
  166.         out1 = get(in2(8),'Position');  % in2(8) = hdls(1) is the Frame
  167. end
  168. % Internal function(s).
  169. %----------------------
  170. function val = setValSli(sliHdl,ediHdl)
  171. val = get(sliHdl,'Value');
  172. set(ediHdl,'String',sprintf('%4.2f',val));
  173. function val = setValTxt(sliHdl,ediHdl)
  174. val = wstr2num(get(ediHdl,'String'));
  175. if isempty(val) | (val<0) | (val>1)
  176.     val = get(sliHdl,'Value');
  177. end
  178. set(ediHdl,'String',sprintf('%4.2f',val));
  179. set(sliHdl,'Value',val);