function [Hscale,Htext]=plot_scale(Pos,Scale,Length,Color,UnitsName,Orient);
%-------------------------------------------------------------------
% plot_scale function Add a scale bar on a plot or image.
% Input : - Scale bar position [X, Y].
% - Scale [Units per pixel].
% - Scale bar length in units (e.g., arcsec).
% - Color, default is 'k';
% - Units name, default is 'arcsec'.
% - Scale bar orientation:
% 'h' - Horizontal (default).
% 'v' - Vertical.
% Output : - Handle for the scale line.
% - Handle for the text.
% Tested : Matlab 7.0
% By : Eran O. Ofek July 2005
% URL : http://wise-obs.tau.ac.il/~eran/matlab.html
%-------------------------------------------------------------------
DistFactor = 0.05;
if (nargin==3),
Color = 'k';
UnitsName = 'arcsec';
Orient = 'h';
elseif (nargin==4),
UnitsName = 'arcsec';
Orient = 'h';
elseif (nargin==5),
Orient = 'h';
elseif (nargin==6),
% do nothing
else
error('Illegal Number of input arguments');
end
NextPlot = get(gca,'NextPlot');
hold on;
XLim = get(gca,'XLim');
YLim = get(gca,'YLim');
Xdiff = abs(diff(XLim));
Ydiff = abs(diff(YLim));
switch Orient
case 'h'
LineX = Pos(1) + 0.5.*Length./Scale.*[-1;+1];
LineY = Pos(2).*[+1;+1];
DistXdir = 0;
DistYdir = -1;
case 'v'
LineX = Pos(1).*[+1;+1];
LineY = Pos(2) + 0.5.*Length./Scale.*[-1;+1];
DistXdir = +1;
DistYdir = 0;
otherwise
error('Unknown Orient Option');
end
%--- plot line ---
Hscale = plot(LineX,LineY,'LineWidth',2);
set(Hscale,'Color',Color);
%--- plot text ---
DistX = DistXdir.*DistFactor.*Xdiff;
DistY = DistYdir.*DistFactor.*Ydiff;
% Htext = text(Pos(1)+DistX,Pos(2)+DistY,sprintf('%5.1f %s',Length,UnitsName));
switch Orient,
case 'h'
% do nothing
case 'v'
% set(Htext,'Rotation',90);
otherwise
error('Unknown Orient Option');
end
% set(Htext,'HorizontalAlignment','center','Color',Color);
set(gca,'XLim',XLim);
set(gca,'YLim',YLim);
set(gca,'NextPlot',NextPlot);