summaryrefslogtreecommitdiff
path: root/modules/graphics/macros/clf.sci
diff options
context:
space:
mode:
Diffstat (limited to 'modules/graphics/macros/clf.sci')
-rwxr-xr-xmodules/graphics/macros/clf.sci137
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
+