Mercurial > hg > octave-nkf
diff scripts/testfun/private/compare_plot_demos.m @ 19085:b8934a57e13e
Improve plot comparison scripts.
* compare_plot_demos.m: Rewrite docstring. Use all three plot directories in
comparison ("appearance", "draw", "util"). Rename input variable structure
"in" to "arg". Terminate lines of
code with semicolon.
* dump_demos.m: Rewrite docstring. Use fileparts to simplify checking of
output script file name. Accept a single directory or a cell string array
of directories for processing. Revamp test for non-existent directory.
Remove unused code providing replacement Octave functions for Matlab.
Remove linkaxes, linkprops, and colormap from list of demos to process
since they have interactive elements. Use sprintf format string to avoid
if/else structure. Simplify generated code for each plot comparison.
Use 'close all' at the end of each demo to work around issues with accumulating
cruft. Follow Octave coding conventions for cuddling parentheses.
* dump_demos.m (oct2mat): Use regexprep() to convert double quotes in Octave
demos to single quotes for Matlab. Comment out unwind_protect blocks since
Matlab has no knowledge of these. Fix up calls to sombrero without an argument
since Matlab doesn't have a default for this.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 04 Jul 2014 14:32:49 -0700 |
parents | 1b02bfff39d0 |
children | f9cf5ae6b8a2 |
line wrap: on
line diff
--- a/scripts/testfun/private/compare_plot_demos.m +++ b/scripts/testfun/private/compare_plot_demos.m @@ -18,25 +18,26 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {} compare_plot_demos () +## @deftypefnx {Function File} {} compare_plot_demos ("toolkits", @{@var{toolkit1}, @var{toolkit2}, @dots{}@}) ## -## Uses @code{dump_demos} and @code{html_compare} to produce an html -## comparison of the plot demos for each of Octave's graphics -## toolkits. +## Uses @code{dump_demos} and @code{html_compare_plot_demos} to produce an +## html comparison of the plot demos for each of Octave's graphics toolkits. ## -## A m-file names `dump_plots.m' will be created in the pwd. This function -## will be used to render and save the plot demo images. +## An m-file named @file{dump_plots.m} will be created in the current working +## directory. This function will be used to render and save the plot demo +## images. ## -## If they do not already exist, directories for each graphics toolkit -## are created. Each toolkit's directory will be populated with images +## If they do not already exist, directories for each available graphics +## toolkit are created. Each toolkit's directory will be populated with images ## of each plot demo in the png format. ## -## Finally, an htlm document named `compare_plot_demos.html' is produced. -## This page places each toolkits images side by side for a conventient +## Finally, an html document named @file{compare_plot_demos.html} is produced. +## This page places each toolkit's images side by side for a convenient ## comparison of the results. ## -## @deftypefnx {Function File} {} compare_plot_demos (@var{toolkits}) -## @var{toolkits} is used to specify a subset of the available graphics -## toolkits. This list may also include `matlab'. +## If the property @qcode{"toolkits"} is given then compare only the listed +## toolkits in the cell string. The list may also include the toolkit +## @qcode{"matlab"}. ## ## @end deftypefn @@ -44,75 +45,75 @@ function compare_plot_demos (varargin) - in.toolkits = available_graphics_toolkits (); - in.directory = "plot"; - in.fmt = "png"; - in.fcn_file = ""; - in.replace_images = false; + arg.toolkits = available_graphics_toolkits (); + arg.directories = {"plot/appearance", "plot/draw", "plot/util"}; + arg.fmt = "png"; + arg.fcn_file = ""; + arg.replace_images = false; for n = 1:2:numel(varargin) if (! ischar (varargin{n})) print_usage (); else - in.(varargin{n}) = varargin{n+1}; + arg.(varargin{n}) = varargin{n+1}; endif endfor - if (ischar (in.toolkits)) - in.toolkits = {in.toolkits}; - elseif (! iscellstr (in.toolkits)) - error ("compare_plot_demos: Invalid value for ""toolkits""") + if (ischar (arg.toolkits)) + arg.toolkits = {arg.toolkits}; + elseif (! iscellstr (arg.toolkits)) + error ('compare_plot_demos: Invalid value for "toolkits"') endif - if (! ischar (in.directory)) - error ("compare_plot_demos: Invalid value for ""directory""") + if (ischar (arg.directories)) + arg.directories = {arg.directories}; + elseif (! iscellstr (arg.directories)) + error ('compare_plot_demos: Invalid value for "directory"') endif - if (! ischar (in.fmt)) - error ("compare_plot_demos: Invalid value for ""fmt""") + if (! ischar (arg.fmt)) + error ('compare_plot_demos: Invalid value for "fmt"') endif - if (isempty (in.fcn_file)) - in.fcn_file = sprintf ("dump_%s_demos.m", in.directory); + if (isempty (arg.fcn_file)) + arg.fcn_file = "dump_plot_demos.m"; endif - ## Generate "dump_plots.m" for rendering/saving the plot demo images - dump_demos ("plot", in.fcn_file, in.fmt) + ## Generate "dump_plot_demos.m" for rendering/saving the plot demo images + dump_demos (arg.directories, arg.fcn_file, arg.fmt); - [~, fcn_name] = fileparts (in.fcn_file); + [~, fcn_name] = fileparts (arg.fcn_file); ## Generate the plot demo images for each toolkit cwd = pwd (); unwind_protect addpath (pwd); - for n = 1:numel(in.toolkits) - dirs = dir (); - dirs = dirs([dirs.isdir]); - if (! any (strcmp ({dirs.name}, in.toolkits{n}))) - mkdir (in.toolkits{n}) + for n = 1:numel (arg.toolkits) + if (! isdir (fullfile (cwd, arg.toolkits{n}))) + mkdir (arg.toolkits{n}); endif - cd (in.toolkits{n}) - if (! isempty (dir (strcat ("*.", in.fmt))) && in.replace_images) - delete (strcat ("*.", in.fmt)) + cd (arg.toolkits{n}); + if (arg.replace_images && ! isempty (dir (["*." arg.fmt]))) + delete (["*." arg.fmt]); endif - if (! strcmp (in.toolkits{n}, "matlab")) - close all - graphics_toolkit (in.toolkits{n}); + if (! strcmp (arg.toolkits{n}, "matlab")) + close all; + graphics_toolkit (arg.toolkits{n}); try eval (fcn_name); catch - fprintf ("Error running plot demos for ""%s"" toolkit\n", in.toolkits{n}) - disp (lasterror) + printf ("Error running plot demos for ""%s"" toolkit\n", arg.toolkits{n}); + disp (lasterror); end_try_catch endif - cd (cwd) + cd (cwd); endfor unwind_protect_cleanup rmpath (cwd); end_unwind_protect ## Generate the html comparison of the images - ## TODO - pass the toolkits{} to allow num of columns to be formated + ## TODO: pass the toolkits{} to allow number of columns to be formatted html_compare_plot_demos ("output", "compare_plot_demos.html") endfunction