aboutsummaryrefslogtreecommitdiff
path: root/src/modules/audio_processing/aecm/main/matlab/waitbar_j.m
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/audio_processing/aecm/main/matlab/waitbar_j.m')
-rw-r--r--src/modules/audio_processing/aecm/main/matlab/waitbar_j.m234
1 files changed, 234 insertions, 0 deletions
diff --git a/src/modules/audio_processing/aecm/main/matlab/waitbar_j.m b/src/modules/audio_processing/aecm/main/matlab/waitbar_j.m
new file mode 100644
index 0000000000..50b9ccf309
--- /dev/null
+++ b/src/modules/audio_processing/aecm/main/matlab/waitbar_j.m
@@ -0,0 +1,234 @@
+function fout = waitbar_j(x,whichbar, varargin)
+%WAITBAR Display wait bar.
+% H = WAITBAR(X,'title', property, value, property, value, ...)
+% creates and displays a waitbar of fractional length X. The
+% handle to the waitbar figure is returned in H.
+% X should be between 0 and 1. Optional arguments property and
+% value allow to set corresponding waitbar figure properties.
+% Property can also be an action keyword 'CreateCancelBtn', in
+% which case a cancel button will be added to the figure, and
+% the passed value string will be executed upon clicking on the
+% cancel button or the close figure button.
+%
+% WAITBAR(X) will set the length of the bar in the most recently
+% created waitbar window to the fractional length X.
+%
+% WAITBAR(X,H) will set the length of the bar in waitbar H
+% to the fractional length X.
+%
+% WAITBAR(X,H,'updated title') will update the title text in
+% the waitbar figure, in addition to setting the fractional
+% length to X.
+%
+% WAITBAR is typically used inside a FOR loop that performs a
+% lengthy computation. A sample usage is shown below:
+%
+% h = waitbar(0,'Please wait...');
+% for i=1:100,
+% % computation here %
+% waitbar(i/100,h)
+% end
+% close(h)
+
+% Clay M. Thompson 11-9-92
+% Vlad Kolesnikov 06-7-99
+% Copyright 1984-2001 The MathWorks, Inc.
+% $Revision: 1.22 $ $Date: 2001/04/15 12:03:29 $
+
+if nargin>=2
+ if ischar(whichbar)
+ type=2; %we are initializing
+ name=whichbar;
+ elseif isnumeric(whichbar)
+ type=1; %we are updating, given a handle
+ f=whichbar;
+ else
+ error(['Input arguments of type ' class(whichbar) ' not valid.'])
+ end
+elseif nargin==1
+ f = findobj(allchild(0),'flat','Tag','TMWWaitbar');
+
+ if isempty(f)
+ type=2;
+ name='Waitbar';
+ else
+ type=1;
+ f=f(1);
+ end
+else
+ error('Input arguments not valid.');
+end
+
+x = max(0,min(100*x,100));
+
+switch type
+ case 1, % waitbar(x) update
+ p = findobj(f,'Type','patch');
+ l = findobj(f,'Type','line');
+ if isempty(f) | isempty(p) | isempty(l),
+ error('Couldn''t find waitbar handles.');
+ end
+ xpatch = get(p,'XData');
+ xpatch = [0 x x 0];
+ set(p,'XData',xpatch)
+ xline = get(l,'XData');
+ set(l,'XData',xline);
+
+ if nargin>2,
+ % Update waitbar title:
+ hAxes = findobj(f,'type','axes');
+ hTitle = get(hAxes,'title');
+ set(hTitle,'string',varargin{1});
+ end
+
+ case 2, % waitbar(x,name) initialize
+ vertMargin = 0;
+ if nargin > 2,
+ % we have optional arguments: property-value pairs
+ if rem (nargin, 2 ) ~= 0
+ error( 'Optional initialization arguments must be passed in pairs' );
+ end
+ end
+
+ oldRootUnits = get(0,'Units');
+
+ set(0, 'Units', 'points');
+ screenSize = get(0,'ScreenSize');
+
+ axFontSize=get(0,'FactoryAxesFontSize');
+
+ pointsPerPixel = 72/get(0,'ScreenPixelsPerInch');
+
+ width = 360 * pointsPerPixel;
+ height = 75 * pointsPerPixel;
+ pos = [screenSize(3)/2-width/2 screenSize(4)/2-height/2 width height];
+
+%pos= [501.75 589.5 393.75 52.5];
+ f = figure(...
+ 'Units', 'points', ...
+ 'BusyAction', 'queue', ...
+ 'Position', pos, ...
+ 'Resize','on', ...
+ 'CreateFcn','', ...
+ 'NumberTitle','off', ...
+ 'IntegerHandle','off', ...
+ 'MenuBar', 'none', ...
+ 'Tag','TMWWaitbar',...
+ 'Interruptible', 'off', ...
+ 'Visible','on');
+
+ %%%%%%%%%%%%%%%%%%%%%
+ % set figure properties as passed to the fcn
+ % pay special attention to the 'cancel' request
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ if nargin > 2,
+ propList = varargin(1:2:end);
+ valueList = varargin(2:2:end);
+ cancelBtnCreated = 0;
+ for ii = 1:length( propList )
+ try
+ if strcmp(lower(propList{ii}), 'createcancelbtn' ) & ~cancelBtnCreated
+ cancelBtnHeight = 23 * pointsPerPixel;
+ cancelBtnWidth = 60 * pointsPerPixel;
+ newPos = pos;
+ vertMargin = vertMargin + cancelBtnHeight;
+ newPos(4) = newPos(4)+vertMargin;
+ callbackFcn = [valueList{ii}];
+ set( f, 'Position', newPos, 'CloseRequestFcn', callbackFcn );
+ cancelButt = uicontrol('Parent',f, ...
+ 'Units','points', ...
+ 'Callback',callbackFcn, ...
+ 'ButtonDownFcn', callbackFcn, ...
+ 'Enable','on', ...
+ 'Interruptible','off', ...
+ 'Position', [pos(3)-cancelBtnWidth*1.4, 7, ...
+ cancelBtnWidth, cancelBtnHeight], ...
+ 'String','Cancel', ...
+ 'Tag','TMWWaitbarCancelButton');
+ cancelBtnCreated = 1;
+ else
+ % simply set the prop/value pair of the figure
+ set( f, propList{ii}, valueList{ii});
+ end
+ catch
+ disp ( ['Warning: could not set property ''' propList{ii} ''' with value ''' num2str(valueList{ii}) '''' ] );
+ end
+ end
+ end
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+ colormap([]);
+
+ axNorm=[.05 .3 .9 .2];
+ % axNorm=[1 1 1 1];
+ axPos=axNorm.*[pos(3:4),pos(3:4)] + [0 vertMargin 0 0];
+
+ h = axes('XLim',[0 100],...
+ 'YLim',[0 1],...
+ 'Box','on', ...
+ 'Units','Points',...
+ 'FontSize', axFontSize,...
+ 'Position',axPos,...
+ 'XTickMode','manual',...
+ 'YTickMode','manual',...
+ 'XTick',[],...
+ 'YTick',[],...
+ 'XTickLabelMode','manual',...
+ 'XTickLabel',[],...
+ 'YTickLabelMode','manual',...
+ 'YTickLabel',[]);
+
+ tHandle=title(name);
+ tHandle=get(h,'title');
+ oldTitleUnits=get(tHandle,'Units');
+ set(tHandle,...
+ 'Units', 'points',...
+ 'String', name);
+
+ tExtent=get(tHandle,'Extent');
+ set(tHandle,'Units',oldTitleUnits);
+
+ titleHeight=tExtent(4)+axPos(2)+axPos(4)+5;
+ if titleHeight>pos(4)
+ pos(4)=titleHeight;
+ pos(2)=screenSize(4)/2-pos(4)/2;
+ figPosDirty=logical(1);
+ else
+ figPosDirty=logical(0);
+ end
+
+ if tExtent(3)>pos(3)*1.10;
+ pos(3)=min(tExtent(3)*1.10,screenSize(3));
+ pos(1)=screenSize(3)/2-pos(3)/2;
+
+ axPos([1,3])=axNorm([1,3])*pos(3);
+ set(h,'Position',axPos);
+
+ figPosDirty=logical(1);
+ end
+
+ if figPosDirty
+ set(f,'Position',pos);
+ end
+
+ xpatch = [0 x x 0];
+ ypatch = [0 0 1 1];
+ xline = [100 0 0 100 100];
+ yline = [0 0 1 1 0];
+
+ p = patch(xpatch,ypatch,'r','EdgeColor','r','EraseMode','none');
+ l = line(xline,yline,'EraseMode','none');
+ set(l,'Color',get(gca,'XColor'));
+
+
+ set(f,'HandleVisibility','callback','visible','on', 'resize','off');
+
+ set(0, 'Units', oldRootUnits);
+end % case
+drawnow;
+
+if nargout==1,
+ fout = f;
+end