diff options
Diffstat (limited to 'modules/graphics/macros/clf.sci')
-rwxr-xr-x | modules/graphics/macros/clf.sci | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/modules/graphics/macros/clf.sci b/modules/graphics/macros/clf.sci new file mode 100755 index 000000000..ee46c74f3 --- /dev/null +++ b/modules/graphics/macros/clf.sci @@ -0,0 +1,137 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) INRIA +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +function clf(varargin) + + nbArg = size(varargin); + + if nbArg==0 then + h=gcf() + job="clear" + elseif nbArg==1 then + if type(varargin(1))==1 then // win num given + num=varargin(1) + + h=[];for k=1:size(num,"*"),h=[h;get_figure_handle(num(k))];end + + job="clear" + elseif type(varargin(1))==9 then // handle given + h=varargin(1);job="clear" + elseif type(varargin(1))==10 then // job given + h=gcf() + job=varargin(1) + end + elseif nbArg==2 then + if type(varargin(1))==1 then // win num given + num=varargin(1) + + h=[];for k=1:size(num,"*"),h=[h;get_figure_handle(num(k))];end + + elseif type(varargin(1))==9 then // handle given + h=varargin(1); + end + job=varargin(2); + else + error(msprintf(gettext("%s: Wrong number of input argument(s): %d to %d expected."), "clf", 0, 2)); + end + + if and(job<>["clear","reset"]) then + error(msprintf(gettext("%s: Wrong value for input argument #%d: ''clear'' or ''reset'' expected."), "clf", nbArg)); + end + + nbHandles = size(h,"*"); + + if nbHandles == 0 then + return; + end + + // check that all the handles are figures + for k=1:nbHandles + curFig = h(k); + if curFig.type <> "Figure" & (curFig.type <> "uicontrol" | curFig.style <> "frame") then + error(msprintf(gettext("%s: Wrong type for input argument #%d: A vector of ''Figure'' or ''Frame'' handle expected."), "clf", 1)); + end + end + + // delete childrens + for k=1:nbHandles + curFig = h(k) + if curFig.type == "uicontrol" then + haveAxes = %F; + for kChild = 1:size(curFig.children, "*") + if curFig.children(kChild).type=="Axes" then + haveAxes = %T; + break + end + end + delete(curFig.children); + if haveAxes then + newaxes(curFig); + end + else + // drawlater + immediateMode = curFig.immediate_drawing; + curFig.immediate_drawing = "off"; + + delete(curFig.children); + + // drawnow + curFig.immediate_drawing = immediateMode; + + curFig.info_message = ""; + end + end + + + // reset figures to default values if needed + if (job == "reset") then + defaultFig = gdf(); + for k = 1: nbHandles + curFig = h(k); + if curFig.type == "uicontrol" then + continue; + end + + // drawlater + immediateMode = curFig.immediate_drawing; + curFig.immediate_drawing = "off"; + + // properties to set + defaultProps=["figure_position", + "axes_size", + "auto_resize", + "viewport", + "figure_name", + "color_map", + "info_message", + "pixel_drawing_mode", + "immediate_drawing", + "background", + "visible", + "rotation_style", + "event_handler", + "event_handler_enable", + "user_data", + "tag"]; + + for i = 1:size(defaultProps,"*") + defaultValue = get(defaultFig, defaultProps(i)); + if (defaultProps(i) <> "figure_position" | defaultValue <> [-1,-1]) then + // don't reset figure pos is defaultValue is [-1,-1] + set(curFig, defaultProps(i), defaultValue); + end + + end + + // drawnow + curFig.immediate_drawing = immediateMode; + end + end + +endfunction + |