# HG changeset patch # User Rik # Date 1374776643 25200 # Node ID 86067af51d5eaf6da1e304bf6e68a701f6342947 # Parent 58d3fba6df170e0602324a11dec7de0e92564b08 Truly reset axes so that all properties are set to default. * libinterp/corefcn/graphics.cc: Add missing defaults for some properties when axis is reset. * scripts/plot/cla.m: Redo docstring. Simplify code. Call __go_axes_init__ to do resetting of axes. Add %!test block. diff -r 58d3fba6df17 -r 86067af51d5e libinterp/corefcn/graphics.cc --- a/libinterp/corefcn/graphics.cc Thu Jul 25 10:42:07 2013 -0700 +++ b/libinterp/corefcn/graphics.cc Thu Jul 25 11:24:03 2013 -0700 @@ -4155,7 +4155,7 @@ { box = "on"; colororder = default_colororder (); - dataaspectratio = Matrix (1, 3, 1.0); + // Note: dataspectratio will be set through update_aspectratios dataaspectratiomode = "auto"; layer = "bottom"; @@ -4169,10 +4169,13 @@ cl(1) = 1; clim = cl; + alim = tlim; + xlimmode = "auto"; ylimmode = "auto"; zlimmode = "auto"; climmode = "auto"; + alimmode = "auto"; xgrid = "off"; ygrid = "off"; @@ -4186,12 +4189,18 @@ xtickmode = "auto"; ytickmode = "auto"; ztickmode = "auto"; + xminortick = "off"; + yminortick = "off"; + zminortick = "off"; xticklabel = ""; yticklabel = ""; zticklabel = ""; xticklabelmode = "auto"; yticklabelmode = "auto"; zticklabelmode = "auto"; + + interpreter = "none"; + color = color_values ("white"); xcolor = color_values ("black"); ycolor = color_values ("black"); @@ -4205,44 +4214,53 @@ yaxislocation = "left"; xaxislocation = "bottom"; - // Note: camera properties will be set through update_transform + Matrix tview (1, 2, 0.0); + tview(1) = 90; + view = tview; + + __hold_all__ = "off"; + nextplot = "replace"; + + ambientlightcolor = Matrix (1, 3, 1.0); + + // Note: camera properties (not mode) will be set in update_transform camerapositionmode = "auto"; cameratargetmode = "auto"; cameraupvectormode = "auto"; cameraviewanglemode = "auto"; - plotboxaspectratio = Matrix (1, 3, 1.0); + drawmode = "normal"; + + fontangle = "normal"; + fontname = OCTAVE_DEFAULT_FONTNAME; + fontsize = 10; + fontunits = "points"; + fontweight = "normal"; + gridlinestyle = ":"; linestyleorder = "-"; linewidth = 0.5; minorgridlinestyle = ":"; - // Note: plotboxaspectratio will be set through update_aspectratiors + + // Note: plotboxaspectratio will be set through update_aspectratios plotboxaspectratiomode = "auto"; projection = "orthographic"; + tickdir = "in"; tickdirmode = "auto"; ticklength = default_axes_ticklength (); + tightinset = Matrix (1, 4, 0.0); sx = "linear"; sy = "linear"; sz = "linear"; - Matrix tview (1, 2, 0.0); - tview(1) = 90; - view = tview; - visible = "on"; - nextplot = "replace"; - + + // Replace preserves Position and Units properties if (mode != "replace") { - fontangle = "normal"; - fontname = OCTAVE_DEFAULT_FONTNAME; - fontsize = 10; - fontunits = "points"; - fontweight = "normal"; - outerposition = default_axes_outerposition (); position = default_axes_position (); activepositionproperty = "outerposition"; diff -r 58d3fba6df17 -r 86067af51d5e scripts/plot/cla.m --- a/scripts/plot/cla.m Thu Jul 25 10:42:07 2013 -0700 +++ b/scripts/plot/cla.m Thu Jul 25 11:24:03 2013 -0700 @@ -17,14 +17,20 @@ ## . ## -*- texinfo -*- -## @deftypefn {Function File} {} cla () -## @deftypefnx {Function File} {} cla ("reset") +## @deftypefn {Function File} {} cla +## @deftypefnx {Function File} {} cla reset ## @deftypefnx {Function File} {} cla (@var{hax}) ## @deftypefnx {Function File} {} cla (@var{hax}, "reset") -## Delete the children of the current axes with visible handles. -## If @var{hax} is specified and is an axes object handle, operate on it -## instead of the current axes. If the optional argument @code{"reset"} -## is specified, also delete the children with hidden handles. +## Clear the current axes by deleting child graphic objects with visible +## handles (HandleVisibility = "on"). +## +## If the optional argument "reset" is specified, delete all child objects +## including those with hidden handles and reset all axis properties to +## their defaults. However, the following properties are not reset: +## Position, Units. +## +## If an axes object handle @var{hax} is specified, operate on it instead of +## the current axes. ## @seealso{clf} ## @end deftypefn @@ -35,58 +41,38 @@ if (nargin > 2) print_usage (); - elseif (nargin > 1) - if (ishandle (varargin{1}) - && strcmp (get (varargin{1}, "type"), "axes") - && ischar (varargin{2}) && strcmpi (varargin{2}, "reset")) - oldhax = gca; - hax = varargin{1}; - do_reset = true; - else - print_usage (); - endif + elseif (nargin == 0) + hax = gca; + do_reset = false; elseif (nargin == 1) - if (ishandle (varargin{1}) + if (isscalar (varargin{1}) && ishandle (varargin{1}) && strcmp (get (varargin{1}, "type"), "axes")) - oldhax = gca; hax = varargin{1}; do_reset = false; elseif (ischar (varargin{1}) && strcmpi (varargin{1}, "reset")) hax = gca; - oldhax = hax; do_reset = true; else print_usage (); endif else - hax = gca; - oldhax = hax; - do_reset = false; - endif - - hc = get (hax, "children"); - - if (! do_reset && ! isempty (hc)) - hc = findobj (hc, "flat", "visible", "on"); - hc = setdiff (hc, hax); + if (isscalar (varargin{1}) && ishandle (varargin{1}) + && strcmp (get (varargin{1}, "type"), "axes") + && ischar (varargin{2}) && strcmpi (varargin{2}, "reset")) + hax = varargin{1}; + do_reset = true; + else + print_usage (); + endif endif - if (! isempty (hc)) - ## Delete the children of the axis. - delete (hc); + if (! do_reset) + delete (get (hax, "children")); + else + __go_axes_init__ (hax, "replace"); + __request_drawnow__ (); endif - ## FIXME: The defaults should be "reset()" below, but so far there is - ## no method to determine the defaults, much less return an object's - ## properties to their default values. Instead make a close - ## approximation. - - axes (hax); - axis ("auto"); - - ## Set the current axis back to where it was upon entry. - axes (oldhax); - endfunction @@ -102,3 +88,22 @@ %! end_unwind_protect %! assert (numel (kids), 0); +%!test +%! hf = figure ("visible", "off"); +%! unwind_protect +%! hax = gca; +%! plot (hax, 1:10); +%! set (hax, "interpreter", "tex"); +%! cla (hax); +%! kids = get (hax, "children"); +%! assert (numel (kids), 0); +%! assert (get (hax, "interpreter"), "tex"); +%! plot (hax, 1:10); +%! cla (hax, "reset"); +%! kids = get (hax, "children"); +%! assert (numel (kids), 0); +%! assert (get (hax, "interpreter"), "none"); +%! unwind_protect_cleanup +%! close (hf); +%! end_unwind_protect +