annotate scripts/plot/whitebg.m @ 12269:3eaad8355678 release-3-4-x

Add functions reset, whitebg to documentation.
author Rik <octave@nomad.inbox5.com>
date Thu, 27 Jan 2011 20:13:45 -0800
parents c792872f8942
children 0ee8d7d60c82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 11032
diff changeset
1 ## Copyright (C) 2010-2011 David Bateman
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
2 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
3 ## This file is part of Octave.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
4 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
8 ## your option) any later version.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
9 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
13 ## General Public License for more details.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
14 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
18
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
19 ## -*- texinfo -*-
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10725
diff changeset
20 ## @deftypefn {Function File} {} whitebg ()
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
21 ## @deftypefnx {Function File} {} whitebg (@var{color})
12269
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
22 ## @deftypefnx {Function File} {} whitebg ("none")
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
23 ## @deftypefnx {Function File} {} whitebg (@var{fig})
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
24 ## @deftypefnx {Function File} {} whitebg (@var{fig}, @var{color})
12269
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
25 ## @deftypefnx {Function File} {} whitebg (@var{fig}, "none")
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10725
diff changeset
26 ## Invert the colors in the current color scheme. The root properties are
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
27 ## also inverted such that all subsequent plot use the new color scheme.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
28 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
29 ## If defined, @var{fig} is the handle to the figure to be inverted. In
12269
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
30 ## this case only the specified figure has its color properties changed.
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
31 ##
12269
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
32 ## If the optional argument @var{color} is present then the background color
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
33 ## is set to @var{color} rather than inverted. @var{color} may be a string
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
34 ## representing one of the eight known colors or an RGB triplet. The special
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
35 ## string argument "none" restores the plot to the default colors.
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
36 ## @seealso{reset}
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
37 ## @end deftypefn
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
38
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
39 function whitebg (varargin)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
40 h = 0;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
41 color = NaN;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
42
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
43 if (nargin > 0 && nargin < 2)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
44 if (ishandle (varargin{1}))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
45 h = varargin{1};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
46 if (nargin == 2)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
47 color = varargin{2};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
48 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
49 elseif (nargin == 1)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
50 color = varargin{1};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
51 else
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
52 print_usage ();
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
53 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
54 elseif (nargin != 0)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
55 print_usage ();
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
56 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
57
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
58 typ = get (h, "type");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
59
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
60 if (strcmp (typ, "root"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
61 isroot = true;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
62 fig = gcf ();
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
63 elseif (strcmp (typ, "figure"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
64 isroot = false;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
65 fig = h;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
66 else
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
67 error ("expecting a figure handle");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
68 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
69
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
70 axes = findall (fig, "type", "axes");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
71 if (isnan (color))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
72 ## Root figure. Set the default axes and figure properties so that
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
73 ## subsequent plots have the new color scheme
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
74 if (isroot)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
75 fac = get (0, "factory");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
76 fields = fieldnames (fac);
11032
c9b0a75b02e8 Make all regexp in Octave compatible with both POSIX and PCRE.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
77 fieldindex = intersect (find (!cellfun (@isempty, regexp(fields, '.*color.*'))), union (find (!cellfun (@isempty, regexp(fields, 'factoryaxes.*'))), find (!cellfun (@isempty, regexp(fields, 'factoryfigure.*')))));
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
78
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
79 ## Check whether the factory value has been replaced
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
80 for nf = 1 : numel (fieldindex);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
81 defaultfield = strrep (fields {fieldindex (nf)}, "factory", "default");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
82 try
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
83 defaultvalue = 1 - get (0, defaultfield {n});
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
84 catch
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
85 field = fields {fieldindex (nf)};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
86 defaultvalue = 1 - subsref (fac, struct ("type", ".", "subs", field));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
87 end_try_catch
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
88 set (0, defaultfield, defaultvalue);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
89 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
90 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
91
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
92 ## Load all objects which qualify for being searched.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
93 handles = fig;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
94 h = fig;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
95 while (numel (handles))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
96 children = [];
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
97 for n = 1 : numel (handles)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
98 children = union (children, get(handles(n), "children"));
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
99 endfor
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
100 handles = children;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
101 h = union (h, children);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
102 endwhile
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
103
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
104 for nh = 1 : numel(h)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
105 p = get (h (nh));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
106 fields = fieldnames (p);
11032
c9b0a75b02e8 Make all regexp in Octave compatible with both POSIX and PCRE.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
107 fieldindex = find (!cellfun (@isempty, regexp(fields, '.*color.*')));
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
108 if (numel (fieldindex))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
109 for nf = 1 : numel (fieldindex);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
110 field = fields {fieldindex (nf)};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
111 c = subsref (p, struct ("type", ".", "subs", field));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
112 if (! ischar(c) && columns(c) == 3)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
113 set (h (nh), field, 1 - c);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
114 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
115 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
116 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
117
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
118 ## If h(nh) is a figure or axes invert default color properties
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
119 typ = subsref (p, struct ("type", ".", "subs", "type"));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
120 if (strcmp (typ, "axes") || strcmp (typ, "figure"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
121 def = get (h (nh), "default");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
122 fields = fieldnames (def);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
123 if (! isempty (fields))
11032
c9b0a75b02e8 Make all regexp in Octave compatible with both POSIX and PCRE.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
124 fieldindex = find (!cellfun (@isempty, regexp(fields, '.*color.*')));
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
125 for nf = 1 : numel (fieldindex)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
126 defaultfield = fields {fieldindex (nf)};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
127 defaultvalue = 1 - subsref (def, struct ("type", ".", "subs", defaultfield));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
128 set (h (nh), defaultfield, defaultvalue);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
129 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
130 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
131 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
132 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
133 else
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
134 ## FIXME
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
135 ## Is this the right thing to do in this case?
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
136 set (findall (fig, "type", "axes"), "color", color);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
137 if (isroot)
12269
3eaad8355678 Add functions reset, whitebg to documentation.
Rik <octave@nomad.inbox5.com>
parents: 11587
diff changeset
138 defs = get (0, "default");
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
139 if (isfield (defs, "defaultaxescolor")
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
140 && strcmp (defs.defaultaxescolor, "none"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
141 set (0, "defaultaxescolor", color);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
142 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
143 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
144 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
145 endfunction