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

    function varargout = imgxtool(option,varargin)
%IMGXTOOL Image extension tool.
%   VARARGOUT = IMGXTOOL(OPTION,VARARGIN)
%
%   GUI oriented tool which allows the construction of a new
%   image from an original one by truncation or extension.
%   Extension is done by selecting different possible modes:
%   Symmetric, Periodic, Zero Padding, Continuous or Smooth.
%   A special mode is provided to extend an image in order 
%   to be accepted by the SWT decomposition.
%------------------------------------------------------------
%   Internal options:
%
%   OPTION = 'create'          'load'             'demo'
%            'update_deslen'   'extend_truncate'
%            'draw'            'save'
%            'clear_graphics'  'mode'
%            'close'
%
%   See also WEXTEND.

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 30-Nov-98.
%   Last Revision: 10-Jun-2013.
%   Copyright 1995-2013 The MathWorks, Inc.
%   $Revision: 1.12.4.19 $  $Date: 2013/07/05 04:30:16 $

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

% Default values.
%----------------
default_nbcolors = 255;

% Image Coding Value.
%-------------------
codemat_v = wimgcode('get');

% Initializations for all options excepted 'create'.
%---------------------------------------------------
switch option

  case 'create'
  
  otherwise
    % Get figure handle.
    %-------------------
    win_imgxtool = varargin{1};

    % Get stored structure.
    %----------------------
    Hdls_UIC_C      = wfigmngr('getValue',win_imgxtool,'Hdls_UIC_C');
    Hdls_UIC_H      = wfigmngr('getValue',win_imgxtool,'Hdls_UIC_H');
    Hdls_UIC_V      = wfigmngr('getValue',win_imgxtool,'Hdls_UIC_V');
    Hdls_UIC_Swt    = wfigmngr('getValue',win_imgxtool,'Hdls_UIC_Swt');
    Hdls_Axes       = wfigmngr('getValue',win_imgxtool,'Hdls_Axes');
    Hdls_Colmap     = wfigmngr('getValue',win_imgxtool,'Hdls_Colmap');
    Pos_Axe_Img_Ori = wfigmngr('getValue',win_imgxtool,'Pos_Axe_Img_Ori');
 
    % Get UIC Handles.
    %-----------------
    [m_load,m_save,m_demo,txt_image,edi_image,...
    txt_mode,pop_mode,pus_extend] = deal(Hdls_UIC_C{:}); %#ok<ASGLU>
    m_exp_sig = wtbxappdata('get',win_imgxtool,'m_exp_sig'); 
 
    [frm_fra_H,txt_fra_H,txt_length_H,edi_length_H,txt_nextpow2_H,  ...
     edi_nextpow2_H,txt_prevpow2_H,edi_prevpow2_H,txt_deslen_H,     ...
     edi_deslen_H,txt_direct_H,pop_direct_H] = deal(Hdls_UIC_H{:}); %#ok<ASGLU>
 
    [frm_fra_V,txt_fra_V,txt_length_V,edi_length_V,txt_nextpow2_V,  ...
     edi_nextpow2_V,txt_prevpow2_V,edi_prevpow2_V,txt_deslen_V,     ...
     edi_deslen_V,txt_direct_V,pop_direct_V] = deal(Hdls_UIC_V{:}); %#ok<ASGLU>
 
    [txt_swtdec,pop_swtdec,frm_fra_H_2,txt_fra_H_2,txt_swtlen_H,    ...
     edi_swtlen_H,txt_swtclen_H,edi_swtclen_H,txt_swtdir_H,         ...
     edi_swtdir_H,txt_swtdec,pop_swtdec,frm_fra_V_2,txt_fra_V_2,    ...
     txt_swtlen_V,edi_swtlen_V,txt_swtclen_V,edi_swtclen_V          ...
     ] = deal(Hdls_UIC_Swt{1:end-2}); %#ok<ASGLU>
end

% Process control depending on the calling option.
%-------------------------------------------------
switch option

    case 'create'
    %-------------------------------------------------------%
    % Option: 'CREATE' - Create Figure, Uicontrols and Axes %
    %-------------------------------------------------------%
	
        % Get Globals.
        %-------------
        [btn_Height,Def_Btn_Width, ...
        X_Spacing,Y_Spacing,ediActBkColor,ediInActBkColor,    ...
        Def_FraBkColor,Def_ShadowColor] =                     ...
                mextglob('get',                               ...
                'Def_Btn_Height','Def_Btn_Width',             ...
                'X_Spacing','Y_Spacing',                      ...
                'Def_Edi_ActBkColor','Def_Edi_InActBkColor',  ...
                'Def_FraBkColor','Def_ShadowColor' ...
                );

        % Window initialization.
        %-----------------------
        [win_imgxtool,pos_win,win_units,str_numwin,pos_frame0] = ...
                wfigmngr('create',getWavMSG('Wavelet:divGUIRF:Imgx_Name'),  ...
                         winAttrb,'ExtFig_Tool_3',                 ...
                        {mfilename,'cond'},1,1,0);
        if nargout>0 , varargout{1} = win_imgxtool; end
		
		% Add Help for Tool.
		%------------------
		wfighelp('addHelpTool',win_imgxtool, ...
			getWavMSG('Wavelet:divGUIRF:II_D_Ext'),'IMGX_GUI');

		% Add Help Item.
		%----------------
		wfighelp('addHelpItem',win_imgxtool,...
			getWavMSG('Wavelet:divGUIRF:BordDist'),'BORDER_DIST');

        % Menu construction for current figure.
        %--------------------------------------
        m_files = wfigmngr('getmenus',win_imgxtool,'file');
        m_load  = uimenu(m_files,...
            'Label',getWavMSG('Wavelet:commongui:Load_Image'),'Position',1, ...
            'Callback',[mfilename '(''load'',' str_numwin ');']  ...            
            );
        m_save  = uimenu(m_files,...
            'Label',getWavMSG('Wavelet:divGUIRF:Save_Image'),     ...
            'Position',2,                            ...
            'Enable','Off',                          ...
            'Callback',                              ...
            [mfilename '(''save'',' str_numwin ');'] ...
            );
        m_demo  = uimenu(m_files, ...
           'Label',getWavMSG('Wavelet:commongui:Example_Ext'),'Position',3);
        uimenu(m_files,...
            'Label',getWavMSG('Wavelet:commongui:Import_Image'), ...
            'Position',4,'Separator','On', ...
            'Tag','Import', ...
            'Callback', ...
            [mfilename '(''load'',' str_numwin ',''wrks'');'] ...
            );
        m_exp_sig = uimenu(m_files,...
            'Label',getWavMSG('Wavelet:commongui:Str_ExpImg'),  ...
            'Position',5,'Enable','Off','Separator','Off', ...
            'Tag','Export', ...            
            'Callback',[mfilename '(''exp_wrks'',' str_numwin ');']  ...
            ); 
        
        m_demoIDX = uimenu(m_demo,...
            'Label',getWavMSG('Wavelet:dw2dRF:Lab_IndImg'),...
            'Tag','Lab_IndImg','Position',1);
        m_demoCOL = uimenu(m_demo,...
            'Label',getWavMSG('Wavelet:dw2dRF:Lab_ColImg'),...
            'Tag','Lab_ColImg','Position',2);
        demoSET = {...
         'woman2'  , 'ext'   , '{''zpd'' , [220,200] , ''both'' , ''both''}' , 'BW' ; ...
         'woman2'  , 'trunc' , '{''nul'' , [ 96, 96] , ''both'' , ''both''}' , 'BW' ; ...
         'wbarb'   , 'ext'   , '{''sym'' , [512,200] , ''right'', ''both''}' , 'BW' ; ...
         'noiswom' , 'ext'   , '{''sym'' , [512,512] , ''right'', ''down''}' , 'BW' ; ...
         'noiswom' , 'ext'   , '{''ppd'' , [512,512] , ''right'', ''down''}' , 'BW' ; ...
         'wbarb'   , 'ext'   , '{''sym'' , [512,512] , ''both'' , ''both''}' , 'BW' ; ...
         'facets'  , 'ext'   , '{''ppd'' , [512,512] , ''both'' , ''both''}' , 'COL' ; ...
         'mandel'  , 'ext'   , '{''sym'' , [512,512] , ''left'' , ''both''}' , 'COL'  ...
         };
        nbDEM = size(demoSET,1);
        beg_call_str = [mfilename '(''demo'',' str_numwin ','''];
        for k = 1:nbDEM
            typ = demoSET{k,2};
            fil = demoSET{k,1};
            par = demoSET{k,3};
            optIMG = demoSET{k,4};
            libel = getWavMSG(['Wavelet:divGUIRF:ImgEXT_Ex' int2str(k)]);
            action = [beg_call_str fil  ''',''' typ ''',' par ...
                            ''',''' optIMG ''');'];
            if k<7 , md = m_demoIDX; else md = m_demoCOL; end
            uimenu(md,'Label',libel,'Callback',action);
        end

        % Borders and double borders.
        %----------------------------
        dx = X_Spacing; dx2 = 2*dx;
        dy = Y_Spacing; dy2 = 2*dy;

        % General graphical parameters initialization.
        %--------------------------------------------
        x_frame0  = pos_frame0(1);
        cmd_width = pos_frame0(3);
        pus_width = cmd_width-4*dx2;
        unit_width = cmd_width/20;
        txt_width = 9*unit_width;
        edi_width = 5*unit_width;
        pop_width = 5*unit_width;
        bdx       = 0.08*pos_win(3);
        bdy       = 0.06*pos_win(4);
        x_graph   = bdx;
        y_graph   = 2*btn_Height+dy;
        h_graph   = pos_frame0(4)-y_graph;
        w_graph   = pos_frame0(1);
        

        % Command part of the window.
        %============================

        % Position property of objects.
        %------------------------------
        delta_Xleft        = wtbutils('extension_PREFS');          
        xlocINI            = [x_frame0 cmd_width];
        ybottomINI         = pos_win(4)-dy2;
        x_left_0           = x_frame0 + unit_width;
        x_left_1           = x_left_0 + txt_width/2 + delta_Xleft;
        x_left_2           = x_left_0 + txt_width + 2*unit_width + dx ;
        
        y_low              = ybottomINI-(1/2*btn_Height+1*dy2);
        pos_txt_image      = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_image      = ...
            [x_left_1+unit_width, y_low+dy/2, 2*edi_width, btn_Height];

        y_low              = y_low-1*(btn_Height+3*dy2);  %high DPI 2*dy2
        pos_txt_length_H   = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_length_H   = [x_left_2, y_low+dy/2, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+1*dy2);
        pos_txt_nextpow2_H = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_nextpow2_H = [x_left_2, y_low+dy/2, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+1*dy2);
        pos_txt_prevpow2_H = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_prevpow2_H = [x_left_2, y_low+dy/2, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+1*dy2);
        pos_txt_deslen_H   = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_deslen_H   = [x_left_2, y_low+dy/2, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+1*dy2);
        pos_txt_direct_H   = [x_left_0, y_low, txt_width, btn_Height];
        pos_pop_direct_H   = [x_left_2, y_low+dy/2, pop_width , btn_Height];

        fra_left           = x_frame0+unit_width/4;
        fra_low            = y_low-dy;
        fra_width          = cmd_width-unit_width/2;
        fra_height         = 5*(btn_Height+1*dy2)+dy2;
        pos_fra_H          = [fra_left, fra_low, fra_width, fra_height];
        txt_fra_H_height   = 3*btn_Height/4;
        txt_fra_H_width    = Def_Btn_Width;
        txt_fra_H_low      = (fra_low + fra_height) - (txt_fra_H_height / 2);
        txt_fra_H_left     = fra_left + (fra_width - txt_fra_H_width) / 2;
        pos_txt_fra_H      = [txt_fra_H_left, txt_fra_H_low, ...
                               txt_fra_H_width, txt_fra_H_height];
 
        y_low              = fra_low-1.5*(btn_Height+2*dy2); %1.5*btn_Height
        pos_txt_length_V   = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_length_V   = [x_left_2, y_low+dy, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+dy2);
        pos_txt_nextpow2_V = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_nextpow2_V = [x_left_2, y_low+dy/2, edi_width, btn_Height];

        y_low              = y_low-(btn_Height+dy2/2);
        pos_txt_prevpow2_V = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_prevpow2_V = [x_left_2, y_low+dy/2, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+dy2/2);
        pos_txt_deslen_V   = [x_left_0, y_low, txt_width btn_Height];
        pos_edi_deslen_V   = [x_left_2, y_low+dy/2, edi_width , btn_Height];

        y_low              = y_low-(btn_Height+1*dy2/2);
        pos_txt_direct_V   = [x_left_0, y_low, txt_width, btn_Height];
        pos_pop_direct_V   = [x_left_2, y_low+dy/2, edi_width , btn_Height];
 
        fra_left           = x_frame0+unit_width/4;
        fra_low            = y_low-dy/2;
        fra_width          = cmd_width-unit_width/2;
        fra_height         = 5*(btn_Height+dy2)+dy2;
        pos_fra_V          = [fra_left, fra_low, fra_width, fra_height];
        txt_fra_V_height   = 3* btn_Height/4;
        txt_fra_V_width    = Def_Btn_Width;
        txt_fra_V_low      = (fra_low + fra_height) - (txt_fra_V_height / 2);
        txt_fra_V_left     = fra_left + (fra_width - txt_fra_V_width) / 2;
        pos_txt_fra_V      = [txt_fra_V_left, txt_fra_V_low, ...
                               txt_fra_V_width, txt_fra_V_height];

        x_left             = x_left_0-dx2+(cmd_width-9*unit_width)/2;
        y_low              = fra_low-(btn_Height/2+1*dy2);  %btn_Height/2
        pos_txt_mode       = [x_left, y_low, 12*unit_width btn_Height];
 
        y_low              = y_low-(btn_Height/2+dy);  %dy/4  btn_Height/2
        pop_mode_width     = cmd_width - 6*dx2;
        xleft_pop          = x_frame0+3*dx2;
        pos_pop_mode       = [xleft_pop, y_low+10, pop_mode_width/2 , btn_Height/1.5];  %pop_mode_width/2

        y_low              = y_low-1.5*btn_Height-dy/4;  %dy/4  2*btn_Height to 1.5*btn_Height
        pos_pus_extend     = [x_left_0+dx2, y_low+10, pus_width-10 , btn_Height/1.5]; %High DPI pus_width-10

        pos_fra_H_2        = pos_fra_H;
        pos_fra_H_2(2)     = pos_fra_H(2)-btn_Height;
        pos_fra_H_2(4)     = 3*(btn_Height+2*dy2)+dy;

        txt_fra_H_height   = 3*btn_Height/4;
        txt_fra_H_width    = Def_Btn_Width;
        txt_fra_H_low      = (pos_fra_H_2(2)+pos_fra_H_2(4))-(txt_fra_H_height/2);
        txt_fra_H_left     = pos_fra_H_2(1)+(pos_fra_H_2(3)-txt_fra_H_width)/ 2;
        pos_txt_fra_H_2    = [txt_fra_H_left, txt_fra_H_low,...
                              txt_fra_H_width, txt_fra_H_height];
 
        x_left             = x_left_0-dx2;
        y_low              = pos_fra_H_2(2)+pos_fra_H_2(4)+3*dy2;
        pos_txt_swtdec     = [x_left, y_low, 9*txt_width/8, btn_Height];
        x_left             = x_left + pos_txt_swtdec(3);
        pos_pop_swtdec     = [x_left, y_low+dy, edi_width, btn_Height];
 
        y_low              = pos_fra_H_2(2)+pos_fra_H_2(4)-(btn_Height+2*dy2);
        pos_txt_swtlen_H   = [x_left_0, y_low, txt_width, btn_Height];
        pos_edi_swtlen_H   = [x_left_2, y_low+dy, edi_width, btn_Height];
 
        y_low              = y_low-(btn_Height+2*dy2);
        pos_txt_swtclen_H  = [x_left_0, y_low, txt_width, btn_Height];
        pos_edi_swtclen_H  = [x_left_2, y_low+dy, edi_width, btn_Height];
 
        y_low              = y_low-(btn_Height+2*dy2);
        pos_txt_swtdir_H   = [x_left_0, y_low, txt_width, btn_Height];
        pos_edi_swtdir_H   = [x_left_2, y_low+dy, edi_width, btn_Height];
 
        pos_fra_V_2        = pos_fra_V;
        pos_fra_V_2(4)     = 3*(btn_Height+2*dy2)+dy;

        txt_fra_V_height   = 3*btn_Height/4;
        txt_fra_V_width    = Def_Btn_Width;
        txt_fra_V_low      = pos_fra_V_2(2)+pos_fra_V_2(4)- txt_fra_V_height/2;
        txt_fra_V_left     = pos_fra_V_2(1)+(pos_fra_V_2(3)-txt_fra_V_width)/2;
        pos_txt_fra_V_2    = [txt_fra_V_left, txt_fra_V_low,...
                              txt_fra_V_width, txt_fra_V_height];
 
        y_low              = pos_fra_V_2(2)+pos_fra_V_2(4)-(btn_Height+2*dy2);
        pos_txt_swtlen_V   = [x_left_0, y_low, txt_width, btn_Height];
        pos_edi_swtlen_V   = [x_left_2, y_low+dy, edi_width, btn_Height];
 
        y_low              = y_low-(btn_Height+2*dy2);
        pos_txt_swtclen_V  = [x_left_0, y_low, txt_width, btn_Height];
        pos_edi_swtclen_V  = [x_left_2, y_low+dy, edi_width, btn_Height];
 
        y_low              = y_low-(btn_Height+2*dy2);
        pos_txt_swtdir_V   = [x_left_0, y_low, txt_width, btn_Height];
        pos_edi_swtdir_V   = [x_left_2, y_low+dy, edi_width, btn_Height];

        % String property of objects.
        %----------------------------
        str_txt_image    = getWavMSG('Wavelet:commongui:Str_Image');
        str_edi_image    = '';
        str_txt_length   = getWavMSG('Wavelet:commongui:Str_Length');
        str_edi_length   = '';
        str_txt_nextpow2 = getWavMSG('Wavelet:divGUIRF:Str_Nextpow2');
        str_edi_nextpow2 = '';
        str_txt_prevpow2 = getWavMSG('Wavelet:divGUIRF:Str_Prevpow2');
        str_edi_prevpow2 = '';
        str_txt_deslen   = getWavMSG('Wavelet:divGUIRF:Str_DesLength');
        str_edi_deslen   = '';
        str_txt_direct   = getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext');
        str_pop_direct_H = { ...
            getWavMSG('Wavelet:divGUIRF:Str_dir_Both') ; ...
            getWavMSG('Wavelet:divGUIRF:Str_dir_Left') ; ...
            getWavMSG('Wavelet:divGUIRF:Str_dir_Right')  ...
            };
        str_pop_direct_V = {...
            getWavMSG('Wavelet:divGUIRF:Str_dir_Both') ; ...
            getWavMSG('Wavelet:divGUIRF:Str_dir_Up') ; ...
            getWavMSG('Wavelet:divGUIRF:Str_dir_Down')  ...
            };
        str_txt_fra_H    = getWavMSG('Wavelet:divGUIRF:Str_HOR');
        str_txt_fra_H_2  = getWavMSG('Wavelet:divGUIRF:Str_HOR');
        str_txt_fra_V    = getWavMSG('Wavelet:divGUIRF:Str_VER');
        str_txt_fra_V_2  = getWavMSG('Wavelet:divGUIRF:Str_VER');
        str_txt_mode     = getWavMSG('Wavelet:divGUIRF:Str_ExtM');
        str_pop_mode     = {...
            getWavMSG('Wavelet:divGUIRF:ExtM_Symmetric_H'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_Symmetric_W'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_Antisymmetric_H'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_Antisymmetric_W'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_Periodic'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_ZPD'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_Continuous'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_Smooth'), ...
            getWavMSG('Wavelet:divGUIRF:ExtM_For_SWT')  ...            
             };        
        str_pus_extend    = getWavMSG('Wavelet:divGUIRF:Str_Extend');
        str_txt_swtdec    = getWavMSG('Wavelet:divGUIRF:SWT_DecLev');
        str_pop_swtdec    = num2str((1:10)');
        str_txt_swtlen_H  = getWavMSG('Wavelet:commongui:Str_Length');
        str_edi_swtlen_H  = '';
        str_txt_swtclen_H = getWavMSG('Wavelet:divGUIRF:Computed_Length');
        str_edi_swtclen_H = '';
        str_txt_swtdir_H  = getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext');
        str_edi_swtdir_H  = getWavMSG('Wavelet:divGUIRF:Str_dir_Right');
        str_tip_swtclen_H = getWavMSG('Wavelet:divGUIRF:Computed_Length');
        str_tip_swtclen_V = str_tip_swtclen_H;
        str_txt_swtlen_V  = getWavMSG('Wavelet:commongui:Str_Length');
        str_edi_swtlen_V  = '';
        str_txt_swtclen_V = getWavMSG('Wavelet:divGUIRF:Computed_Length');
        str_edi_swtclen_V = '';
        str_txt_swtdir_V  = getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext');
        str_edi_swtdir_V  = getWavMSG('Wavelet:divGUIRF:Str_dir_Down');
 
        % Construction of uicontrols.
        %----------------------------
        commonProp = {...
            'Parent',win_imgxtool, ...
            'Units',win_units,      ...
            'Visible','off'        ...
            };
        comFraProp = [commonProp, ...
            'BackgroundColor',Def_FraBkColor, ...
            'ForegroundColor',Def_ShadowColor,  ...
            'Style','frame'                   ...
            ];
        comPusProp = [commonProp,'Style','pushbutton'];
        comPopProp = [commonProp,'Style','Popupmenu'];
        comTxtProp = [commonProp, ...
            'ForegroundColor','k',            ...
            'BackgroundColor',Def_FraBkColor, ...
            'HorizontalAlignment','left',     ...
            'Style','Text'                    ...
            ];
        comEdiProp = [commonProp, ...
            'ForegroundColor','k',          ...
            'HorizontalAlignment','center', ...
            'Style','Edit'                  ...
            ];

        txt_image = uicontrol( ...
            comTxtProp{:},                     ...
            'Position',pos_txt_image,          ...
            'String',str_txt_image             ...
            );
        edi_image = uicontrol( ...
            comEdiProp{:},                     ...
            'Position',pos_edi_image,          ...
            'String',str_edi_image,            ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );

        frm_fra_H = uicontrol(  ...
            comFraProp{:},                     ...
            'Position',pos_fra_H               ...
            );
        txt_fra_H = uicontrol(  ...
            comTxtProp{:},                     ...
            'HorizontalAlignment','center',    ...
            'Position',pos_txt_fra_H,          ...
            'String',str_txt_fra_H             ...
            );
        txt_length_H   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_length_H,       ...
            'String',str_txt_length            ...
            );
        edi_length_H   = uicontrol( ...
            comEdiProp{:},                     ...
            'Position',pos_edi_length_H,       ...
            'String',str_edi_length,           ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_nextpow2_H = uicontrol( ...
            comTxtProp{:},                     ...
            'Position',pos_txt_nextpow2_H,     ...
            'String',str_txt_nextpow2          ...
            );
        edi_nextpow2_H = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_nextpow2_H,     ...
            'String',str_edi_nextpow2,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_prevpow2_H = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_prevpow2_H,     ...
            'String',str_txt_prevpow2          ...
            );
        edi_prevpow2_H = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_prevpow2_H,     ...
            'String',str_edi_prevpow2,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_deslen_H   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_deslen_H,       ...
            'String',str_txt_deslen            ...
            );
        edi_deslen_H   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_deslen_H,       ...
            'String',str_edi_deslen,           ...
            'BackgroundColor',ediActBkColor   ...
            );
        txt_direct_H   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_direct_H,       ...
            'String',str_txt_direct            ...
            );
        pop_direct_H   = uicontrol(  ...
            comPopProp{:},                     ...
            'Position',pos_pop_direct_H,       ...
            'String',str_pop_direct_H          ...
            );

        frm_fra_V      = uicontrol(  ...
            comFraProp{:},                     ...
            'Position',pos_fra_V               ...
            );
        txt_fra_V      = uicontrol(  ...
            comTxtProp{:},                     ...
            'HorizontalAlignment','center',    ...
            'Position',pos_txt_fra_V,          ...
            'String',str_txt_fra_V             ...
            );
        txt_length_V   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_length_V,       ...
            'String',str_txt_length            ...
            );
        edi_length_V   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_length_V,       ...
            'String',str_edi_length,           ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );

        txt_nextpow2_V = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_nextpow2_V,     ...
            'String',str_txt_nextpow2          ...
            );
        edi_nextpow2_V = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_nextpow2_V,     ...
            'String',str_edi_nextpow2,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_prevpow2_V = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_prevpow2_V,     ...
            'String',str_txt_prevpow2          ...
            );
        edi_prevpow2_V = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_prevpow2_V,     ...
            'String',str_edi_prevpow2,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_deslen_V   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_deslen_V,       ...
            'String',str_txt_deslen            ...
            );
        edi_deslen_V   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_deslen_V,       ...
            'String',str_edi_deslen,           ...
            'BackgroundColor',ediActBkColor   ...
            );
        txt_direct_V   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_direct_V,       ...
            'String',str_txt_direct            ...
            );
        pop_direct_V   = uicontrol(  ...
            comPopProp{:},                     ...
            'Position',pos_pop_direct_V,       ...
            'String',str_pop_direct_V          ...
            );

        txt_mode       = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_mode,           ...
            'String',str_txt_mode              ...
            );
        pop_mode       = uicontrol(  ...
            comPopProp{:},                     ...
            'Position',pos_pop_mode,           ...
            'String',str_pop_mode              ...
            );
        pus_extend     = uicontrol(  ...
            comPusProp{:},              ...
            'Position',pos_pus_extend,  ...
            'String',str_pus_extend,    ...
            'Tag','Extend',             ...             
            'Interruptible','On'        ...
            );

        txt_swtdec     = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtdec,         ...
            'String',str_txt_swtdec            ...
            );
        pop_swtdec     = uicontrol(  ...
            comPopProp{:},                     ...
            'Position',pos_pop_swtdec,         ...
            'String',str_pop_swtdec            ...
            );
        frm_fra_H_2    = uicontrol(  ...
            comFraProp{:},                     ...
            'Position',pos_fra_H_2             ...
            );
        txt_fra_H_2    = uicontrol(  ...
            comTxtProp{:},                     ...
            'HorizontalAlignment','center',    ...
            'Position',pos_txt_fra_H_2,        ...
            'String',str_txt_fra_H_2           ...
            );
        txt_swtlen_H   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtlen_H,       ...
            'String',str_txt_swtlen_H          ...
            );
        edi_swtlen_H   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_swtlen_H,       ...
            'String',str_edi_swtlen_H,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_swtclen_H  = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtclen_H,      ...
            'TooltipString',str_tip_swtclen_H, ...
            'String',str_txt_swtclen_H         ...
            );
        edi_swtclen_H  = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_swtclen_H,      ...
            'String',str_edi_swtclen_H,        ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_swtdir_H   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtdir_H,       ...
            'String',str_txt_swtdir_H          ...
            );
        edi_swtdir_H   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_swtdir_H,       ...
            'String',str_edi_swtdir_H,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        frm_fra_V_2    = uicontrol(  ...
            comFraProp{:},                     ...
            'Position',pos_fra_V_2             ...
            );
        txt_fra_V_2    = uicontrol(  ...
            comTxtProp{:},                     ...
            'HorizontalAlignment','center',    ...
            'Position',pos_txt_fra_V_2,        ...
            'String',str_txt_fra_V_2           ...
            );
        txt_swtlen_V   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtlen_V,       ...
            'String',str_txt_swtlen_V          ...
            );
        edi_swtlen_V   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_swtlen_V,       ...
            'String',str_edi_swtlen_V,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_swtclen_V  = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtclen_V,      ...
            'TooltipString',str_tip_swtclen_V, ...
            'String',str_txt_swtclen_V         ...
            );
        edi_swtclen_V  = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_swtclen_V,      ...
            'String',str_edi_swtclen_V,        ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
        txt_swtdir_V   = uicontrol(  ...
            comTxtProp{:},                     ...
            'Position',pos_txt_swtdir_V,       ...
            'String',str_txt_swtdir_V          ...
            );
        edi_swtdir_V   = uicontrol(  ...
            comEdiProp{:},                     ...
            'Position',pos_edi_swtdir_V,       ...
            'String',str_edi_swtdir_V,         ...
            'BackgroundColor',ediInActBkColor,  ...
            'Enable','Inactive'                ...
            );
                             
        % Callback property of objects.
        %------------------------------
        str_win_imgxtool = num2mstr(win_imgxtool);
        cba_edi_deslen_H = [mfilename '(''update_deslen'','   ...
                                 str_win_imgxtool             ...
                                 ',''H'');'];
        cba_edi_deslen_V = [mfilename '(''update_deslen'','   ...
                                 str_win_imgxtool             ...
                                 ',''V'');'];
        cba_pop_direct_H = [mfilename '(''clear_GRAPHICS'','  ...
                                 str_win_imgxtool             ...
                                 ');'];
        cba_pop_direct_V = [mfilename '(''clear_GRAPHICS'','  ...
                                 str_win_imgxtool             ...
                                 ');'];
        cba_pop_mode 	 = [mfilename '(''mode'','            ...
                                 str_win_imgxtool             ...
                                 ');'];
        cba_pus_extend 	 = [mfilename '(''extend_truncate'',' ...
                                 str_win_imgxtool             ...
                                 ');'];
        cba_pop_swtdec 	 = [mfilename '(''update_swtdec'','   ...
                                 str_win_imgxtool             ...
                                 ');'];
        set(edi_deslen_H,'Callback',cba_edi_deslen_H);
        set(pop_direct_H,'Callback',cba_pop_direct_H);
        set(edi_deslen_V,'Callback',cba_edi_deslen_V);
        set(pop_direct_V,'Callback',cba_pop_direct_V);
        set(pop_mode,'Callback',cba_pop_mode);
        set(pus_extend,'Callback',cba_pus_extend);
        set(pop_swtdec,'Callback',cba_pop_swtdec);
        
        % Graphic part of the window.
        %============================

        % Axes Construction.
        %-------------------
        commonProp  = {...
            'Parent',win_imgxtool,           ...
            'Visible','off',                 ...
            'Units','pixels',                ...
            'XTickLabelMode','manual',       ...
            'YTickLabelMode','manual',       ...
            'XTicklabel',[],'YTickLabel',[], ...
            'XTick',[],'YTick',[],           ...
            'Box','On'                       ...
            };

        % Image Axes construction.
        %--------------------------
        x_left      = x_graph;
        x_wide      = w_graph-2*x_left;
        y_low       = y_graph+2*bdy;
        y_height    = h_graph-y_low-2*bdy;
        Pos_Axe_Img = [x_left, y_low, x_wide, y_height];
        Axe_Img     = axes( commonProp{:},         ...
                            'YDir','Reverse',      ...
                            'Position',Pos_Axe_Img ...
                            );

        % Legend Axes construction.
        %--------------------------
        X_Leg = Pos_Axe_Img(1);
        Y_Leg = Pos_Axe_Img(2) + 43*Pos_Axe_Img(4)/40;
        W_Leg = (Pos_Axe_Img(3) - Pos_Axe_Img(1)) / 2.5;
        H_Leg = (Pos_Axe_Img(4) - Pos_Axe_Img(2)) / 5;
        
        Pos_Axe_Leg = [X_Leg Y_Leg W_Leg H_Leg];
        ud.dynvzaxe.enable = 'Off';
        Axe_Leg = axes(commonProp{:},          ...
            'Position',Pos_Axe_Leg, ...
            'XLim',[0 180],         ...
            'YLim',[0 20],          ...
            'UserData',ud           ...
            );
        line(                           ...
            'Parent',Axe_Leg,          ...
            'XData',11:30,             ...
            'YData',ones(1,20)*14,     ...
            'LineWidth',3,             ...
            'Visible','off',           ...
            'Color',[0.95 0.95 0]      ...
            );
        line(                          ...
            'Parent',Axe_Leg,          ...
            'XData',11:30,             ...
            'YData',ones(1,20)*7,      ...
            'LineWidth',3,             ...
            'Visible','off',           ...
            'Color','red'              ...
            );
        text(40,14,getWavMSG('Wavelet:divGUIRF:Trans_Image'), ...
            'Parent',Axe_Leg,          ...
            'FontWeight','normal',     ...
            'Visible','off'            ...
            );
        text(40,7,getWavMSG('Wavelet:commongui:OriImg'),  ...
            'Parent',Axe_Leg,          ...
            'FontWeight','normal',     ...
            'Visible','off'            ...
            );

        % Adding colormap GUI.
        %---------------------
        [Hdls_Colmap1,Hdls_Colmap2] = utcolmap('create',win_imgxtool, ...
                 'xloc',xlocINI,'bkcolor',Def_FraBkColor);
        Hdls_Colmap = [Hdls_Colmap1 Hdls_Colmap2];
        if iscell(Hdls_Colmap) , Hdls_Colmap = cat(1,Hdls_Colmap{:}); end 
        set(Hdls_Colmap,'Visible','off');

        % Setting units to normalized.
        %-----------------------------
        wfigmngr('normalize',win_imgxtool);

        % Store values.
        %--------------
        Hdls_UIC_C  = {...
            m_load,m_save,m_demo,...
            txt_image,edi_image,  ...
            txt_mode,pop_mode,pus_extend ...
            };
        Hdls_UIC_H  = {...
            frm_fra_H,txt_fra_H,           ...
            txt_length_H,edi_length_H,     ...
            txt_nextpow2_H,edi_nextpow2_H, ...
            txt_prevpow2_H,edi_prevpow2_H, ...
            txt_deslen_H,edi_deslen_H,     ...
            txt_direct_H,pop_direct_H      ...
            };
        Hdls_UIC_V  = {...
            frm_fra_V,txt_fra_V,           ...
            txt_length_V,edi_length_V,     ...
            txt_nextpow2_V,edi_nextpow2_V, ...
            txt_prevpow2_V,edi_prevpow2_V, ...
            txt_deslen_V,edi_deslen_V,     ...
            txt_direct_V,pop_direct_V      ...
            };

        Hdls_UIC_Swt = {...
            txt_swtdec,pop_swtdec,       ...
            frm_fra_H_2,txt_fra_H_2,     ...
            txt_swtlen_H,edi_swtlen_H,   ...
            txt_swtclen_H,edi_swtclen_H, ...
            txt_swtdir_H,edi_swtdir_H,   ...
            txt_swtdec,pop_swtdec,       ...
            frm_fra_V_2,txt_fra_V_2,     ...
            txt_swtlen_V,edi_swtlen_V,   ...
            txt_swtclen_V,edi_swtclen_V, ...
            txt_swtdir_V,edi_swtdir_V    ...
            };
 
        Hdls_Axes    = struct('Axe_Img',Axe_Img,'Axe_Leg',Axe_Leg);

        Pos_Axe_Img_Ori = get(Axe_Img,'Position');

		% Add Context Sensitive Help (CSHelp).
		%-------------------------------------
		hdl_BORDER_DIST = [txt_mode,pop_mode];
		wfighelp('add_ContextMenu',win_imgxtool,...
			hdl_BORDER_DIST,'BORDER_DIST');
		%-------------------------------------
        
		% Store handles and values.
        %--------------------------		
        wfigmngr('storeValue',win_imgxtool,'Hdls_UIC_C',Hdls_UIC_C);
        wfigmngr('storeValue',win_imgxtool,'Hdls_UIC_H',Hdls_UIC_H);
        wfigmngr('storeValue',win_imgxtool,'Hdls_UIC_V',Hdls_UIC_V);
        wfigmngr('storeValue',win_imgxtool,'Hdls_UIC_Swt',Hdls_UIC_Swt);
        wfigmngr('storeValue',win_imgxtool,'Hdls_Axes',Hdls_Axes);
        wfigmngr('storeValue',win_imgxtool,'Hdls_Colmap',Hdls_Colmap);
        wfigmngr('storeValue',win_imgxtool,'Pos_Axe_Img_Ori',Pos_Axe_Img_Ori);
        wtbxappdata('set',win_imgxtool,'m_exp_sig',m_exp_sig);

        % Set Figure Visible 'On'
        %------------------------
        set(win_imgxtool,'Visible','On');

    case 'load'
    %------------------------------------------%
    % Option: 'LOAD' - Load the original image %
    %------------------------------------------%
        if length(varargin)<2  % LOAD IMAGE
            imgFileType = getimgfiletype;
            [imgInfos,Anal_Image,map,ok] = ...
                utguidiv('load_img',win_imgxtool,imgFileType, ...
                getWavMSG('Wavelet:commongui:Load_Image'),default_nbcolors); %#ok<ASGLU>
        
        elseif isequal(varargin{2},'wrks')  % LOAD from WORKSPACE
            [imgInfos,Anal_Image,ok] = wtbximport('2d');
            % map = pink(default_nbcolors);
            
        else
            img_Name = deblank(varargin{2});
            filename = [img_Name '.mat'];
            pathname = utguidiv('WTB_DemoPath',filename);
            if length(varargin)<5 , optIMG = ''; else  optIMG = varargin{5}; end
            [imgInfos,Anal_Image,map,ok] = utguidiv('load_dem2D',...
                win_imgxtool,pathname,filename,default_nbcolors,optIMG); %#ok<ASGLU>
        end
        if ~ok, return; end
        flagIDX = length(size(Anal_Image))<3;
        setfigNAME(win_imgxtool,flagIDX)
        

        % Begin waiting.
        %---------------
        wwaiting('msg',win_imgxtool,getWavMSG('Wavelet:commongui:WaitLoad'));

        % Cleaning.
        %----------
        imgxtool('clear_GRAPHICS',win_imgxtool,'load');

        % Disable save menu.
        %-------------------
        set([m_save,m_exp_sig],'Enable','off');

        % Compute UIC values.
        %--------------------
        H           = imgInfos.size(1);
        V           = imgInfos.size(2);
        pow_H       = fix(log(H)/log(2));
        Next_Pow2_H = 2^(pow_H+1);
        if isequal(2^pow_H,H)
            Prev_Pow2_H = 2^(pow_H-1);
            swtpow_H    = pow_H;
        else
            Prev_Pow2_H = 2^pow_H;
            swtpow_H    = pow_H+1;
        end
        pow_V       = fix(log(V)/log(2));
        Next_Pow2_V = 2^(pow_V+1);
        if isequal(2^pow_V,V)
            Prev_Pow2_V   = 2^(pow_V-1);
            swtpow_V    = pow_V;
        else
            Prev_Pow2_V   = 2^pow_V;
            swtpow_V    = pow_V+1;
        end
        
        % Compute the max level value for SWT.
        %-------------------------------------
        Max_Lev = min(swtpow_H,swtpow_V);
                
        % Compute the default level for SWT .
        %-----------------------------------
        def_pow = 1;
        if ~rem(H,2)
            while ~rem(H,2^def_pow), def_pow = def_pow + 1; end
            def_level_H = def_pow-1;
        else
            def_level_H = def_pow;
        end
        
        def_pow = 1;
        if ~rem(V,2)
            while ~rem(V,2^def_pow), def_pow = def_pow + 1; end
            def_level_V = def_pow-1;
        else
            def_level_V = def_pow;
        end
        Def_Lev = min(max(def_level_H,def_level_V),Max_Lev);
        
        % Compute the extended lengths for SWT.
        %--------------------------------------
        C_Length_H = H;
        while rem(C_Length_H,2^def_level_H), C_Length_H = C_Length_H + 1; end
        C_Length_V = V;
        while rem(C_Length_V,2^def_level_V), C_Length_V = C_Length_V + 1; end
        
        % Set UIC values.
        %----------------
        set(edi_image,'String',imgInfos.name);
        set(edi_length_H,'String',sprintf('%.0f',H));
        set(edi_nextpow2_H,'String',sprintf('%.0f',Next_Pow2_H));
        set(edi_prevpow2_H,'String',sprintf('%.0f',Prev_Pow2_H));
        set(edi_deslen_H,'String',sprintf('%.0f',Next_Pow2_H));
        set(pop_direct_H,'Value',1);
        set(edi_length_V,'String',sprintf('%.0f',V));
        set(edi_nextpow2_V,'String',sprintf('%.0f',Next_Pow2_V));
        set(edi_prevpow2_V,'String',sprintf('%.0f',Prev_Pow2_V));
        set(edi_deslen_V,'String',sprintf('%.0f',Next_Pow2_V));
        set(pop_direct_V,'Value',1);
        set(pop_mode,'Value',1);
        set(pus_extend, ...
            'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
            'Enable','on','UserData','extend');
        set(pop_swtdec,'String',num2str((1:Max_Lev)'));
        set(pop_swtdec,'Value',Def_Lev);
        set(edi_swtlen_H,'String',sprintf('%.0f',H));
        set(edi_swtlen_V,'String',sprintf('%.0f',V));        
        set(edi_swtclen_H,'String',sprintf('%.0f',C_Length_H));
        set(edi_swtclen_V,'String',sprintf('%.0f',C_Length_V));        
                
        % Set UIC visible on.
        %--------------------
        set(cat(1,Hdls_UIC_H{:}),'Visible','on')
        set(cat(1,Hdls_UIC_V{:}),'Visible','on')
        set(cat(1,Hdls_UIC_Swt{:}),'Visible','off')
        set(cat(1,Hdls_UIC_C{4:end}),'Visible','on')

        % Setting Colormap.
        %------------------
        maxVal   = double(max(Anal_Image(:)));
        nbcolors = round(max([2,min([maxVal,default_nbcolors])]));
        cbcolmap('set',win_imgxtool,'pal',{'pink',nbcolors});
        if ~flagIDX ,
            set(Hdls_Colmap,'Visible','off');
        else
            set(Hdls_Colmap,'Visible','on');
            set(Hdls_Colmap,'Enable','on');
        end

        % Get Axes Handles.
        %------------------
        Axe_Img =  Hdls_Axes.Axe_Img ;

        % Drawing.
        %---------
        NB_ColorsInPal = default_nbcolors;
        Anal_Image     = wimgcode('cod',0,Anal_Image,NB_ColorsInPal,codemat_v);
        image(                ...
            'Parent',Axe_Img,   ...
            'XData',[1,H],      ...
            'YData',[1,V],      ...
            'CData',wd2uiorui2d('d2uint',Anal_Image), ...
            'Visible','on'      ...
            );
        [w,h]          = wpropimg([H V],Pos_Axe_Img_Ori(3),Pos_Axe_Img_Ori(4));
        Pos_Axe_Img    = Pos_Axe_Img_Ori;
        Pos_Axe_Img(1) = Pos_Axe_Img(1)+abs(Pos_Axe_Img(3)-w)/2;
        Pos_Axe_Img(2) = Pos_Axe_Img(2)+abs(Pos_Axe_Img(4)-h)/2;
        Pos_Axe_Img(3) = w;
        Pos_Axe_Img(4) = h;
        set(Axe_Img,                ...
            'XLim',[1,H],           ...
            'YLim',[1,V],           ...
            'Position',Pos_Axe_Img, ...
            'Visible','on');
        set(get(Axe_Img,'title'),'String',getWavMSG('Wavelet:commongui:OriImg'));

        % Store values.
        %--------------
        wfigmngr('storeValue',win_imgxtool,'Anal_Image',Anal_Image);
        wfigmngr('storeValue',win_imgxtool,'Pos_Axe_Img_Bas',Pos_Axe_Img);

        % Update File_Save_Flag.
        %-----------------------
        File_Save_Flag = 0;
        wfigmngr('storeValue',win_imgxtool,'File_Save_Flag',File_Save_Flag);
        
        % Dynvtool Attachment.
        %----------------------
        dynvtool('init',win_imgxtool,[],Axe_Img,[],[1 1],'','','');

        % End waiting.
        %-------------
        wwaiting('off',win_imgxtool);
        
    case 'demo'
        imgxtool('load',varargin{:});
        ext_OR_trunc = varargin{3};
        if ~isempty(varargin{4})
            par_Demo = varargin{4};
        else
            return;
        end
        extMode  = par_Demo{1};
        lenSIG   = par_Demo{2};
        direct_H = lower(par_Demo{3});
        direct_V = lower(par_Demo{4});
        if ~isequal(extMode,'swt')
            set(edi_deslen_H,'String',sprintf('%.0f',lenSIG(1)));
            imgxtool('update_deslen',win_imgxtool,'H','noClear');
            set(edi_deslen_V,'String',sprintf('%.0f',lenSIG(2)));
            imgxtool('update_deslen',win_imgxtool,'V','noClear');
        else
            set(pop_swtdec,'Value',lenSIG)
            imgxtool('update_swtdec',win_imgxtool)
        end
        switch direct_H
          case 'both'  , direct = 1;
          case 'left'  , direct = 2;
          case 'right' , direct = 3;
        end
        set(pop_direct_H,'Value',direct);
        switch direct_V
          case 'both' , direct = 1;
          case 'up'   , direct = 2;
          case 'down' , direct = 3;
        end
        set(pop_direct_V,'Value',direct);
        switch ext_OR_trunc
          case 'ext'
            switch extMode
              case 'sym' ,         extVal = 1;
              case 'ppd' ,         extVal = 5;
              case 'zpd' ,         extVal = 6;
              case 'sp0' ,         extVal = 7;
              case {'sp1','spd'} , extVal = 8;
              case 'swt' ,         extVal = 9;
            end
            set(pop_mode,'Value',extVal);
            imgxtool('mode',win_imgxtool,'noClear')

          case 'trunc'
        end
        imgxtool('extend_truncate',win_imgxtool);

    case 'update_swtdec'
    %----------------------------------------------------------------------%
    % Option: 'UPDATE_SWTDEC' - Update values when using popup in SWT case %
    %----------------------------------------------------------------------%        
        % Update the computed length.
        %----------------------------
        Image_Length_H = wstr2num(get(edi_swtlen_H,'String'));
        Image_Length_V = wstr2num(get(edi_swtlen_V,'String'));
        Level          = get(pop_swtdec,'Value');
        remLen_H       = rem(Image_Length_H,2^Level);
        remLen_V       = rem(Image_Length_V,2^Level);
        if remLen_H>0
            C_Length_H = Image_Length_H + 2^Level-remLen_H;
        else
            C_Length_H = Image_Length_H;
        end
        if remLen_V>0
            C_Length_V = Image_Length_V + 2^Level-remLen_V;
        else
            C_Length_V = Image_Length_V;
        end
        set(edi_swtclen_H,'String',sprintf('%.0f',C_Length_H));
        set(edi_swtclen_V,'String',sprintf('%.0f',C_Length_V));
        
        % Enabling Extend button.
        %------------------------        
        set(pus_extend,'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
            'UserData','extend','Enable','on');

    case 'update_deslen'
    %--------------------------------------------------------------------------%
    % Option: 'UPDATE_DESLEN' - Update values when changing the Desired Length %
    %--------------------------------------------------------------------------%
		
        % Get arguments.
        %---------------
        Direction = varargin{2};

        % Cleaning.
        %----------
        if nargin<4 , imgxtool('clear_GRAPHICS',win_imgxtool); end

        % Get Common UIC Handles.
        %------------------------	
        Image_length_H   = wstr2num(get(edi_length_H,'String'));
        Desired_length_H = wstr2num(get(edi_deslen_H,'String'));
        Image_length_V   = wstr2num(get(edi_length_V,'String'));
        Desired_length_V = wstr2num(get(edi_deslen_V,'String'));
        uic_mode         = [txt_mode;pop_mode];
        switch Direction
          case 'H'
            % Update UIC values.
            %-------------------
            if      isempty(Desired_length_H) || Desired_length_H < 2
                    set(edi_deslen_H,'String',get(edi_nextpow2_H,'String'));
                    set(txt_direct_H, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext'));
                    set(pus_extend,...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
                        'UserData','extend','Enable','on');
            elseif  Image_length_H <= Desired_length_H
                    set(txt_direct_H, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext'));
                    set(pus_extend, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
                        'UserData','extend');
            elseif  Image_length_H > Desired_length_H
                    set(txt_direct_H, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Trunc'));
                    set(pus_extend, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Truncate'),'UserData','truncate');
            end

          case 'V'
            % Update UIC values.
            %-------------------
            if      isempty(Desired_length_V) || Desired_length_V < 2
                    set(edi_deslen_V,'String',get(edi_nextpow2_V,'String'));
                    set(txt_direct_V, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext'));
                    set(pus_extend, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
                        'UserData','extend');
            elseif  Image_length_V <= Desired_length_V
                    set(txt_direct_V, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext'));
                    set(pus_extend, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
                        'UserData','extend');
            elseif  Image_length_V > Desired_length_V
                    set(txt_direct_V, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Trunc'));
                    set(pus_extend, ...
                        'String',getWavMSG('Wavelet:divGUIRF:Str_Truncate'),'UserData','truncate');
            end

          otherwise
              errargt(mfilename, ...
                  getWavMSG('Wavelet:moreMSGRF:Unknown_Opt'),'msg');
              error(message('Wavelet:FunctionArgVal:Invalid_Input'));
        end
        set(uic_mode,'Enable','on');
        set(pus_extend,'Enable','on');                                
        if     	isequal(Image_length_H,Desired_length_H) && ...
                isequal(Image_length_V,Desired_length_V)
                set(txt_direct_V, ...
                    'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext'));
                set(txt_direct_H, ...
                    'String',getWavMSG('Wavelet:divGUIRF:Str_Dir2Ext'));
                set(uic_mode,'Enable','off');
                set(pus_extend,'Enable','off');                        
        elseif  ((Image_length_H <= Desired_length_H)  && ...
                 (Image_length_V <  Desired_length_V)) || ...
                ((Image_length_H <  Desired_length_H)  && ...
                 (Image_length_V <= Desired_length_V))                
                set(uic_mode,'Visible','on');
                set(pus_extend, ...
                    'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
                    'UserData','extend');
        elseif  (Image_length_H <= Desired_length_H) && ...
                (Image_length_V > Desired_length_V)
                set(uic_mode,'Visible','on');
                set(pus_extend,'String',getWavMSG('Wavelet:divGUIRF:Str_Ext_Trunc'),'UserData','ext_trunc');
        elseif  (Image_length_H > Desired_length_H) && ...
                (Image_length_V <= Desired_length_V)
                set(uic_mode,'Visible','on');
                set(pus_extend,'String',getWavMSG('Wavelet:divGUIRF:Str_Trunc_Ext'),'UserData','trunc_ext');
        elseif  (Image_length_H > Desired_length_H) && ...
                (Image_length_V > Desired_length_V)
                set(uic_mode,'Visible','off');
                set(pus_extend,'String',getWavMSG('Wavelet:divGUIRF:Str_Truncate'),'UserData','truncate');
        end
        set(pus_extend,'Visible','on');
	
    case 'mode'
    %------------------------------------------------------------------------%
    % Option: 'MODE' -  Update the command part when changing Extension Mode %
    %------------------------------------------------------------------------%

        % Cleaning.
        %----------
        if nargin<3 , imgxtool('clear_GRAPHICS',win_imgxtool); end

        % Checking the SWT case for visibility settings.
        %-----------------------------------------------
        Mode_str = get(pop_mode,'String');
        Mode_val = get(pop_mode,'Value');
        if  strcmp(deblank(Mode_str(Mode_val,:)), ...
                getWavMSG('Wavelet:divGUIRF:ExtM_For_SWT'))
            set(cat(1,Hdls_UIC_H{:}),'Visible','off')
            set(cat(1,Hdls_UIC_V{:}),'Visible','off')
            set(cat(1,Hdls_UIC_Swt{:}),'Visible','on')

            Image_Length_H    = wstr2num(get(edi_swtlen_H,'String'));
            Computed_Length_H = wstr2num(get(edi_swtclen_H,'String'));
            Image_Length_V    = wstr2num(get(edi_swtlen_V,'String'));
            Computed_Length_V = wstr2num(get(edi_swtclen_V,'String'));
            set(pus_extend, ...
                'String',getWavMSG('Wavelet:divGUIRF:Str_Extend'), ...
                'UserData','extend');
            if isequal(Image_Length_H,nextpow2(Image_Length_H)) && ...
                isequal(Image_Length_V,nextpow2(Image_Length_V))
                set(pus_extend,'Enable','off');
                strSize = ['(' int2str(Image_Length_V), 'x', ...
                               int2str(Image_Length_H) ')'];
                msg = getWavMSG('Wavelet:divGUIRF:Warn_SWTSiz',strSize);
                wwarndlg(msg,getWavMSG('Wavelet:divGUIRF:SWT_ExtMode'),'block');

            elseif Image_Length_H < Computed_Length_H || ...
                Image_Length_V < Computed_Length_V
                set(pus_extend,'Enable','on');
            end
        else
            set(pus_extend,'Enable','on');
            set(cat(1,Hdls_UIC_H{:}),'Visible','on')
            set(cat(1,Hdls_UIC_V{:}),'Visible','on')
            set(cat(1,Hdls_UIC_Swt{:}),'Visible','off')
        end
        set(cat(1,Hdls_UIC_C{4:end}),'Visible','on');
            
    case 'extend_truncate'
    %-------------------------------------------------------------------------%
    % Option: 'EXTEND_TRUNCATE' - Compute the new Extended or Truncated image %
    %-------------------------------------------------------------------------%
        
        % Begin waiting.
        %---------------
        wwaiting('msg',win_imgxtool,getWavMSG('Wavelet:commongui:WaitCompute'));

        % Get stored structure.
        %----------------------        
        Anal_Image = wfigmngr('getValue',win_imgxtool,'Anal_Image');

        % Get UIC values.
        %----------------
        Image_length_H   = wstr2num(get(edi_length_H,'String'));
        Val_pop_direct_H = get(pop_direct_H,'Value');
        Image_length_V   = wstr2num(get(edi_length_V,'String'));
        Val_pop_direct_V = get(pop_direct_V,'Value');
        Str_pop_mode     = get(pop_mode,'String');
        last_Mode        = length(Str_pop_mode);
        Val_pop_mode     = get(pop_mode,'Value');

        % Directions mode conversion and desired lengths.
        %------------------------------------------------
        if isequal(Val_pop_mode,last_Mode)
            Dir_H = 'r';
            Dir_V = 'b';
            Desired_length_H = wstr2num(get(edi_swtclen_H,'String'));
            Desired_length_V = wstr2num(get(edi_swtclen_V,'String'));
        else
            Dir_H_Values     = ['b';'l';'r'];
            Dir_V_Values     = ['b';'u';'d'];
            Dir_H            = Dir_H_Values(Val_pop_direct_H);
            Dir_V            = Dir_V_Values(Val_pop_direct_V);
            Desired_length_H = wstr2num(get(edi_deslen_H,'String'));
            Desired_length_V = wstr2num(get(edi_deslen_V,'String'));
        end
        Desired_Size = [Desired_length_V Desired_length_H];

        % Extension mode conversion.
        %---------------------------
        Mode_Values = {'sym';'symw';'asym';'asymw';'ppd';'zpd';'sp0';'spd';'ppd'};
        Mode        = Mode_Values{Val_pop_mode};

        % Get action to do.
        %------------------
        action = get(pus_extend,'UserData');
        switch action
          case 'truncate'
              Deb_O_H = 1;
              Deb_O_V = 1;
              delta_H = Image_length_H - Desired_length_H;
              delta_V = Image_length_V - Desired_length_V;
              switch Val_pop_direct_H
                case 2 ,  Deb_N_H = 1 + delta_H;        % 'Left'
                case 3  , Deb_N_H = 1;                  % 'Right'
                case 1  , Deb_N_H = 1 + fix(delta_H/2); % 'Both'
              end
              switch Val_pop_direct_V
                case 2 , Deb_N_V = 1 + delta_V;        % 'Up'  
                case 3 , Deb_N_V = 1;                  % 'Down' 
                case 1 , Deb_N_V = 1 + fix(delta_V/2); % 'Both'
              end
              Fin_O_H      = Deb_O_H + Image_length_H - 1;
              Fin_O_V      = Deb_O_V + Image_length_V - 1;
              Fin_N_H      = Deb_N_H + Desired_length_H - 1;
              Fin_N_V      = Deb_N_V + Desired_length_V - 1;
              First_Point  = [Deb_N_V Deb_N_H ];
              Image_Lims_O = [Deb_O_H Fin_O_H Deb_O_V Fin_O_V];
              Image_Lims_N = [Deb_N_H Fin_N_H Deb_N_V Fin_N_V];

              New_Image    = wkeep2(Anal_Image,Desired_Size,First_Point);
              imgxtool('draw',win_imgxtool,Anal_Image,New_Image, ...
                          [Image_Lims_O;Image_Lims_N]);

          case 'ext_trunc'
              Deb_O_V = 1;
              Deb_N_H = 1;
              delta_H = Desired_length_H - Image_length_H;
              delta_V = Image_length_V - Desired_length_V;
              switch Val_pop_direct_H
                case 2 , Deb_O_H = 1 + delta_H;       % 'Left'
                case 3 , Deb_O_H = 1;                 % 'Right'
                case 1 , Deb_O_H = 1 + fix(delta_H/2);% 'Both'  
              end
              switch Val_pop_direct_V
                case 2 , Deb_N_V = 1 + delta_V;        % 'Up'  
                case 3 , Deb_N_V = 1;                  % 'Down' 
                case 1 , Deb_N_V = 1 + fix(delta_V/2); % 'Both'
              end
              Fin_O_H      = Deb_O_H + Image_length_H - 1;
              Fin_O_V      = Deb_O_V + Image_length_V - 1;
              Fin_N_H      = Deb_N_H + Desired_length_H - 1;
              Fin_N_V      = Deb_N_V + Desired_length_V - 1;
              First_Point  = [Deb_N_V Deb_N_H ];
              Image_Lims_O = [Deb_O_H Fin_O_H Deb_O_V Fin_O_V];
              Image_Lims_N = [Deb_N_H Fin_N_H Deb_N_V Fin_N_V];

              New_Image    = wkeep2(Anal_Image,Desired_Size,First_Point);
              switch Dir_H
                case {'l','r'}
                  New_Image = wextend('ac',Mode,New_Image,delta_H,Dir_H);

                case 'b'
                  Ext_Size  = ceil(delta_H/2);
                  New_Image = wextend('ac',Mode,New_Image,Ext_Size,Dir_H);
                  if rem(delta_H,2)
                      New_Image = wkeep2(New_Image,Desired_Size,'c','dr');
                  end
              end

              imgxtool('draw',win_imgxtool,Anal_Image,New_Image, ...
                          [Image_Lims_O;Image_Lims_N]);

          case 'trunc_ext'
              Deb_O_H = 1;
              Deb_N_V = 1;
              delta_H = Image_length_H - Desired_length_H;
              delta_V = Desired_length_V - Image_length_V ;
              switch Val_pop_direct_H
                case 2 ,  Deb_N_H = 1 + delta_H;        % 'Left'
                case 3  , Deb_N_H = 1;                  % 'Right'
                case 1  , Deb_N_H = 1 + fix(delta_H/2); % 'Both'
              end
              switch Val_pop_direct_V
                case 1 , Deb_O_V = 1 + fix(delta_V/2); % 'Both'                   
                case 2 , Deb_O_V = 1 + delta_V;        % 'Up'   
                case 3 , Deb_O_V = 1;                  % 'Down'
              end
              Fin_O_H      = Deb_O_H + Image_length_H - 1;
              Fin_O_V      = Deb_O_V + Image_length_V - 1;
              Fin_N_H      = Deb_N_H + Desired_length_H - 1;
              Fin_N_V      = Deb_N_V + Desired_length_V - 1;
              First_Point  = [Deb_N_V Deb_N_H ];
              Image_Lims_O = [Deb_O_H Fin_O_H Deb_O_V Fin_O_V];
              Image_Lims_N = [Deb_N_H Fin_N_H Deb_N_V Fin_N_V];

              New_Image    = wkeep2(Anal_Image,Desired_Size,First_Point);
              switch Dir_V
                case {'u','d'}
                  New_Image = wextend('ar',Mode,New_Image,delta_V,Dir_V);

                case 'b'
                  Ext_Size  = ceil(delta_V/2);
                  New_Image = wextend('ar',Mode,Anal_Image,Ext_Size,Dir_V);
                  if rem(delta_V,2)
                      New_Image = wkeep2(New_Image,Desired_Size,'c','dr');
                  end
              end

              imgxtool('draw',win_imgxtool,Anal_Image,New_Image, ...
                          [Image_Lims_O;Image_Lims_N]);

          case 'extend'
              Deb_N_H = 1;
              Deb_N_V = 1;
              delta_H = Desired_length_H - Image_length_H;
              delta_V = Desired_length_V - Image_length_V ;
              switch Val_pop_direct_H
                case 1 , Deb_O_H = 1 + fix(delta_H/2); % 'Both'
                case 2 , Deb_O_H = 1 + delta_H;        % 'Left'
                case 3 , Deb_O_H = 1;                  % 'Right' 
              end
              switch Val_pop_direct_V
                case 1 , Deb_O_V = 1 + fix(delta_V/2); % 'Both'                   
                case 2 , Deb_O_V = 1 + delta_V;        % 'Up'   
                case 3 , Deb_O_V = 1;                  % 'Down'
              end
              Fin_O_H      = Deb_O_H + Image_length_H - 1;
              Fin_O_V      = Deb_O_V + Image_length_V - 1;
              Fin_N_H      = Deb_N_H + Desired_length_H - 1;
              Fin_N_V      = Deb_N_V + Desired_length_V - 1;
              Image_Lims_O = [Deb_O_H Fin_O_H Deb_O_V Fin_O_V];
              Image_Lims_N = [Deb_N_H Fin_N_H Deb_N_V Fin_N_V];

              switch Dir_H
                case {'l','r'}
                  New_Image = wextend('ac',Mode,Anal_Image,delta_H,Dir_H);

                case 'b'
                  Ext_Size  = ceil(delta_H/2);
                  New_Image = wextend('ac',Mode,Anal_Image,Ext_Size,Dir_H);
              end

              switch Dir_V
                case {'u','d'}
                  New_Image  = wextend('ar',Mode,New_Image,delta_V,Dir_V);

                case 'b'
                  Ext_Size  = ceil(delta_V/2);
                  New_Image = wextend('ar',Mode,New_Image,Ext_Size,Dir_V);
              end
              if rem(delta_H,2) || rem(delta_V,2)
                  New_Image = wkeep2(New_Image,Desired_Size,'c','dr');
              end

              imgxtool('draw',win_imgxtool,Anal_Image,New_Image, ...
                          [Image_Lims_O;Image_Lims_N]);

        end
		
        % Saving the new image.
        %-----------------------		
        wfigmngr('storeValue',win_imgxtool,'New_Image',New_Image);

        % End waiting.
        %-------------
        wwaiting('off',win_imgxtool);
        
    case 'draw'
    %-----------------------------------------------------%
    % Option: 'DRAW' - Plot both new and original signals %
    %-----------------------------------------------------%
						
        % Get arguments.
        %---------------
        Anal_Image = varargin{2};
        New_Image  = varargin{3};
        Image_Lims = varargin{4};
        Deb_O_H    = Image_Lims(1,1);
        Fin_O_H    = Image_Lims(1,2);
        Deb_O_V    = Image_Lims(1,3);
        Fin_O_V    = Image_Lims(1,4);
        Deb_N_H    = Image_Lims(2,1);
        Fin_N_H    = Image_Lims(2,2);
        Deb_N_V    = Image_Lims(2,3);
        Fin_N_V    = Image_Lims(2,4);
        
        % Begin waiting.
        %---------------
        wwaiting('msg',win_imgxtool,getWavMSG('Wavelet:commongui:WaitDraw'));
        
        % Get Axes Handles.
        %------------------
        Axe_Img = Hdls_Axes.Axe_Img;
        Axe_Leg = Hdls_Axes.Axe_Leg;
		
        % Clean images axes.
        %--------------------
        delete(findobj(Axe_Img,'Type','image'));
        delete(findobj(Axe_Img,'Type','line'));

        % Compute axes limits.
        %---------------------
        Xmin = min(Deb_O_H,Deb_N_H)-1;
        Xmax = max(Fin_O_H,Fin_N_H)+1;
        Ymin = min(Deb_O_V,Deb_N_V)-1;
        Ymax = max(Fin_O_V,Fin_N_V)+1;

        % Compute image ratio.
        %---------------------
        Len_X = Xmax - Xmin;
        Len_Y = Ymax - Ymin;
        
        % Compute new Axes position to respect a good ratio.
        %---------------------------------------------------
        [w,h]          = wpropimg([Len_X Len_Y],Pos_Axe_Img_Ori(3), ...
                                   Pos_Axe_Img_Ori(4));
        Pos_Axe_Img    = Pos_Axe_Img_Ori;
        Pos_Axe_Img(1) = Pos_Axe_Img(1)+abs(Pos_Axe_Img(3)-w)/2;
        Pos_Axe_Img(2) = Pos_Axe_Img(2)+abs(Pos_Axe_Img(4)-h)/2;
        Pos_Axe_Img(3) = w;
        Pos_Axe_Img(4) = h;
            
        % Update axes properties.
        %------------------------
        set(Axe_Img,                         ...
            'XTickLabelMode','manual',       ...
            'YTickLabelMode','manual',       ...
            'XTicklabel',[],'YTickLabel',[], ...
            'XTick',[],'YTick',[],           ...
            'YDir','reverse',                ...
            'Box','Off',                     ...
            'NextPlot','add',                ...
            'Position',Pos_Axe_Img,          ...
            'XLim',[Xmin,Xmax],              ...
            'YLim',[Ymin,Ymax],              ...
            'XColor','k',                    ...
            'YColor','k',                    ...
            'Visible','on'                   ...
            );
        set(get(Axe_Img,'title'),'String','');
            
        % Draw old image.
        %----------------
        image(wd2uiorui2d('d2uint',Anal_Image), ... 
            'Parent',Axe_Img,          ...
            'XData',[Deb_O_H Fin_O_H], ...
            'YData',[Deb_O_V Fin_O_V]  ...
            );

        % Draw new image.
        %----------------
        image(wd2uiorui2d('d2uint',New_Image), ...
            'Parent',Axe_Img,          ...
            'XData',[Deb_N_H Fin_N_H], ...
            'YData',[Deb_N_V Fin_N_V]  ...
            );

        % Constant coefs. for box design.
        %--------------------------------
        S1 = 4;
        S2 = 4;

        % Draw Box around old image.
        %---------------------------
        X = [Deb_O_H Fin_O_H Fin_O_H Deb_O_H Deb_O_H];
        Y = [Deb_O_V Deb_O_V Fin_O_V Fin_O_V Deb_O_V];
        line(X,Y,'Parent',Axe_Img,'Color','red','LineWidth',S1);

        % Draw Box around new image.
        %----------------------------
        X = [Deb_N_H Fin_N_H Fin_N_H Deb_N_H Deb_N_H];
        Y = [Deb_N_V Deb_N_V Fin_N_V Fin_N_V Deb_N_V];
        line(X,Y,'Parent',Axe_Img,'Color',[0.95 0.95 0],'LineWidth',S2);

        % Display Legend.
        %----------------
        set(Axe_Leg,'Visible','on');
        set(get(Axe_Leg,'Children'),'Visible','on');
				
        % Dynvtool Attachment.
        %----------------------
        dynvtool('init',win_imgxtool,[],Axe_Img,[],[1 1],'','','');

        % Update File_Save_Flag.
        %-----------------------
        File_Save_Flag = 0;
        wfigmngr('storeValue',win_imgxtool,'File_Save_Flag',File_Save_Flag);
        				
        % Enable save menu.
        %------------------
        set([m_save,m_exp_sig],'Enable','on');

        % End waiting.
        %-------------
        wwaiting('off',win_imgxtool);
                		
    case 'save'
    %-----------------------------------------%
    % Option: 'SAVE' - Save transformed image %
    %-----------------------------------------%				

        % Testing file.
        %--------------
        [filename,pathname,ok] = utguidiv('test_save',win_imgxtool, ...
                         '*.mat',getWavMSG('Wavelet:divGUIRF:Save_Image'));
        if ~ok, return; end

        % Begin waiting.
        %---------------
        wwaiting('msg',win_imgxtool,getWavMSG('Wavelet:commongui:WaitSave'));
				
        % Restore the new image.
        %-----------------------		
        X = wfigmngr('getValue',win_imgxtool,'New_Image');

        % Setting Colormap.
        %------------------
        map = cbcolmap('get',win_imgxtool,'self_pal');
        if isempty(map)
            maxVal   = double(max(X(:)));
            nbcolors = round(max([2,min([maxVal,default_nbcolors])]));
            map = pink(nbcolors); %#ok<NASGU>
        end
	
        % Saving transformed Image.
        %--------------------------
        [name,ext] = strtok(filename,'.');
        if isempty(ext) || isequal(ext,'.')
            ext = '.mat'; filename = [name ext];
        end
        try
          save([pathname filename],'X','map');
        catch %#ok<CTCH>
          errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg');
        end

        % Update File_Save_Flag.
        %-----------------------
        File_Save_Flag = 1;
        wfigmngr('storeValue',win_imgxtool,'File_Save_Flag',File_Save_Flag);
        				
        % Enable save menu.
        %------------------
        set([m_save,m_exp_sig],'Enable','off');
        
        % End waiting.
        %-------------
        wwaiting('off',win_imgxtool);

    case 'exp_wrks'
        wwaiting('msg',win_imgxtool,getWavMSG('Wavelet:commongui:WaitExport'));
        X = wfigmngr('getValue',win_imgxtool,'New_Image');
        wtbxexport(X,'name','sig_2D', ...
            'title',getWavMSG('Wavelet:divGUIRF:Extended_Image'));
        wwaiting('off',win_imgxtool);                
        
    case 'clear_GRAPHICS'
    %---------------------------------------------------------------------%
    % Option: 'CLEAR_GRAPHICS' - Clear graphics and redraw original image %
    %---------------------------------------------------------------------%
					
        % Get arguments.
        %---------------
        if length(varargin) > 1, Draw_flag = 0; else Draw_flag = 1; end

        % Get Axes Handles.
        %------------------
        Axe_Img = Hdls_Axes.Axe_Img;
        Axe_Leg = Hdls_Axes.Axe_Leg;

        % Set graphics part visible off and redraw original image if needed.
        %-------------------------------------------------------------------
        set(Axe_Leg,'Visible','off');
        set(get(Axe_Leg,'Children'),'Visible','off');
        
        if Draw_flag
            Anal_Image      = wfigmngr('getValue',win_imgxtool,'Anal_Image');
            Pos_Axe_Img_Bas = wfigmngr('getValue',win_imgxtool, ...
                                       'Pos_Axe_Img_Bas');
            set(findobj(Axe_Img,'Type','line'),'Visible','Off');
            [H,V] = size(Anal_Image);
            set(get(Axe_Img,'title'), ...
                'String',getWavMSG('Wavelet:commongui:OriImg'));
            set(Axe_Img,                         ...
                'XLim',[1,H],                    ...
                'YLim',[1,V],                    ...
                'Position',Pos_Axe_Img_Bas,      ...
                'Visible','on');
            set(findobj(Axe_Img,'Type','image'), ...
                'Parent',Axe_Img,                ...
                'XData',[1,H],                   ...
                'YData',[1,V],                   ...
                'CData',wd2uiorui2d('d2uint',Anal_Image), ... 
                'Visible','on'                   ...
                );
            dynvtool('init',win_imgxtool,[],Axe_Img,[],[1 1],'','','');
        else
            set(Axe_Img,'Visible','off');
            set(get(Axe_Img,'Children'),'Visible','off');
        end
				
        % Disable save menu.
        %-------------------
        set([m_save,m_exp_sig],'Enable','off');
		
        % Reset the new image.
        %---------------------		
        wfigmngr('storeValue',win_imgxtool,'New_Image',[]);
        
    case 'close'
    %---------------------------------------%
    % Option: 'CLOSE' - Close current figure%
    %---------------------------------------%

        % Retrieve File_Save_Flag.
        %-------------------------
        File_Save_Flag = wfigmngr('getValue',win_imgxtool,'File_Save_Flag');
        		
        % Retrieve images values.
        %------------------------		
        New_Image  = wfigmngr('getValue',win_imgxtool,'New_Image');
        Anal_Image = wfigmngr('getValue',win_imgxtool,'Anal_Image');
        
        % Test for saving the new image.
        %-------------------------------
        status = 0;
        if ~isempty(New_Image) && any(size(New_Image)~=size(Anal_Image)) &&...
            ~File_Save_Flag
            status = wwaitans(win_imgxtool,...
                     getWavMSG('Wavelet:divGUIRF:Save_ImgQuest'),2,'cond');
        end
        switch status
          case 1 , imgxtool('save',win_imgxtool)
          case 0 ,
        end
        varargout{1} = status;
        				
    otherwise
        errargt(mfilename,getWavMSG('Wavelet:moreMSGRF:Unknown_Opt'),'msg');
        error(message('Wavelet:FunctionArgVal:Invalid_Input'));
end

%--------------------------------------------------------------------------
function setfigNAME(fig,flagIDX)

if flagIDX
    figNAME = getWavMSG('Wavelet:divGUIRF:IMGX_Nam_Ind');
else
    figNAME = getWavMSG('Wavelet:divGUIRF:IMGX_Nam_TC');
end
set(fig,'Name',figNAME);
%---------------------------------------------------------------------------