function sdf(varargin)
% SDF Set the line width and fonts of a figure
% 
% sdf(fig)
% 
% where fig is the figure number. If the figure number is omitted, the 
% currently active figure is updated. Edit the file to set you own style 
% settings.
%
% sdf(fig, 'stylename')
% applies a pre-configured style from the File-->Export Setup menu of the
% figure's window. The stylename should be one of the 'Export Styles'
% section of the dialog.
%
% The function allows applying the same settings as through the 
% File-->Export Setup-->Apply menu of the figure, but much faster and 
% without the annoying clicking. 
%
% Example
%   figure(1);      t=0:0.1:10;   plot(t, sin(t));
%   sdf(1)
%   pause
%   sdf(1,'PowerPoint')

% Andrey Popov, Hamburg, 2009

%% Parse the input data
default = true;
if nargin == 0       % no input - take current fig and apply default style
    fig = gcf();
else                 % at least 1 input
    if ischar(varargin{1})  % style name
        default = false;
        style_name = varargin{1};
        fig = gcf();
    else
        fig = varargin{1};
        figure(fig);        % just in case it does not exist
        if nargin == 2
            default = false;
            style_name = varargin{2};
        end
    end
end

%% Apply a style
if default      % Apply a default style
    style = struct();
    style.Version = '1';
    style.Format = 'eps';
    style.Preview = 'none';
    style.Width = 'auto';
    style.Height = 'auto';
    style.Units = 'centimeters';
    style.Color = 'rgb';
    style.Background = 'w';          % '' = no change; 'w' = white background
    style.FixedFontSize = '10';
    style.ScaledFontSize = 'auto';
    style.FontMode = 'fixed';
    style.FontSizeMin = '8';
    style.FixedLineWidth = '2';
    style.ScaledLineWidth = 'auto';
    style.LineMode = 'fixed';
    style.LineWidthMin = '0.5';
    style.FontName = 'auto';
    style.FontWeight = 'auto';
    style.FontAngle = 'auto';
    style.FontEncoding = 'latin1';
    style.PSLevel = '2';
    style.Renderer = 'auto';
    style.Resolution = 'auto';
    style.LineStyleMap = 'none';
    style.ApplyStyle = '0';
    style.Bounds = 'loose';
    style.LockAxes = 'on';
    style.ShowUI = 'on';
    style.SeparateText = 'off';

    hgexport(fig,'temp_dummy',style,'applystyle', true);

else    % Apply an existing style, defined as in the Export dialog
    % The files are in folder   fullfile(prefdir(0),'ExportSetup');
    style = hgexport('readstyle',style_name);
    hgexport(fig,'temp_dummy',style,'applystyle', true);
end