annotate scripts/plot/whitebg.m @ 11523:fd0a3ac60b0e

update copyright notices
author John W. Eaton <jwe@octave.org>
date Fri, 14 Jan 2011 05:47:45 -0500
parents c9b0a75b02e8
children c792872f8942
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})
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
22 ## @deftypefnx {Function File} {} whitebg (@var{fig})
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
23 ## @deftypefnx {Function File} {} whitebg (@var{fig}, @var{color})
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10725
diff changeset
24 ## 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
25 ## 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
26 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
27 ## If defined, @var{fig} is the handle to the figure to be inverted. In
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
28 ## this case only this figure has its color properties changed
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
29 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
30 ## The background colors of the figure and its children can be set
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
31 ## specifically if @var{color} is defined. @var{color} must be a valid
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10725
diff changeset
32 ## color set as a string or an RGB triplet, or the value "none".
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
33 ##
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
34 ## @seealso{reset, colordef}
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
35 ## @end deftypefn
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
36
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
37 function whitebg (varargin)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
38 h = 0;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
39 color = NaN;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
40
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
41 if (nargin > 0 && nargin < 2)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
42 if (ishandle (varargin{1}))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
43 h = varargin{1};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
44 if (nargin == 2)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
45 color = varargin{2};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
46 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
47 elseif (nargin == 1)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
48 color = varargin{1};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
49 else
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
50 print_usage ();
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
51 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
52 elseif (nargin != 0)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
53 print_usage ();
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
54 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
55
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
56 typ = get (h, "type");
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 if (strcmp (typ, "root"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
59 isroot = true;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
60 fig = gcf ();
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
61 elseif (strcmp (typ, "figure"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
62 isroot = false;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
63 fig = h;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
64 else
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
65 error ("expecting a figure handle");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
66 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
67
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
68 axes = findall (fig, "type", "axes");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
69 if (isnan (color))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
70 ## Root figure. Set the default axes and figure properties so that
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
71 ## subsequent plots have the new color scheme
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
72 if (isroot)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
73 fac = get (0, "factory");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
74 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
75 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
76
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
77 ## Check whether the factory value has been replaced
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
78 for nf = 1 : numel (fieldindex);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
79 defaultfield = strrep (fields {fieldindex (nf)}, "factory", "default");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
80 try
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
81 defaultvalue = 1 - get (0, defaultfield {n});
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
82 catch
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
83 field = fields {fieldindex (nf)};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
84 defaultvalue = 1 - subsref (fac, struct ("type", ".", "subs", field));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
85 end_try_catch
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
86 set (0, defaultfield, defaultvalue);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
87 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
88 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
89
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
90 ## Load all objects which qualify for being searched.
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
91 handles = fig;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
92 h = fig;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
93 while (numel (handles))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
94 children = [];
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
95 for n = 1 : numel (handles)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
96 children = union (children, get(handles(n), "children"));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
97 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
98 handles = children;
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
99 h = union (h, children);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
100 endwhile
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
101
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
102 for nh = 1 : numel(h)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
103 p = get (h (nh));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
104 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
105 fieldindex = find (!cellfun (@isempty, regexp(fields, '.*color.*')));
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
106 if (numel (fieldindex))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
107 for nf = 1 : numel (fieldindex);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
108 field = fields {fieldindex (nf)};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
109 c = subsref (p, struct ("type", ".", "subs", field));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
110 if (! ischar(c) && columns(c) == 3)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
111 set (h (nh), field, 1 - c);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
112 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
113 endfor
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
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
116 ## 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
117 typ = subsref (p, struct ("type", ".", "subs", "type"));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
118 if (strcmp (typ, "axes") || strcmp (typ, "figure"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
119 def = get (h (nh), "default");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
120 fields = fieldnames (def);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
121 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
122 fieldindex = find (!cellfun (@isempty, regexp(fields, '.*color.*')));
10725
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
123 for nf = 1 : numel (fieldindex)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
124 defaultfield = fields {fieldindex (nf)};
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
125 defaultvalue = 1 - subsref (def, struct ("type", ".", "subs", defaultfield));
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
126 set (h (nh), defaultfield, defaultvalue);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
127 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
128 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
129 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
130 endfor
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
131 else
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
132 ## FIXME
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
133 ## Is this the right thing to do in this case?
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
134 set (findall (fig, "type", "axes"), "color", color);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
135 if (isroot)
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
136 defs = get (0, "defaults");
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
137 if (isfield (defs, "defaultaxescolor")
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
138 && strcmp (defs.defaultaxescolor, "none"))
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
139 set (0, "defaultaxescolor", color);
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
140 endif
3c59ce262c66 Add the whitebg function
David Bateman <dbateman@free.fr>
parents:
diff changeset
141 endif
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 endfunction