www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/wvdtool.m

    function varargout = wvdtool(option,varargin)
%WVDTOOL Wavelet display tool.
%   VARARGOUT = WVDTOOL(OPTION,VARARGIN)

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
%   Last Revision 08-Jun-2012.
%   Copyright 1995-2012 The MathWorks, Inc.

% Test inputs.
%-------------
if nargin==0 , option = 'create'; end
[option,winAttrb] = utguidiv('ini',option,varargin{:});

% MemBloc1 of stored values.
%---------------------------
n_miscella     = 'WvDisp_Misc';
ind_graph_area = 1;
ind_wave_fam   = 2;
ind_wave_nam   = 3;
ind_refinement = 4;
nb1_stored     = 4;

% Tag property of objects.
%-------------------------
tag_prec_val  = 'Prec_Val';
tag_cmd_frame = 'Cmd_Frame';
tag_display   = 'Display';
tag_pus_inf1  = 'Pus_Inf1';
tag_pus_inf2  = 'Pus_Inf2';

switch option
    case 'create'
        % Get Globals.
        %-------------
        [Def_Txt_Height,Def_Btn_Height,Def_Btn_Width,  ...
         X_Spacing,Y_Spacing,Def_FraBkColor] = ...
            mextglob('get',...
                'Def_Txt_Height','Def_Btn_Height','Def_Btn_Width', ...
                'X_Spacing','Y_Spacing','Def_FraBkColor' ...
                );

        % Window initialization.
        %----------------------
        win_title = getWavMSG('Wavelet:divGUIRF:WVT_Name');
        [win_loctool,pos_win,win_units,str_numwin,...
                pos_frame0,Pos_Graphic_Area] = ...
                    wfigmngr('create',win_title,winAttrb,'ExtFig_WDisp',mfilename);
        if nargout>0 , varargout{1} = win_loctool; end
		
		% Add Help for Tool.
		%------------------
		wfighelp('addHelpTool',win_loctool, ...
            getWavMSG('Wavelet:divGUIRF:WVT_Name'),'WVDI_GUI');
		
		% Add Help Item.
		%----------------
		wfighelp('addHelpItem',win_loctool, ...
            getWavMSG('Wavelet:divGUIRF:HLP_Wavelet'),'WVDI_FAMILIES');
		wfighelp('addHelpItem',win_loctool, ...
            getWavMSG('Wavelet:divGUIRF:HLP_WavFam'),'WVDI_ADVANCED');
		wfighelp('addHelpItem',win_loctool, ...
            getWavMSG('Wavelet:divGUIRF:PROP_WavFam'),'UT_WAVELET');
		wfighelp('addHelpItem',win_loctool, ...
            getWavMSG('Wavelet:divGUIRF:HLP_ADD_Wav'),'WVDI_NEWWAVE');		

        % Begin waiting.
        %---------------
        set(wfindobj('figure'),'Pointer','watch');

        % General parameters initialization.
        %-----------------------------------
        dx = X_Spacing;
        dy = Y_Spacing; dy2 = 2*dy;
        d_txt = (Def_Btn_Height-Def_Txt_Height);

        % Position property of objects.
        %------------------------------
        xlocINI      = pos_frame0([1 3]);
        ybottomINI   = pos_win(4)-1.5*Def_Btn_Height-dy2;
        y_low        = ybottomINI-2*Def_Btn_Height;
        x_left       = pos_frame0(1)+2*dx;
        pos_prec_txt = [x_left, y_low+d_txt/2, Def_Btn_Width, Def_Txt_Height];
        xleftB       = x_left+Def_Btn_Width+dx;
        pos_prec_val = [xleftB , y_low , Def_Btn_Width , Def_Btn_Height];
        wpop         = 3*(pos_frame0(3)-4*dx)/4;
		xborder      = (pos_frame0(3)-wpop)/2;
        xpop         = pos_frame0(1)+xborder;
        y_low        = pos_prec_txt(2)-5*Def_Btn_Height;
        pos_display  = [xpop, y_low, wpop, 2*Def_Btn_Height];
        y_low        = pos_display(2)-3*Def_Btn_Height;
        pos_inf_txt  = [x_left, y_low, 2.5*Def_Btn_Width, Def_Btn_Height];
        pos_pus_inf1    = pos_display;
		pos_pus_inf1(1) = pos_pus_inf1(1)-xborder/2;
		pos_pus_inf1(3) = pos_pus_inf1(3)+xborder;
        pos_pus_inf1(2) = pos_inf_txt(2)-2*Def_Btn_Height-dy;
        pos_pus_inf2    = pos_pus_inf1;
        pos_pus_inf2(2) = pos_pus_inf1(2)-3*Def_Btn_Height;

        % String property of objects.
        %----------------------------
        str_display  = getWavMSG('Wavelet:commongui:Str_Display');
        str_inf_txt  = getWavMSG('Wavelet:divGUIRF:StrInfo_On');
        str_inf1     = getWavMSG('Wavelet:divGUIRF:StrWavFAM','(HAAR)');
        str_inf2     = getWavMSG('Wavelet:divGUIRF:StrAllWavFAM');
        str_prec_txt = getWavMSG('Wavelet:divGUIRF:Str_Refinement');
        str_prec_val = ['5 ' ; '6 ' ; '7 ' ; '8 ' ; '9 ' ; '10' ; '11' ; '12' ];

        % Command part construction of the window.
        %-----------------------------------------
        utanapar('create',win_loctool, ...
                 'xloc',xlocINI,'bottom',ybottomINI,...
                 'datflag',0,'levflag',0,...
                 'wtype','all' ...
                 );

        comFigProp = {'Parent',win_loctool,'Units',win_units};
        comPopProp = [comFigProp,'Style','Popup'];
        comPusProp = [comFigProp,'Style','pushbutton'];
        comTxtProp = [comFigProp,'Style','Text', ...
           'HorizontalAlignment','left','BackgroundColor',Def_FraBkColor];

        Tooltip      = getWavMSG('Wavelet:divGUIRF:Tip_WV_Prec');
        txt_prec_txt = uicontrol(comTxtProp{:}, ...
            'Position',pos_prec_txt,...
            'String',str_prec_txt,...
            'TooltipString',Tooltip ...
            );
        pop_prec_val = uicontrol(comPopProp{:},...
            'Position',pos_prec_val,...
            'String',str_prec_val,...
            'Value',4,...
            'TooltipString',Tooltip,...
            'Tag',tag_prec_val...
            );
        pus_display  = uicontrol(comPusProp{:},...
            'Position',pos_display,...
            'String',str_display,...
            'Tag',tag_display...
            );
        uicontrol(comTxtProp{:}, ...
            'Position',pos_inf_txt,...
            'String',str_inf_txt...
            );
        pus_inf1     = uicontrol(comPusProp{:},...
            'Position',pos_pus_inf1,...
            'String',str_inf1,...
            'Max',2,...
            'Tag',tag_pus_inf1...
            );
        pus_inf2     = uicontrol(comPusProp{:},...
            'Position',pos_pus_inf2,...
            'String',str_inf2,...
            'Tag',tag_pus_inf2...
            );

        % Callbacks update.
        %------------------
        utanapar('set_cba_num',win_loctool,pus_display);
        [pop_fam,pop_num] = utanapar('handles',win_loctool,'fam','num');
        cb_fam = get(pop_fam,'Callback');
        cb_num = get(pop_num,'Callback');
        cba_upd_fam = [mfilename '(''upd_fam'',' str_numwin ');'];
        cba_update  = [mfilename '(''new'',' str_numwin ');'];
        cba_draw_1d = [mfilename '(''draw1d'',' str_numwin ');'];
        cba_inf1    = [mfilename '(''inf1'',' str_numwin ');'];
        cba_inf2    = [mfilename '(''inf2'',' str_numwin ');'];
        set(pop_fam,'Callback',[cb_fam , cba_upd_fam]);
        set(pop_num,'Callback',[cb_num , cba_update]);
        set(pop_prec_val,'Callback',cba_update);
        set(pus_display,'Callback',cba_draw_1d);
        set(pus_inf1,'Callback',cba_inf1);
        set(pus_inf2,'Callback',cba_inf2);

        % Setting units to normalized.
        %-----------------------------
        Pos_Graphic_Area = wfigmngr('normalize',win_loctool, ...
            Pos_Graphic_Area,'On');
        
		% Add Context Sensitive Help (CSHelp).
		%-------------------------------------
		hdl_WVDI_GUI = [txt_prec_txt,pop_prec_val];
		wfighelp('add_ContextMenu',win_loctool,hdl_WVDI_GUI,'WVDI_GUI');
		%-------------------------------------

        % Memory for stored values.
        %--------------------------
        wmemtool('ini',win_loctool,n_miscella,nb1_stored);
        wmemtool('wmb',win_loctool,n_miscella,...
                       ind_graph_area,Pos_Graphic_Area,...
                       ind_wave_fam,'haar', ...
                       ind_wave_nam,'haar', ...
                       ind_refinement,0      ...
                       );

        % End waiting.
        %-------------
        set(wfindobj('figure'),'Pointer','arrow');

    case 'upd_fam'
        %**********************************************************%
        %** OPTION = 'upd_fam' -  UPDATE OF THE WAVELET FAMILY   **%
        %**********************************************************%
        win_loctool = varargin{1};
        new = wvdtool('new',win_loctool);
        if new==0 , return; end

        % Handles of tagged objects.
        %---------------------------
        pus_handles = findobj(win_loctool,'Style','pushbutton');
        pus_inf1    = findobj(pus_handles,'Tag',tag_pus_inf1);

        % Test family and Set visible on or off the wavelet number if exists.
        %--------------------------------------------------------------------
        wav_nam = cbanapar('get',win_loctool,'wav');
        [wav_fn,wav_fsn] = wavemngr('fields',wav_nam,'fn','fsn');
        strPush = ...
            getWavMSG('Wavelet:divGUIRF:PusNamWav',wav_fn,upper(wav_fsn));
        set(pus_inf1,'String',strPush);

    case 'inf1'
        %*****************************************%
        %** OPTION = 'inf1' - LOCAL INFORMATION **%
        %*****************************************%
        win_loctool = varargin{1};

        % Getting wavelet.
        %-----------------
        wav_nam = cbanapar('get',win_loctool,'wav');
        wav_fam = wavemngr('fam_num',wav_nam);
        infotxt = [deblankl(wav_fam) 'info.m'];
        [old_info,fig] = whelpfun('getflag');
        if ~isempty(old_info) && strcmp(infotxt,old_info)
            figure(fig); return;
        end

        % Waiting message.
        %-----------------
        wwaiting('msg',win_loctool,getWavMSG('Wavelet:commongui:WaitLoad'));

        [str_inf,fid] = wreadinf(infotxt,'noerror');
        if fid==-1
            msg =  getWavMSG('Wavelet:commongui:ErrLoadFile',infotxt);
            errargt(mfilename,msg,'msg');
            wwaiting('off',win_loctool);
            return
        else
            dim     = size(str_inf);
            rowfam  = str_inf(1,:);
            str_inf = str_inf(2:dim(1),:);
            col = 1;
            while all(str_inf(:,col)==' ') , col = col+1; end
            blk  = ' ' ;
            str_inf = [rowfam ; ...
                       str_inf(:,col:dim(2)) blk*ones(dim(1)-1,col-1) ];
        end
        ftnsize = wmachdep('FontSize','winfo');
        whelpfun('create',str_inf,infotxt,ftnsize);

        % End waiting.
        %-------------
        wwaiting('off',win_loctool);

    case 'inf2'
        %*****************************************%
        %** OPTION = 'inf2' - LOCAL INFORMATION **%
        %*****************************************%
        win_loctool = varargin{1};

        % Handles of tagged objects.
        %---------------------------
        infotxt        = 'infowave.m';
        [old_info,fig] = whelpfun('getflag');
        if ~isempty(old_info) && strcmp(infotxt,old_info)
            figure(fig); return;
        end

        % Waiting message.
        %-----------------
        wwaiting('msg',win_loctool,getWavMSG('Wavelet:commongui:WaitLoad'));

        [str_inf,fid]= wreadinf(infotxt,'noerror');
        if fid==-1
            msg = getWavMSG('Wavelet:commongui:ErrLoadFile',infotxt);
            errargt(mfilename,msg,'msg');
            wwaiting('off',win_loctool);
            return
        end
        ftnsize = wmachdep('FontSize','winfo');
        whelpfun('create',str_inf,infotxt,ftnsize);

        % End waiting.
        %-------------
        wwaiting('off',win_loctool);

    case 'draw1d'
        %************************************************%
        %** OPTION = 'draw1d' - DRAW AXES IN 1D        **%
        %************************************************%
        win_loctool = varargin{1};
        [new,Wave_Fam,Wave_Nam,prec_val] = wvdtool('new',win_loctool);
        if new==0 , return; end

        % Waiting message.
        %-----------------
        wwaiting('msg',win_loctool,getWavMSG('Wavelet:commongui:WaitCompute'));

        % Handles of tagged objects.
        %---------------------------
        fra_handles = findobj(win_loctool,'Style','frame');
        hdl_frame0  = findobj(fra_handles,'Tag',tag_cmd_frame);

        % Update parameters selection before drawing.
        %-------------------------------------------
        wmemtool('wmb',win_loctool,n_miscella, ...
                       ind_wave_fam,Wave_Fam,  ...
                       ind_wave_nam,Wave_Nam,  ...
                       ind_refinement,prec_val  ...
                       );

        % General graphical parameters initialization.
        %--------------------------------------------
        pos_g_area     = wmemtool('rmb',win_loctool,n_miscella,ind_graph_area) ;
        pos_hdl_frame0 = get(hdl_frame0,'Position');
        win_units      = 'normalized';
        pos_win        = get(win_loctool,'Position');
        bdx            = 0.08*pos_win(3);
        bdy            = 0.09*pos_win(4);
        bdy_d          = bdy;
        bdy_u          = bdy;
        bdyl           = pos_g_area(2)+bdy_d;
        w_graph        = pos_hdl_frame0(1);
        h_graph        = pos_g_area(4);

        % Computing and displaying wavelets and filters.
        %-----------------------------------------------
        wtype = wavemngr('type',Wave_Nam);
        commonAxesProp = {...
           'Parent',win_loctool, ...
           'Units',win_units,    ...
           'Box','On'            ...
           };
        stemCOL = wtbutils('colors','stem_filters');
        switch wtype
            case 1
                str_wintitle = ...
                    getWavMSG('Wavelet:divGUIRF:NamWinWV',Wave_Fam,Wave_Nam);
                [phi,psi,xVal] = wavefun(Wave_Nam,prec_val);
                [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(Wave_Nam);
                xaxis_f = [0  length(Lo_D)-1];
                xVal_f  = xaxis_f(1):xaxis_f(2);
                xlim = xaxis_f + 0.01*[-1 1];
                nb      = 1;
                len     = length(xVal_f);
                while len>10
                    nb = 2*nb;
                    len = len/nb;
                end
                tics    = 0:nb:length(xVal_f);
                xlabs   = int2str(tics');
                yaxis_r = [min(min(Lo_R),min(Hi_R))   max(max(Lo_R),max(Hi_R))];
                yaxis_d = [min(min(Lo_D),min(Hi_D))   max(max(Lo_D),max(Hi_D))];
                h_axe_wave = (h_graph-2*bdy-bdy_d-bdy_u)/2;
                h_axe_filt = h_axe_wave/2;
                w_axe      = (w_graph-3*bdx)/2;
                pos_phi  = [ bdx,...
                             bdyl+2*bdy+2*h_axe_filt,...
                             w_axe,h_axe_wave ];
                pos_psi  = [ 2*bdx+w_axe,...
                             bdyl+2*bdy+2*h_axe_filt,...
                             w_axe,h_axe_wave ];
                pos_Lo_D = [ bdx,...
                             bdyl+bdy+h_axe_filt,...
                             w_axe,h_axe_filt ];
                pos_Lo_R = [ bdx,...
                              bdyl,w_axe,h_axe_filt ];
                pos_Hi_D = [ 2*bdx+w_axe,...
                             bdyl+bdy+h_axe_filt,...
                             w_axe,h_axe_filt ];
                pos_Hi_R = [ 2*bdx+w_axe,bdyl,w_axe,h_axe_filt ];

                axeProp  = [commonAxesProp,'Position',pos_phi];
                axeTitle = getWavMSG('Wavelet:divGUIRF:ScaFunPhi');
                axe_phi  = plotYval(xVal,phi,axeProp,'r',axeTitle);

                axeProp  = [commonAxesProp,'Position',pos_psi];
                axeTitle = getWavMSG('Wavelet:divGUIRF:WavFunPsi');
                axe_psi  = plotYval(xVal,psi,axeProp,'g',axeTitle);

                axe_Lo_D = axes(commonAxesProp{:},'Position',pos_Lo_D);
                wdstem(axe_Lo_D,xVal_f,Lo_D,stemCOL,1);
                set(axe_Lo_D,...
                    'YLim',yaxis_d,            ...
                    'XLim',xlim,               ...
                    'Box','On',                ...
                    'XTickLabelMode','manual', ...
                    'XTick',tics,              ...
                    'XTickLabel',xlabs         ...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Dec_LowFil'), ...
                    'Parent',axe_Lo_D);

                axe_Lo_R = axes(commonAxesProp{:},'Position',pos_Lo_R);
                wdstem(axe_Lo_R,xVal_f,Lo_R,stemCOL,1);
                set(axe_Lo_R,...
                    'YLim',yaxis_r,            ...
                    'XLim',xlim,               ...
                    'Box','On',                ...
                    'XTickLabelMode','manual', ...
                    'XTick',tics,              ...
                    'XTickLabel',xlabs         ...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Rec_LowFil'), ...
                    'Parent',axe_Lo_R);

                axe_Hi_D = axes(commonAxesProp{:},'Position',pos_Hi_D);
                wdstem(axe_Hi_D,xVal_f,Hi_D,stemCOL,1);
                set(axe_Hi_D,...
                    'YLim',yaxis_d,            ...
                    'XLim',xlim,               ...
                    'Box','On',                ...
                    'XTickLabelMode','manual', ...
                    'XTick',tics,              ...
                    'XTickLabel',xlabs         ...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Dec_HigFil'), ...
                    'Parent',axe_Hi_D);

                axe_Hi_R = axes(commonAxesProp{:},'Position',pos_Hi_R);
                wdstem(axe_Hi_R,xVal_f,Hi_R,stemCOL,1);
                set(axe_Hi_R,...
                    'YLim',yaxis_r,            ...
                    'XLim',xlim,               ...
                    'Box','On',                ...
                    'XTickLabelMode','manual', ...
                    'XTick',tics,              ...
                    'XTickLabel',xlabs         ...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Rec_HigFil'), ...
                    'Parent',axe_Hi_R);
                axe_cmd = [axe_phi axe_psi];
                axe_act = [axe_Lo_D axe_Hi_D axe_Lo_R axe_Hi_R];

            case 2
                [phi1,psi1,phi2,psi2,xVal] = wavefun(Wave_Nam,prec_val);
                [Lo_D,Hi_D,Lo_R,Hi_R]  = wfilters(Wave_Nam);
                xaxis_f = [0 length(Lo_D)-1];
                xVal_f  = 0:xaxis_f(2);
                xlim     = xaxis_f + 0.01*[-1 1];
                nb      = 1;
                len     = length(xVal_f);
                while len>10
                    nb = 2*nb;
                    len = len/nb;
                end
                tics    = 0:nb:length(xVal_f);
                xlabs   = int2str(tics');
                yaxis_r = [min(min(Lo_R),min(Hi_R)) max(max(Lo_R),max(Hi_R))];
                yaxis_d = [min(min(Lo_D),min(Hi_D)) max(max(Lo_D),max(Hi_D))];
                str_wintitle = getWavMSG('Wavelet:divGUIRF:Bior_WavNam',Wave_Nam);
                h_axe_wave = 2*(h_graph-3*bdy-bdy_d-bdy_u)/6;
                h_axe_filt = (h_graph-3*bdy-bdy_d-bdy_u)/6;
                w_axe      = (w_graph-3*bdx)/2;

                pos_phi1 = [ bdx,...
                             bdyl+3*bdy+2*h_axe_filt+h_axe_wave,...
                             w_axe,h_axe_wave];
                pos_phi2 = [ bdx,...
                             bdyl+bdy+h_axe_filt,...
                             w_axe,h_axe_wave];
                pos_psi1 = [ 2*bdx+w_axe,...
                             bdyl+3*bdy+2*h_axe_filt+h_axe_wave,...
                             w_axe,h_axe_wave];
                pos_psi2 = [ 2*bdx+w_axe,...
                             bdyl+bdy+h_axe_filt,...
                             w_axe,h_axe_wave];
                pos_Lo_D = [ bdx,...
                             bdyl+2*bdy+h_axe_filt+h_axe_wave,...
                             w_axe,h_axe_filt];
                pos_Lo_R = [ bdx,bdyl,w_axe,h_axe_filt];
                pos_Hi_D = [ 2*bdx+w_axe,...
                              bdyl+2*bdy+h_axe_filt+h_axe_wave,...
                              w_axe,h_axe_filt];
                pos_Hi_R = [ 2*bdx+w_axe,bdyl,w_axe,h_axe_filt];

                axeProp  = [commonAxesProp,'Position',pos_phi1];
                axeTitle = getWavMSG('Wavelet:divGUIRF:Dec_ScaFun');
                axe_phi1 = plotYval(xVal,phi1,axeProp,'r',axeTitle);

                axeProp  = [commonAxesProp,'Position',pos_phi2];
                axeTitle = getWavMSG('Wavelet:divGUIRF:Rec_ScaFun');
                axe_phi2 = plotYval(xVal,phi2,axeProp,'r',axeTitle);

                axeProp  = [commonAxesProp,'Position',pos_psi1];
                axeTitle = getWavMSG('Wavelet:divGUIRF:Dec_WavFun');
                axe_psi1 = plotYval(xVal,psi1,axeProp,'g',axeTitle);

                axeProp  = [commonAxesProp,'Position',pos_psi2];
                axeTitle = getWavMSG('Wavelet:divGUIRF:Rec_WavFun');
                axe_psi2 = plotYval(xVal,psi2,axeProp,'g',axeTitle);

                axe_Lo_D = axes(commonAxesProp{:},'Position',pos_Lo_D);
                wdstem(axe_Lo_D,xVal_f,Lo_D,stemCOL,1);
                set(axe_Lo_D,...
                    'YLim',yaxis_d,...
                    'XLim',xlim,...
                    'Box','On',...
                    'XTickLabelMode','manual',...
                    'XTick',tics,...
                    'XTickLabel',xlabs...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Dec_LowFil'), ...
                    'Parent',axe_Lo_D);

                axe_Lo_R = axes(commonAxesProp{:},'Position',pos_Lo_R);
                wdstem(axe_Lo_R,xVal_f,Lo_R,stemCOL,1);
                set(axe_Lo_R,...
                    'YLim',yaxis_r,...
                    'XLim',xlim,...
                    'Box','On',...
                    'XTickLabelMode','manual',...
                    'XTick',tics,...
                    'XTickLabel',xlabs...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Rec_LowFil'), ...
                    'Parent',axe_Lo_R);

                axe_Hi_D = axes(commonAxesProp{:},'Position',pos_Hi_D);
                wdstem(axe_Hi_D,xVal_f,Hi_D,stemCOL,1);
                set(axe_Hi_D,...
                    'YLim',yaxis_d,...
                    'XLim',xlim,...
                    'Box','On',...
                    'XTickLabelMode','manual',...
                    'XTick',tics,...
                    'XTickLabel',xlabs...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Dec_HigFil'), ...
                    'Parent',axe_Hi_D);

                axe_Hi_R = axes(commonAxesProp{:},'Position',pos_Hi_R);
                wdstem(axe_Hi_R,xVal_f,Hi_R,stemCOL,1);
                set(axe_Hi_R,...
                    'YLim',yaxis_r,...
                    'XLim',xlim,...
                    'Box','On',...
                    'XTickLabelMode','manual',...
                    'XTick',tics,...
                    'XTickLabel',xlabs...
                    );
                wtitle(getWavMSG('Wavelet:divGUIRF:Rec_HigFil'), ...
                    'Parent',axe_Hi_R);

                axe_cmd = [axe_phi1 axe_phi2 axe_psi1 axe_psi2];
                axe_act = [axe_Lo_D axe_Hi_D axe_Lo_R axe_Hi_R];

            case 3
                str_wintitle = ...
                    getWavMSG('Wavelet:divGUIRF:NamWinWV',Wave_Fam,Wave_Nam);
                [phi,psi,xVal] = wavefun(Wave_Nam,prec_val);
                h_axe   = h_graph-bdy_d-bdy_u;
                w_axe   = (w_graph-3*bdx)/2;
                pos_phi = [bdx,bdyl,w_axe,h_axe];
                pos_psi = [2*bdx+w_axe,bdyl,w_axe,h_axe];

                axeProp  = [commonAxesProp,'Position',pos_phi];
                axeTitle = getWavMSG('Wavelet:divGUIRF:ScaFunPhi');
                axe_phi  = plotYval(xVal,phi,axeProp,'r',axeTitle);

                axeProp  = [commonAxesProp,'Position',pos_psi];
                axeTitle = getWavMSG('Wavelet:divGUIRF:WavFunPsi');
                axe_psi  = plotYval(xVal,psi,axeProp,'g',axeTitle);

                axe_cmd = [axe_phi axe_psi];
                axe_act = [];

            case 4
                str_wintitle = ...
                    getWavMSG('Wavelet:divGUIRF:NamWinWV',Wave_Fam,Wave_Nam);
                [psi,xVal]   = wavefun(Wave_Nam,prec_val);
                h_axe   = h_graph-bdy_d-bdy_u;
                w_axe   = w_graph-2*bdx;
                pos_psi = [bdx,bdyl,w_axe,h_axe];

                axeProp  = [commonAxesProp,'Position',pos_psi];
                axeTitle = getWavMSG('Wavelet:divGUIRF:WavFunPsi');
                axe_psi  = plotYval(xVal,psi,axeProp,'g',axeTitle);

                axe_cmd = axe_psi;
                axe_act = [];

            case 5
                str_wintitle = ...
                    getWavMSG('Wavelet:divGUIRF:NamWinWV',Wave_Fam,Wave_Nam);
                [psi,xVal] = wavefun(Wave_Nam,prec_val);
                h_axe  = (h_graph-bdy_d-bdy_u-bdy)/2;
                w_axe  = (w_graph-3*bdx)/2;

                pos_abs = [bdx,bdyl,w_axe,h_axe];
                pos_ang = [2*bdx+w_axe,bdyl,w_axe,h_axe];
                y_axe   = bdyl+h_axe+bdy;
                pos_rea = [bdx,y_axe,w_axe,h_axe];
                pos_ima = [2*bdx+w_axe,y_axe,w_axe,h_axe];

                yVal     = real(psi);
                axeProp  = [commonAxesProp,'Position',pos_rea];
                axeTitle = getWavMSG('Wavelet:divGUIRF:ReaPartPsi');
                axe_rea  = plotYval(xVal,yVal,axeProp,'r',axeTitle);

                yVal     = imag(psi);
                axeProp  = [commonAxesProp,'Position',pos_ima];
                axeTitle = getWavMSG('Wavelet:divGUIRF:ImgPartPsi');
                axe_ima  = plotYval(xVal,yVal,axeProp,'g',axeTitle);

                yVal     = abs(psi);
                axeProp  = [commonAxesProp,'Position',pos_abs];
                axeTitle = getWavMSG('Wavelet:divGUIRF:ModPartPsi');
                axe_abs  = plotYval(xVal,yVal,axeProp,'r',axeTitle);

                yVal     = angle(psi);
                axeProp  = [commonAxesProp,'Position',pos_ang];
                axeTitle = getWavMSG('Wavelet:divGUIRF:AngPartPsi');
                axe_ang  = plotYval(xVal,yVal,axeProp,'g',axeTitle);
 
                axe_cmd = [axe_rea axe_ima axe_abs axe_ang];
                axe_act = [];
        end

        % Display status line.
        %---------------------
        wfigtitl('String',win_loctool,str_wintitle,'on');

        % Axes attachment.
        %-----------------
        dynvtool('init',win_loctool,[],axe_cmd,axe_act,[0 0]);

        % Setting units to normalized.
        %-----------------------------
        set(findobj(win_loctool,'Units','pixels'),'Units','normalized');

        % End waiting.
        %-------------
        wwaiting('off',win_loctool);

    case 'new'
        %*************************************************%
        %** OPTION = 'new' -  test drawing parameters   **%
        %*************************************************%
        win_loctool = varargin{1};

        % Handles of tagged objects.
        %---------------------------
        pop_handles  = findobj(win_loctool,'Style','popupmenu');
        pop_prec_val = findobj(pop_handles,'Tag',tag_prec_val);

        % Test Main parameters selection before drawing.
        %-----------------------------------------------
        Wave_Nam = cbanapar('get',win_loctool,'wav');
        Wave_Fam = wavemngr('fam_num',Wave_Nam);
        prec_val = get(pop_prec_val,'Value')+4;
        [wfam,wnam,raf] = wmemtool('rmb',win_loctool,n_miscella,...
                                ind_wave_fam,ind_wave_nam,ind_refinement);
        if raf~=prec_val || ~strcmp(wnam,Wave_Nam) || ~strcmp(wfam,Wave_Fam)
            varargout = {1,Wave_Fam,Wave_Nam,prec_val};
        else
            varargout = {0,Wave_Fam,Wave_Nam,prec_val};
            return
        end

        % Setting refinement to 0 (as flag).
        %----------------------------------
        wmemtool('wmb',win_loctool,n_miscella,ind_refinement,0);

        % Cleaning the graphical part.
        %-----------------------------
        dynvtool('stop',win_loctool);
        axe_handles = findobj(get(win_loctool,'Children'),'flat', ...
                              'Type','axes','Visible','on');
        delete(axe_handles);
        wfigtitl('vis',win_loctool,'off');

    case 'demo'
        %*******************************************%
        %** OPTION = 'demo' -  for DEMOS or TESTS **%
        %*******************************************%
        win_loctool = varargin{1};
        Wave_Nam    = varargin{2};

        % Handles of tagged objects.
        %---------------------------
        children     = get(win_loctool,'Children');
        uic_handles  = findobj(children,'flat','Type','uicontrol');
        pop_handles  = findobj(uic_handles,'Style','popupmenu');
        pop_prec_val = findobj(pop_handles,'Tag',tag_prec_val);
        pus_handles  = findobj(uic_handles,'Style','pushbutton');
        pus_inf1     = findobj(pus_handles,'Tag',tag_pus_inf1);

        cbanapar('set',win_loctool,'wav',Wave_Nam);
        [Wave_Fam,tabNums] = wavemngr('fields',Wave_Nam,'fsn','tabNums');

        if nargin==4
            set(pop_prec_val,'Value',varargin{3});
        end
        if size(tabNums,1)>1
            str_inf1 = getWavMSG('Wavelet:divGUIRF:Info_WV_2',Wave_Fam);
        else
            str_inf1 = getWavMSG('Wavelet:divGUIRF:Info_WV_1',Wave_Fam);
        end
        set(pus_inf1,'String',str_inf1);
        wvdtool('draw1d',win_loctool);

    case 'close'

    otherwise
        errargt(mfilename,getWavMSG('Wavelet:moreMSGRF:Unknown_Opt'),'msg');
        error(message('Wavelet:FunctionArgVal:Invalid_ArgVal'));
end

%=============================================================================%
% INTERNAL FUNCTIONS
%=============================================================================%
%-----------------------------------------------------------------------------%
function axe = plotYval(xVal,yVal,axeProp,color,axeTitle)

xlim  = [min(xVal) , max(xVal)];
mini  = min(yVal);
maxi  = max(yVal);
dyVal = maxi-mini;
if dyVal<sqrt(eps) , dyVal = sqrt(eps);end
ylim = [mini maxi]+0.02*dyVal*[-1 1];
axe  = axes(axeProp{:},'XLim',xlim,'YLim',ylim);
line('XData',xVal,'YData',yVal,'Color',color,'Parent',axe);
wtitle(axeTitle,'Parent',axe);
%-----------------------------------------------------------------------------%
%=============================================================================%